1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <title>Murray Hill Cardiologist | Heart Specialist New York City | Cardiology Office Murray Hill NY</title> 5 <meta charset="utf-8"> 6<meta name="viewport" content="width=device-width, initial-scale=1"> 7<meta name="robots" content="index, follow"> 8<meta property="og:title" content="Murray Hill Cardiologist | Heart Specialists New York City | Cardiology Office Murray Hill NY"> 9<meta property="og:url" content="https://fakedomain.com/"> 10<meta property="og:type" content="website"> 11<meta property="og:description" content="Experience compassionate and personalized cardiovascular care at Heartwise Cardiology. We offer advanced diagnostics & treatment for all your heart health needs."> 12<meta property="og:image" content="https://fakedomain.com/custom/images/logo.png"> 13<meta http-equiv="expires" content="never"> 14<meta http-equiv="cache-control" content="public"> 15<link rel="preload" as="script" href="https://api.aleso.ai/aleso.js"> 16<link rel="preload" as="script" href="/system/js/jquery-3.5.1.min.js">
17<script> 18 var javascript; 19 var javascript_deferred; 20 21 var js_id = 0; 22 var jsd_id = 0; 23 24 var viewport_size = 0; 25 26 javascript.load = []; 27 javascript_deferred.load = []; 28 29 30 function javascript() { }; 31 function javascript_deferred() { }; 32 33 function get_id() { 34 var uid = 'js_' + js_id; 35 javascript.load.push(uid); 36 js_id++; 37 return uid; 38 } 39 40 function get_deferred_id() { 41 var uid = 'jsd_' + jsd_id; 42 javascript_deferred.load.push(uid); 43 jsd_id++; 44 return uid; 45 } 46 47 // *** ADDED â Consent Mode v2 bootstrap *** 48 // Must run BEFORE the privacy IIFE installs its stubs. 49 // Uses the real gtag() function call (not raw array push) so that gtag.js 50 // registers consent state via its consent API â this is what makes hits 51 // report pscdl=granted/denied instead of pscdl=noapi. 52 53 var DI_CONSENT_MODE_V2 = (typeof window.DiConsentMode === 'boolean') ? window.DiConsentMode : true; 54 55 window.dataLayer = window.dataLayer || []; 56 window.gtag = function () { window.dataLayer.push(arguments); }; 57 58 window.google_tracking = window.google_tracking || {}; 59 window.google_tracking.gtag = window.gtag; 60 61 // Default: deny everything. Must be called before any Google tag loads. 62 window.gtag('consent', 'default', { 63 analytics_storage: 'denied', 64 ad_storage: 'denied', 65 ad_user_data: 'denied', 66 ad_personalization: 'denied', 67 wait_for_update: 500 68 }); 69 70 // Returning visitor with stored consent: update immediately so GTM/GA 71 // initialize already knowing consent is granted. 72 (function () { 73 try { 74 var name = 'di_privacy_consent'; 75 var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); 76 if (match && decodeURIComponent(match[1]) === 'granted') { 77 window.gtag('consent', 'update', { 78 analytics_storage: 'granted', 79 ad_storage: 'granted', 80 ad_user_data: 'granted', 81 ad_personalization: 'granted' 82 }); 83 } 84 } catch (e) { } 85 })(); 86 // *** END ADDED â Consent Mode v2 bootstrap *** 87 88 89 (function (window, document) { 90 'use strict'; 91 92 /* 93 Privacy / Consent Tracking Controller 94 95 Purpose: 96 - Pending consent: hold known/curated tracking scripts and API calls. 97 - Accepted consent: release held tracking scripts/calls immediately. 98 - Rejected consent: discard held tracking scripts/calls. 99 - GPC / Do Not Track: always treat as denied. 100 - Unknown third-party scripts are not held client-side; they are controlled by the server-side CSP policy. 101 102 Important: 103 - This script intentionally distinguishes between: 104 1) Non-essential trackers / analytics / pixels / session replay tools. 105 2) Functional third-party services that are required for the site experience. 106 3) Unknown third-party resources, which should be blocked by server-side CSP while consent is pending/denied. 107 */ 108 109 var CONSENT_KEY = 'di_privacy_consent'; 110 var COOKIE_MAX_AGE = 60 * 60 * 24 * 180; 111 112 var heldScripts = []; 113 var heldCalls = []; 114 var heldSockets = []; 115 116 function _logBlocked() { 117 console.log.apply(console, arguments); 118 } 119 120 function detectGPC() { 121 try { 122 // Global Privacy Control, where supported. 123 if (navigator && typeof navigator.globalPrivacyControl !== 'undefined') { 124 if (navigator.globalPrivacyControl) return true; 125 } 126 127 if (window.matchMedia && window.matchMedia('(global-privacy-control: 1)').matches) { 128 return true; 129 } 130 131 // Legacy browser "Do Not Track" support. 132 var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; 133 if (dnt === '1' || dnt === 'yes') { 134 return true; 135 } 136 } catch (e) { } 137 138 return false; 139 } 140 141 function getStoredConsent() { 142 try { 143 var name = CONSENT_KEY.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); 144 var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); 145 146 if (!match) { 147 return null; 148 } 149 150 var v = decodeURIComponent(match[1]); 151 152 if (v === 'granted' || v === 'denied') { 153 return v; 154 } 155 } catch (e) { } 156 157 return null; 158 } 159 160 function setStoredConsent(v) { 161 if (v !== 'granted' && v !== 'denied') { 162 return; 163 } 164 165 /* 166 The consent cookie is the single source of truth. 167 168 It controls: 169 - Server-side CSP mode 170 - JavaScript consent state 171 - Whether the banner appears 172 173 When this cookie expires, consent returns to "pending" and the banner 174 will be shown again. 175 */ 176 try { 177 document.cookie = 178 CONSENT_KEY + '=' + encodeURIComponent(v) + 179 '; Path=/' + 180 '; Max-Age=' + COOKIE_MAX_AGE + 181 '; SameSite=Lax' + 182 (window.location.protocol === 'https:' ? '; Secure' : ''); 183 } catch (e) { } 184 } 185 186 function clearStoredConsent() { 187 try { 188 document.cookie = 189 CONSENT_KEY + '=; Path=/; Max-Age=0; SameSite=Lax' + 190 (window.location.protocol === 'https:' ? '; Secure' : ''); 191 } catch (e) { } 192 } 193 194 function clearLegacyStoredConsent() { 195 try { 196 localStorage.removeItem(CONSENT_KEY); 197 } catch (e) { } 198 } 199 200 clearLegacyStoredConsent(); 201 202 var gpcEnabled = detectGPC(); 203 var storedConsent = getStoredConsent(); 204 var consent = storedConsent || null; 205 206 function getConsentState() { 207 if (gpcEnabled) return 'denied'; 208 return consent || 'pending'; 209 } 210 211 function trackingAllowed() { 212 return !gpcEnabled && consent === 'granted'; 213 } 214 215 function shouldHold() { 216 return !gpcEnabled && getConsentState() === 'pending'; 217 } 218 219 function shouldDrop() { 220 return gpcEnabled || getConsentState() === 'denied'; 221 } 222 223 /* 224 Early static script guard. 225 226 This catches hard-coded parser-discovered
226<script src="..."> tags that appear 227 later in the HTML, before the browser has a chance to execute them. 228 229 This is especially important for trackers added as normal static HTML tags, 230 such as Cloudflare Web Analytics / Browser Insights. 231 232 Note: 233 - This is not meant to replace CSP. 234 - CSP is still the hard server-side fallback. 235 - This guard exists so known static tracker scripts can be held/released 236 on the same page after consent. 237 */ 238 var earlyStaticScriptPatterns = [ 239 /static\.cloudflareinsights\.com\/beacon\.min\.js/i, 240 /js\.zi-scripts\.com\/zi-tag\.js/i 241 ]; 242 243 function earlyMatchesStaticScript(src) { 244 if (!src) return false; 245 246 var s = String(src); 247 248 for (var i = 0; i < earlyStaticScriptPatterns.length; i++) { 249 if (earlyStaticScriptPatterns[i].test(s)) { 250 return true; 251 } 252 } 253 254 return false; 255 } 256 257 function earlyCloneScriptForRelease(original) { 258 var clone = document.createElement('script'); 259 260 for (var i = 0; i < original.attributes.length; i++) { 261 var attr = original.attributes[i]; 262 263 try { 264 clone.setAttribute(attr.name, attr.value); 265 } catch (e) { } 266 } 267 268 return clone; 269 } 270 271 function earlyHoldStaticScript(script) { 272 if (!script || !script.src) return false; 273 274 var src = script.src; 275 276 if (!earlyMatchesStaticScript(src)) { 277 return false; 278 } 279 280 for (var i = 0; i < heldScripts.length; i++) { 281 if (heldScripts[i].src === src) { 282 return true; 283 } 284 } 285 286 if (shouldHold()) { 287 heldScripts.push({ 288 src: src, 289 node: earlyCloneScriptForRelease(script), 290 parent: document.head || document.documentElement, 291 method: 'appendChild', 292 refNode: null 293 }); 294 295 try { 296 if (script.parentNode) { 297 script.parentNode.removeChild(script); 298 } 299 } catch (e) { } 300 301 _logBlocked('[Privacy] Early-held static tracker script until consent â', src); 302 return true; 303 } 304 305 if (shouldDrop()) { 306 try { 307 if (script.parentNode) { 308 script.parentNode.removeChild(script); 309 } 310 } catch (e) { } 311 312 _logBlocked('[Privacy] Early-removed static tracker script â', src); 313 return true; 314 } 315 316 return false; 317 } 318 319 function installEarlyStaticScriptGuard() { 320 function scanExistingScriptsEarly() { 321 var scripts = document.querySelectorAll('script[src]'); 322 323 for (var i = 0; i < scripts.length; i++) { 324 earlyHoldStaticScript(scripts[i]); 325 } 326 } 327 328 scanExistingScriptsEarly(); 329 330 if (window.MutationObserver && document.documentElement) { 331 try { 332 var earlyObserver = new MutationObserver(function (mutations) { 333 for (var i = 0; i < mutations.length; i++) { 334 var added = mutations[i].addedNodes; 335 336 for (var j = 0; j < added.length; j++) { 337 var node = added[j]; 338 339 if (node && node.tagName === 'SCRIPT') { 340 earlyHoldStaticScript(node); 341 } 342 343 if (node && node.querySelectorAll) { 344 var scripts = node.querySelectorAll('script[src]'); 345 346 for (var k = 0; k < scripts.length; k++) { 347 earlyHoldStaticScript(scripts[k]); 348 } 349 } 350 } 351 } 352 }); 353 354 earlyObserver.observe(document.documentElement, { 355 childList: true, 356 subtree: true 357 }); 358 } catch (e) { } 359 } 360 } 361 362 installEarlyStaticScriptGuard(); 363 364 /* 365 Beacon/network endpoints. 366 367 These are non-essential analytics, ads, attribution, session replay, 368 heatmap, call tracking, fingerprinting, and marketing automation endpoints. 369 370 While consent is pending or denied, requests matching these patterns are 371 blocked client-side. This prevents known trackers from sending data even if 372 a script tries to fire a fetch/XHR/sendBeacon/image beacon. 373 */ 374 var beaconPatterns = [ 375 376 // Google Ads / AdSense / remarketing / conversion endpoints 377 /:\/\/ssl\.google-analytics\.com\//i, 378 /:\/\/stats\.g\.doubleclick\.net\//i, 379 /:\/\/www\.google\.com\/pagead\/1p-user-list/i, 380 /:\/\/www\.google\.com\/pagead\/conversion/i, 381 /:\/\/googleads\.g\.doubleclick\.net\//i, 382 /:\/\/pagead2\.googlesyndication\.com\//i, 383 /:\/\/www\.googlesyndication\.com\/pagead\//i, 384 /:\/\/www\.googleadservices\.com\/pagead\//i, 385 /:\/\/www\.google\.com\/pagead\//i, 386 387 // Meta / Facebook 388 /:\/\/www\.facebook\.com\/tr\?/i, 389 /:\/\/graph\.facebook\.com\/v\d+\.\d+\/events/i, 390 391 // TikTok 392 /:\/\/business\.tiktok\.com\/bt\//i, 393 /:\/\/s\.tiktok\.com\//i, 394 395 // Pinterest 396 /:\/\/log\.pinterest\.com\//i, 397 /:\/\/analytics\.pinterest\.com\//i, 398 399 // LinkedIn 400 /:\/\/px\.ads\.linkedin\.com/i, 401 402 // Snapchat 403 /:\/\/tr\.snapchat\.com\//i, 404 405 // Twitter / X 406 /:\/\/analytics\.twitter\.com\//i, 407 /:\/\/t\.co\/i\/collect/i, 408 409 // Reddit Ads 410 /:\/\/events\.redditmedia\.com\//i, 411 /:\/\/www\.redditstatic\.com\/ads\/pixel\.js/i, 412 /:\/\/alb\.reddit\.com\//i, 413 414 // Heatmaps / session replay / behavior tracking 415 /:\/\/static\.hotjar\.com\/c\/hotjar-/i, 416 /:\/\/track\.hotjar\.com\//i, 417 /:\/\/script\.crazyegg\.com\/pages\//i, 418 /:\/\/rs\.fullstory\.com/i, 419 /:\/\/api\.mouseflow\.com\//i, 420 /:\/\/www\.clarity\.ms\/collect/i, 421 /:\/\/tools\.luckyorange\.com\//i, 422 423 // Marketing automation / CRM / attribution 424 /:\/\/track\.hubspot\.com\//i, 425 /:\/\/api\.hsforms\.com\/submissions/i, 426 /:\/\/piwik\.pardot\.com\//i, 427 /:\/\/go\.pardot\.com\//i, 428 /:\/\/cdn\.segment\.com\/v1\/p\//i, 429 /:\/\/api\.mixpanel\.com\//i, 430 /:\/\/api\.amplitude\.com/i, 431 /:\/\/plausible\.io\/api\/event/i, 432 /:\/\/matomo\.cloud\/matomo\.php/i, 433 /:\/\/.*\/matomo\.php/i, 434 /:\/\/analytics\.liine\.com\//i, 435 /:\/\/instantleadcapture\.com\//i, 436 /:\/\/px\.premion\.com\//i, 437 /:\/\/js\.adsrvr\.org\//i, 438 /:\/\/cdn\.raek\.net\//i, 439 /:\/\/s1\.revenuewell\.com\//i, 440 /:\/\/diffuser-cdn\.app-us1\.com\//i, 441 /:\/\/chimpstatic\.com\//i, 442 443 // Fingerprinting-style endpoints or libraries. 444 /fingerprint/i, 445 /\.fpjs\.io/i, 446 447 // AdRoll 448 /:\/\/s\.adroll\.com\//i, 449 /:\/\/d\.adroll\.com\//i, 450 /:\/\/pixel\.adroll\.com\//i, 451 452 // ZoomInfo 453 /:\/\/ws\.zoominfo\.com\/pixel\//i, 454 /:\/\/ws\.zoominfo\.com\//i, 455 456 // VigLink / affiliate tracking 457 /:\/\/vigl\.us\//i, 458 459 // Trovo tag 460 /:\/\/tag\.trovo-tag\.com\//i, 461
462 // Programmatic adtech / cookie-sync / audience matching 463 /:\/\/x\.bidswitch\.net\/sync/i, 464 /:\/\/pixel\.tapad\.com\/idsync/i, 465 /:\/\/ml314\.com\/utsync\.ashx/i, 466 /:\/\/ps\.eyeota\.net\/match/i, 467 /:\/\/cm\.g\.doubleclick\.net\/pixel/i, 468 /:\/\/dsum-sec\.casalemedia\.com\/rum/i, 469 /:\/\/image2\.pubmatic\.com\/AdServer\/Pug/i, 470 /:\/\/pixel\.rubiconproject\.com\/tap\.php/i, 471 /:\/\/us-u\.openx\.net\/w\/1\.0\/sd/i, 472 /:\/\/sync\.outbrain\.com\/cookie-sync/i, 473 /:\/\/sync\.taboola\.com\//i, 474 /:\/\/eb2\.3lift\.com\/xuid/i, 475 /:\/\/ib\.adnxs\.com\/setuid/i, 476 477 // Patient Prism / call intelligence 478 /:\/\/next-api\.patientprism\.com\/v1\/snippet\//i, 479 480 // First-party legacy referral / page interaction tracking 481 // /:\/\/referrals\.di-api\.com\//i, 482 483 // Identity / ad targeting / profiling 484 /:\/\/pro\.ip-api\.com\/json\//i, 485 /:\/\/alocdn\.com\/.*\/xtarget\/p\.json/i, 486 /:\/\/tag\.link-url\.io\//i, 487 /:\/\/idx\.liadm\.com\//i, 488 489 // Cloudflare Web Analytics / Browser Insights 490 /:\/\/static\.cloudflareinsights\.com\/beacon/i, 491 /:\/\/cloudflareinsights\.com\//i, 492 493 // Additional tracker / analytics / adtech beacon endpoints 494 /:\/\/dni\.logmycalls\.com\//i, 495 /:\/\/insight\.adsrvr\.org\//i, 496 /:\/\/bat\.bing\.com\//i, 497 /:\/\/settings\.luckyorange\.com\//i, 498 /:\/\/app\.operadds\.com\//i, 499 /:\/\/js\.zi-scripts\.com\//i, 500 /:\/\/analytics-[0-9]+\.kxcdn\.com\//i, 501 /:\/\/alice\.liine\.com\//i, 502 /:\/\/data\.hockeystack\.com\/send/i,
503 /:\/\/jelly\.mdhv\.io\//i, 504 /:\/\/tag\.simpli\.fi\//i, 505 /:\/\/i\.simpli\.fi\/p/i, 506 /:\/\/um\.simpli\.fi\//i, 507 /:\/\/www\.redditstatic\.com\/ads\/pixel\.js/i, 508 /:\/\/dni\.logmycalls\.com\//i, 509 /:\/\/a\.usbrowserspeed\.com\/cs/i, 510 /:\/\/.*\.usbrowserspeed\.com\/cs/i, 511 512 // Pendo product analytics 513 /:\/\/cdn\.pendo\.io\//i, 514 /:\/\/data\.pendo\.io\//i, 515 /:\/\/app\.pendo\.io\//i, 516 517 // Piwik PRO analytics / tag manager 518 /:\/\/.*\.piwik\.pro\//i, 519 520 // Leadpages analytics 521 /:\/\/api\.leadpages\.io\/analytics\//i, 522 523 // BrandCDN / conversion pixel 524 /:\/\/adservices\.brandcdn\.com\/pixel\//i, 525 526 // LiveRamp / identity sync 527 /:\/\/idsync\.rlcdn\.com\//i, 528 529 // Kissmetrics analytics 530 /:\/\/i\.kissmetrics\.io\//i, 531 /:\/\/scripts\.kissmetrics\.io\//i, 532 /:\/\/trk\.kissmetrics\.io\//i, 533 /:\/\/et\.kissmetrics\.io\//i, 534 535 // RLETS / call tracking / attribution storage iframe 536 /:\/\/[^\/]+\.rlets\.com\/static\/storage\.html/i, 537 538 // ReachLocal / LocaliQ capture, attribution, geolocation enrichment 539 /:\/\/capture-api\.reachlocalservices\.com\//i, 540 541 // EXTENDED LIST --- 542 // Scheduling / booking widgets 543 /:\/\/[^\/]*calendly\.com\//i, 544 /:\/\/assets\.calendly\.com\//i, 545 /:\/\/[^\/]*localmed\.com\//i, 546 /:\/\/frontend\.assets\.nexhealth\.com\//i, 547 /:\/\/schedule\.jarvisanalytics\.com\//i, 548 /:\/\/embed\.acuityscheduling\.com\//i, 549 /:\/\/cdn\.timetrade\.com\//i, 550 /:\/\/book\.getweave\.com\//i, 551 /:\/\/book2\.getweave\.com\//i, 552 /:\/\/book\.gke1-west3\.wsf-prod-1\.wstack\.net\//i, 553 /:\/\/nextgen\.clixondental\.com\//i, 554 /:\/\/olb\.saloniris\.com\//i, 555 /:\/\/plugin\.mysalononline\.com\//i, 556 557 // Zocdoc 558 /:\/\/api\.zocdoc\.com\//i, 559 /:\/\/api2\.zocdoc\.com\//i, 560 /:\/\/bob\.zocdoc\.com\//i, 561 /:\/\/static\.zocdoc\.com\//i, 562 /:\/\/www\.zocdoc\.com\//i, 563 /:\/\/book\.zocdoc\.com\//i, 564 /:\/\/offsiteschedule\.zocdoc\.com\//i, 565 /:\/\/[^\/]+\.zocdoc\.com\//i, 566 567 // Chat / chatbot / AI assistant widgets 568 /:\/\/connect\.podium\.com\//i, 569 /:\/\/platform\.swellcx\.com\//i, 570 /:\/\/cdn\.apigateway\.co\//i, 571 /:\/\/chat\.gocloudgain\.com\//i, 572 /:\/\/chat\.dentina\.ai\//i, 573 /:\/\/static\.ai\.getdeardoc\.com\//i, 574 /:\/\/chat\.getdeardoc\.com\//i, 575 /:\/\/api\.chat\.getdeardoc\.com\//i, 576 /:\/\/app\.dasconsultantsusa\.com\//i, 577 /:\/\/server\.dasconsultantsusa\.com\//i, 578 /:\/\/app\.purechat\.com\//i, 579 /:\/\/widgetapi\.purechat\.com\//i, 580 /:\/\/[^\/]*botsrv\.com\//i, 581 /:\/\/botsrv2\.com\//i, 582 /:\/\/static\.botsrv2\.com\//i, 583 /:\/\/app\.botsify\.com\//i, 584 /:\/\/widget\.botsify\.com\//i, 585 /:\/\/embed\.tawk\.to\//i, 586 /:\/\/static-v\.tawk\.to\//i, 587 /:\/\/va\.tawk\.to\//i, 588 /:\/\/[^\/]+\.tawk\.to\//i, 589 /:\/\/[^\/]*formilla\.com\//i, 590 /:\/\/widgets\.leadconnectorhq\.com\//i, 591 /:\/\/services\.leadconnectorhq\.com\//i, 592 /:\/\/services\.msgsndr\.com\//i, 593 /:\/\/app\.chatsupport\.co\//i, 594 /:\/\/[^\/]*truelark\.com\//i, 595 /:\/\/ops\.truelark\.com\//i, 596 /:\/\/[^\/]*247aireceptionist\.com\//i, 597 /:\/\/code\.jivosite\.com\//i, 598 /:\/\/[^\/]+\.jivosite\.com\//i, 599 /:\/\/api\.livechatinc\.com\//i, 600 /:\/\/cdn\.livechatinc\.com\//i, 601 /:\/\/[^\/]+\.livechatinc\.com\//i, 602 /:\/\/chat\.doctorsinternet\.com\/web-bot\//i, 603 604 // Forms / lead capture / embedded form systems 605 /:\/\/webform\.adit\.com\//i, 606 /:\/\/embed\.lpcontent\.net\//i, 607 /:\/\/api\.leadpages\.io\//i, 608 /:\/\/app-widgets\.jotform\.io\//i, 609 /:\/\/widgets\.jotform\.io\//i, 610 /:\/\/forms\.liine\.com\//i, 611 /:\/\/dim\.dentalimplantmachine\.co\//i, 612 /:\/\/[^\/]+\.kit\.com\//i, 613 /:\/\/[^\/]+\.ck\.page\//i, 614 /:\/\/[^\/]*convertkit\.com\//i, 615 /:\/\/app\.convertkit\.com\//i, 616 /:\/\/f\.convertkit\.com\//i, 617 /:\/\/api\.hsforms\.com\//i, 618 /:\/\/forms\.hsforms\.com\//i, 619 /:\/\/js\.hsforms\.net\//i, 620 621 // Reviews / reputation / social proof widgets 622 /:\/\/go\.doctorsinternet\.com\//i, 623 /:\/\/go\.pimm-usa\.com\//i, 624 /:\/\/widgets-v7\.birdeye\.com\//i, 625 /:\/\/webchat\.birdeye\.com\//i, 626 /:\/\/widget-v7-cdn\.birdeye\.com\//i, 627 /:\/\/[^\/]*birdeye\.com\//i, 628 /:\/\/widgets\.revue\.us\//i, 629 /:\/\/widgets\.thereviewsplace\.com\//i, 630 /:\/\/assets\.thereviewsplace\.com\//i, 631 /:\/\/api\.thereviewsplace\.com\//i, 632 /:\/\/providers\.doctor\.com\//i, 633 /:\/\/app\.operadds\.com\//i, 634 /:\/\/reviewsonmywebsite\.com\//i, 635 /:\/\/localimpact\.com\//i, 636 /:\/\/local\.demandforce\.com\//i, 637 /:\/\/www\.demandforced3\.com\//i, 638 /:\/\/[^\/]*elfsight\.com\//i, 639 /:\/\/[^\/]*elfsightcdn\.com\//i, 640 641 // Social widgets / embeds 642 /:\/\/www\.instagram\.com\//i, 643 /:\/\/www\.tiktok\.com\//i, 644 /:\/\/lf16-tiktok-web\.tiktokcdn-us\.com\//i, 645 /:\/\/www\.facebook\.com\/plugins\//i, 646 /:\/\/widgets\.pinterest\.com\//i, 647 /:\/\/www\.yelp\.com\//i, 648 649 // Financing / payment / membership widgets 650 /:\/\/files\.withcherry\.com\//i, 651 /:\/\/gql\.withcherry\.com\//i, 652 /:\/\/master-cherry-storage\.s3\.us-west-2\.amazonaws\.com\//i, 653 /:\/\/member\.kleer\.com\//i, 654 /:\/\/member\.clerri\.com\//i, 655 /:\/\/checkout\.staxpayments\.com\//i, 656 /:\/\/goblueswipe\.transactiongateway\.com\//i, 657 /:\/\/secure\.networkmerchants\.com\//i, 658 /:\/\/apply\.sunbit\.com\//i, 659 /:\/\/www\.paypal\.com\//i, 660 /:\/\/www\.paypalobjects\.com\//i, 661 /:\/\/www\.carecredit\.com\//i, 662 663 // Patient / health / practice widgets that may create sessions or lead context 664 /:\/\/patient\.phreesia\.com\//i, 665 /:\/\/patient\.klara\.com\//i, 666 /:\/\/widget\.klara\.com\//i, 667 /:\/\/patient-api\.speareducation\.com\//i, 668 /:\/\/api\.modento\.io\//i, 669 /:\/\/app\.neuralityhealth\.ai\//i, 670 /:\/\/www\.smilevirtual\.com\//i, 671 /:\/\/[^\/]*doctible\.com\//i, 672 /:\/\/[^\/]*yapiapp\.io\//i, 673 674 // Intake / scheduling / patient forms 675 /:\/\/[^\/]*intakeq\.com\//i, 676 /:\/\/app\.prod\.intelibly\.com\//i, 677 /:\/\/app\.intelibly\.com\//i, 678 /:\/\/sc-widget\.prod\.intelibly\.com\//i, 679 /:\/\/clients-cdn\.pplpractice\.com\//i, 680 /:\/\/webrefillplugin\.bestrxconnect\.com\//i, 681 /:\/\/view\.implantsmiles\.co\//i, 682 683 // Simplifeye / patient communication 684 /:\/\/embed\.simplifeye\.co\//i, 685 /:\/\/api\.simplifeye\.co\//i, 686 687 // AI chat / chatbot / web assistant widgets 688 /:\/\/aichatbotweb\.revenuewell\.com\//i, 689 /:\/\/[^\/]+\.web-assistant\.tensorlinks\.app\//i, 690 /:\/\/[^\/]*tensorlinks\.app\//i, 691 /:\/\/api\.heygent\.ai\//i, 692 /:\/\/lexicon-prod\.apigateway\.co\//i, 693 /:\/\/conversation-prod\.apigateway\.co\//i, 694 /:\/\/widget\.osam\.one\//i, 695 696 // Local marketing / lead widgets 697 /:\/\/www\.localmarketingmanager\.com\//i, 698 /:\/\/[^\/]*localmarketingmanager\.com\//i, 699 700 // Health / patient commerce / referral widgets 701 /:\/\/assets\.fullscript\.com\//i, 702 /:\/\/www\.opencare\.com\//i, 703 /:\/\/[^\/]*opencare\.com\//i 704 // END EXTENDED LIST --- 705 ]; 706 707 if (!DI_CONSENT_MODE_V2) { 708 beaconPatterns.push( 709 /:\/\/www\.google-analytics\.com\/collect/i, 710 /:\/\/www\.google-analytics\.com\/g\/collect/i, 711 /:\/\/www\.googletagmanager\.com\/collect/i, 712 /:\/\/region1\.google-analytics\.com\/g\/collect/i, 713 /:\/\/region2\.google-analytics\.com\/g\/collect/i, 714 /:\/\/analytics\.google\.com\/g\/collect/i 715 ); 716 } 717 /* 718 Script loader patterns. 719 720 These are known non-essential tracker scripts. While consent is pending, 721 the script is held instead of loaded. If consent is accepted, held scripts 722 are released on the same page. If consent is denied, held scripts are discarded. 723 */ 724 var blockUrls = [ 725 726 // Google Ads / AdSense / remarketing scripts 727 /google\.com\/pagead\/tag\/js/i, 728 /googleads\.g\.doubleclick\.net\//i, 729 /pagead2\.googlesyndication\.com\//i, 730 /pagead2\.googlesyndication\.com\/pagead\//i, 731 /www\.googlesyndication\.com\/pagead\//i, 732 /www\.googleadservices\.com\/pagead\//i, 733 734 // Meta / Facebook 735 /connect\.facebook\.net\/.*\/fbevents\.js/i, 736 /facebook\.com\/tr\/?/i, 737 738 // TikTok 739 /business\.tiktok\.com\/widget/i, 740 /s\.tiktok\.com\//i, 741 /analytics\.tiktok\.com\/i18n\/pixel\/events\.js/i, 742 743 // LinkedIn 744 /snap\.licdn\.com\/li\.js/i, 745 /snap\.licdn\.com\/li\.lms-analytics\/insight\.min\.js/i, 746 747 // Twitter / X 748 /static\.ads-twitter\.com\/uwt\.js/i, 749 750 // Pinterest 751 /assets\.pinterest\.com\/js\/pinit\.js/i, 752 753 // Snapchat 754 /sc-static\.net\/connect\.js/i, 755 756 // Heatmaps / session replay / user behavior analytics 757 /static\.hotjar\.com\/c\/hotjar-/i, 758 /tools\.luckyorange\.com\/core\/lo\.js/i, 759 /fullstory\.com\/s\/fs\.js/i, 760 /clarity\.ms\/tag/i, 761 /script\.crazyegg\.com\/pages\//i, 762 /mouseflow\.com\/projects\//i, 763 764 // Analytics / CDP / product analytics 765 /cdn\.mixpanel\.com\/lib/i, 766 /cdn\.amplitude\.com\/js/i, 767 /cdn\.segment\.com\/analytics/i, 768 /plausible\.io\/js\/script/i, 769 770 // Call tracking / DNI / lead capture / attribution 771 /tctm\.co\/t\.js/i, 772 /appcontent\.practicenumbers\.com\/phone_number_replace_/i, 773 /cdn\.callrail\.com\/companies\/.+\/swap\.js/i, 774 /cdn\.calltrk\.com\/companies\/.+\/swap\.js/i, 775 /cdn\.rlets\.com\/capture_configs\//i, 776 /analytics\.liine\.com\/v1\/bootstrapped/i, 777 /instantleadcapture\.com\/px\.min\.js/i, 778 /js\.adsrvr\.org\/up_loader/i, 779 /px\.premion\.com\/pixel\.js/i, 780 781 // Anti-fraud / visitor ID / attribution-style scripts 782 /www\.clickcease\.com\/monitor\/.+\.js/i, 783 /cdn\.raek\.net\/js\/raek\.min\.js/i, 784 /hockeystack(@latest)?\/hockeystack\.min\.js/i, 785 786 // Chat/CX scripts that include explicit tracking behavior. 787 /cdn\.livechatinc\.com\/tracking\.js/i, 788 /static\.mobilemonkey\.com\/js\/business_/i, 789 /static\.zdassets\.com\/ekr\/snippet\.js/i,
790 /platform\.swellcx\.com\/widget\/js\/chat\.js/i, 791 /cdn\.apigateway\.co\/webchat-client/i, 792 793 // Marketing automation / email / CRM 794 /js\.hubspot\.com\/analytics/i, 795 /js\.hs-scripts\.com\/\d+\.js/i, 796 /js\.hsforms\.net\/forms\/embed\/v2\.js/i, 797 /chimpstatic\.com\/mcjs-connected\/js\//i, 798 /diffuser-cdn\.app-us1\.com\/diffuser\/diffuser\.js/i, 799 /tag\.brandcdn\.com\/autoscript\//i, 800 /tag\.validate\.audio\/validate\.js/i, 801 /s1\.revenuewell\.com\/scripts\/js-api\.js/i, 802 803 // BrandCDN conversion pixel script 804 /adservices\.brandcdn\.com\/pixel\/cv_pixel\.js/i, 805 806 // AdRoll 807 /s\.adroll\.com\/j\/[^\/]+\/roundtrip\.js/i, 808 809 // ZoomInfo pixel 810 /ws\.zoominfo\.com\/pixel\//i, 811 812 // Trovo tag iframe/script 813 /tag\.trovo-tag\.com\//i, 814 815 // Patient Prism / call intelligence 816 /next-api\.patientprism\.com\/v1\/snippet\//i, 817 818 // Cloudflare Web Analytics / Browser Insights 819 /static\.cloudflareinsights\.com\/beacon\.min\.js/i, 820 821 // Additional tracker scripts 822 /dni\.logmycalls\.com\/dni\.js/i, 823 /insight\.adsrvr\.org\//i, 824 /bat\.bing\.com\/bat\.js/i, 825 /settings\.luckyorange\.com\//i, 826 /app\.operadds\.com\//i, 827 /js\.zi-scripts\.com\/zi-tag\.js/i, 828 /analytics-[0-9]+\.kxcdn\.com\/analytics\.js/i, 829 /tag\.simpli\.fi\//i, 830 /i\.simpli\.fi\/p/i, 831 /www\.redditstatic\.com\/ads\/pixel\.js/i, 832 /dni\.logmycalls\.com\/dni\.js/i, 833 834 // Pendo product analytics 835 /cdn\.pendo\.io\/agent\/static\/[^\/]+\/pendo\.js/i, 836 837 // Piwik PRO container / analytics 838 /containers\.piwik\.pro\/[^\/]+\.js/i, 839 840 // Kissmetrics analytics scripts 841 /i\.kissmetrics\.io\/i\.js/i, 842 /scripts\.kissmetrics\.io\/.*\.js/i, 843 844 // EXTENDED LIST --- 845 // Scheduling / booking widgets 846 /calendly\.com/i, 847 /assets\.calendly\.com/i, 848 /localmed\.com/i, 849 /frontend\.assets\.nexhealth\.com/i, 850 /schedule\.jarvisanalytics\.com/i, 851 /embed\.acuityscheduling\.com/i, 852 /cdn\.timetrade\.com/i, 853 /book\.getweave\.com/i, 854 /book2\.getweave\.com/i, 855 /book\.gke1-west3\.wsf-prod-1\.wstack\.net/i, 856 /nextgen\.clixondental\.com/i, 857 /olb\.saloniris\.com/i, 858 /plugin\.mysalononline\.com/i, 859 860 // Zocdoc 861 /zocdoc\.com/i, 862 /zocdocstatic\.com/i, 863 /static\.zocdoc\.com/i, 864 /offsiteschedule\.zocdoc\.com/i, 865 /book\.zocdoc\.com/i, 866 867 // Chat / chatbot / AI assistant widgets 868 /connect\.podium\.com/i, 869 /platform\.swellcx\.com/i, 870 /cdn\.apigateway\.co/i, 871 /chat\.gocloudgain\.com/i, 872 /chat\.dentina\.ai/i, 873 /static\.ai\.getdeardoc\.com/i, 874 /chat\.getdeardoc\.com/i, 875 /api\.chat\.getdeardoc\.com/i, 876 /app\.dasconsultantsusa\.com/i, 877 /server\.dasconsultantsusa\.com/i, 878 /app\.purechat\.com/i, 879 /widgetapi\.purechat\.com/i, 880 /botsrv\.com/i, 881 /botsrv2\.com/i, 882 /static\.botsrv2\.com/i, 883 /app\.botsify\.com/i, 884 /widget\.botsify\.com/i, 885 /embed\.tawk\.to/i, 886 /static-v\.tawk\.to/i, 887 /va\.tawk\.to/i, 888 /formilla\.com/i, 889 /widgets\.leadconnectorhq\.com/i, 890 /services\.leadconnectorhq\.com/i, 891 /services\.msgsndr\.com/i, 892 /app\.chatsupport\.co/i, 893 /truelark\.com/i, 894 /ops\.truelark\.com/i, 895 /247aireceptionist\.com/i, 896 /code\.jivosite\.com/i, 897 /jivosite\.com/i, 898 /api\.livechatinc\.com/i, 899 /cdn\.livechatinc\.com/i, 900 /chat\.doctorsinternet\.com/i, 901 902 // Forms / lead capture / embedded form systems 903 /webform\.adit\.com/i, 904 /embed\.lpcontent\.net/i, 905 /api\.leadpages\.io/i, 906 /app-widgets\.jotform\.io/i, 907 /widgets\.jotform\.io/i, 908 /forms\.liine\.com/i, 909 /dim\.dentalimplantmachine\.co/i, 910 /kit\.com/i, 911 /ck\.page/i, 912 /convertkit\.com/i, 913 /app\.convertkit\.com/i, 914 /f\.convertkit\.com/i, 915 /api\.hsforms\.com/i, 916 /forms\.hsforms\.com/i, 917 /js\.hsforms\.net/i, 918 919 // Reviews / reputation / social proof widgets 920 /go\.doctorsinternet\.com/i, 921 /go\.pimm-usa\.com/i, 922 /widgets-v7\.birdeye\.com/i, 923 /webchat\.birdeye\.com/i, 924 /widget-v7-cdn\.birdeye\.com/i, 925 /birdeye\.com/i, 926 /widgets\.revue\.us/i, 927 /widgets\.thereviewsplace\.com/i, 928 /assets\.thereviewsplace\.com/i, 929 /api\.thereviewsplace\.com/i, 930 /providers\.doctor\.com/i, 931 /app\.operadds\.com/i, 932 /reviewsonmywebsite\.com/i, 933 /localimpact\.com/i, 934 /local\.demandforce\.com/i, 935 /demandforced3\.com/i, 936 /elfsight\.com/i, 937 /elfsightcdn\.com/i, 938 939 // Social widgets / embeds 940 /instagram\.com/i, 941 /tiktok\.com/i, 942 /lf16-tiktok-web\.tiktokcdn-us\.com/i, 943 /facebook\.com\/plugins/i, 944 /widgets\.pinterest\.com/i, 945 /www\.yelp\.com/i, 946 947 // Financing / payment / membership widgets 948 /files\.withcherry\.com/i, 949 /gql\.withcherry\.com/i, 950 /master-cherry-storage\.s3\.us-west-2\.amazonaws\.com/i, 951 /member\.kleer\.com/i, 952 /member\.clerri\.com/i, 953 /checkout\.staxpayments\.com/i, 954 /goblueswipe\.transactiongateway\.com/i, 955 /secure\.networkmerchants\.com/i, 956 /apply\.sunbit\.com/i, 957 /www\.paypal\.com/i, 958 /www\.paypalobjects\.com/i, 959 /www\.carecredit\.com/i, 960 961 // Patient / health / practice widgets that may create sessions or lead context 962 /patient\.phreesia\.com/i, 963 /patient\.klara\.com/i, 964 /widget\.klara\.com/i, 965 /patient-api\.speareducation\.com/i, 966 /api\.modento\.io/i, 967 /app\.neuralityhealth\.ai/i, 968 /www\.smilevirtual\.com/i, 969 /doctible\.com/i, 970 /yapiapp\.io/i, 971 972 // Intake / scheduling / patient forms 973 /intakeq\.com/i, 974 /app\.prod\.intelibly\.com/i, 975 /app\.intelibly\.com/i, 976 /sc-widget\.prod\.intelibly\.com/i, 977 /clients-cdn\.pplpractice\.com/i, 978 /webrefillplugin\.bestrxconnect\.com/i, 979 /view\.implantsmiles\.co/i, 980 981 // Simplifeye / patient communication 982 /embed\.simplifeye\.co/i, 983 /api\.simplifeye\.co/i, 984 985 // AI chat / chatbot / web assistant widgets 986 /aichatbotweb\.revenuewell\.com/i, 987 /web-assistant\.tensorlinks\.app/i, 988 /tensorlinks\.app/i, 989 /api\.heygent\.ai/i, 990 /lexicon-prod\.apigateway\.co/i, 991 /conversation-prod\.apigateway\.co/i, 992 /widget\.osam\.one/i, 993 994 // Local marketing / lead widgets 995 /www\.localmarketingmanager\.com/i, 996 /localmarketingmanager\.com/i, 997 998 // Health / patient commerce / referral widgets 999 /assets\.fullscript\.com/i, 1000 /www\.opencare\.com/i, 1001 /opencare\.com/i 1002 // END EXTENDED LIST --- 1003 ]; 1004 1005 1006 if (!DI_CONSENT_MODE_V2) { 1007 blockUrls.push( 1008 /googletagmanager\.com\/gtag\/js/i, 1009 /googletagmanager\.com\/gtm\.js/i 1010 ); 1011 } 1012 1013 /* 1014 First-party analytics websocket. 1015 */ 1016 var socketPatterns = [ 1017 // /^wss:\/\/socket\.di-api\.com\/analytics/i 1018 ]; 1019 1020 function matchesPattern(url, patterns) { 1021 if (!url) return false;
1022 1023 var s = String(url); 1024 1025 return patterns.some(function (r) { 1026 return r.test(s); 1027 }); 1028 } 1029 1030 function shouldBlockUrl(url) { 1031 return matchesPattern(url, beaconPatterns); 1032 } 1033 1034 function shouldBlockScript(url) { 1035 return matchesPattern(url, blockUrls); 1036 } 1037 1038 function shouldHoldSocket(url) { 1039 return matchesPattern(url, socketPatterns); 1040 } 1041 1042 function holdScript(src, node, parent, method, refNode) { 1043 if (!src) return; 1044 1045 for (var i = 0; i < heldScripts.length; i++) { 1046 if (heldScripts[i].src === src) return; 1047 } 1048 1049 heldScripts.push({ 1050 src: src, 1051 node: node || null, 1052 parent: parent || null, 1053 method: method || 'appendChild', 1054 refNode: refNode || null 1055 }); 1056 1057 _logBlocked('[Privacy] Held tracker script until consent â', src); 1058 } 1059 1060 function holdCall(type, args) { 1061 heldCalls.push({ 1062 type: type, 1063 args: Array.prototype.slice.call(args) 1064 }); 1065 1066 _logBlocked('[Privacy] Held tracker call until consent â', type); 1067 } 1068 1069 function holdSocket(url, protocols) { 1070 for (var i = 0; i < heldSockets.length; i++) { 1071 if (heldSockets[i].url === url) return; 1072 } 1073 1074 heldSockets.push({ 1075 url: url, 1076 protocols: protocols 1077 }); 1078 1079 _logBlocked('[Privacy] Held analytics WebSocket until consent â', url); 1080 } 1081 1082 function blockOrHoldScript(src, node, parent, method, refNode) { 1083 if (!shouldBlockScript(src)) return false; 1084 1085 if (shouldHold()) { 1086 holdScript(src, node, parent, method, refNode); 1087 return true; 1088 } 1089 1090 if (shouldDrop()) { 1091 _logBlocked('[Privacy] Blocked tracker script â', src); 1092 return true; 1093 } 1094 1095 return false; 1096 } 1097 1098 function blockOrHoldCall(type, args) { 1099 if (trackingAllowed()) return false; 1100 1101 if (shouldHold()) { 1102 holdCall(type, args); 1103 return true; 1104 } 1105 1106 if (shouldDrop()) { 1107 _logBlocked('[Privacy] Blocked tracker call â', type); 1108 return true; 1109 } 1110 1111 return false; 1112 } 1113 1114 var origCreateElement = document.createElement; 1115 var proto = Element.prototype; 1116 var origAppend = proto.appendChild; 1117 var origInsert = proto.insertBefore; 1118 var origAppendMethod = proto.append; 1119 var origPrependMethod = proto.prepend; 1120 var OrigWebSocket = window.WebSocket || null; 1121 1122 function cloneScriptForRelease(original) { 1123 var clone = origCreateElement.call(document, 'script'); 1124 1125 for (var i = 0; i < original.attributes.length; i++) { 1126 var attr = original.attributes[i]; 1127 1128 if (attr.name === 'src') { 1129 continue; 1130 } 1131 1132 try { 1133 clone.setAttribute(attr.name, attr.value); 1134 } catch (e) { } 1135 } 1136 1137 clone.src = original.src; 1138 1139 return clone; 1140 } 1141 1142 function holdStaticScriptTag(script) { 1143 if (!script || !script.src) return false; 1144 1145 var src = script.src; 1146 1147 if (!shouldBlockScript(src)) { 1148 return false; 1149 } 1150 1151 for (var i = 0; i < heldScripts.length; i++) { 1152 if (heldScripts[i].src === src) { 1153 return true; 1154 } 1155 } 1156 1157 if (shouldHold()) { 1158 heldScripts.push({ 1159 src: src, 1160 node: cloneScriptForRelease(script), 1161 parent: document.head || document.documentElement, 1162 method: 'appendChild', 1163 refNode: null 1164 }); 1165 1166 try { 1167 if (script.parentNode) { 1168 script.parentNode.removeChild(script); 1169 } 1170 } catch (e) { } 1171 1172 _logBlocked('[Privacy] Held static tracker script until consent â', src); 1173 return true; 1174 } 1175 1176 if (shouldDrop()) { 1177 try { 1178 if (script.parentNode) { 1179 script.parentNode.removeChild(script); 1180 } 1181 } catch (e) { } 1182 1183 _logBlocked('[Privacy] Removed static tracker script â', src); 1184 return true; 1185 } 1186 1187 return false; 1188 } 1189 1190 function scanStaticTrackerScripts() { 1191 var scripts = document.querySelectorAll('script[src]'); 1192 1193 for (var i = 0; i < scripts.length; i++) { 1194 holdStaticScriptTag(scripts[i]); 1195 } 1196 } 1197 1198 function restoreDataLayerPush() { 1199 window.dataLayer = window.dataLayer || []; 1200 1201 try { 1202 window.dataLayer.push = Array.prototype.push; 1203 } catch (e) { } 1204 } 1205 1206 function releaseHeldScripts() { 1207 var scripts = heldScripts.slice(); 1208 heldScripts = []; 1209 1210 for (var i = 0; i < scripts.length; i++) { 1211 var item = scripts[i]; 1212 1213 try { 1214 var node = item.node;
1215 1216 if (!node) { 1217 node = origCreateElement.call(document, 'script'); 1218 node.src = item.src; 1219 node.async = true; 1220 } 1221 1222 if (item.method === 'insertBefore' && item.parent && item.refNode) { 1223 origInsert.call(item.parent, node, item.refNode); 1224 } else if (item.parent) { 1225 origAppend.call(item.parent, node); 1226 } else { 1227 origAppend.call(document.head || document.documentElement, node); 1228 } 1229 1230 _logBlocked('[Privacy] Released tracker script after consent â', item.src); 1231 } catch (e) { 1232 _logBlocked('[Privacy] Failed to release tracker script â', item.src, e); 1233 } 1234 } 1235 } 1236 1237 function releaseHeldSockets() { 1238 var sockets = heldSockets.slice(); 1239 heldSockets = []; 1240 1241 if (!OrigWebSocket) return; 1242 1243 for (var i = 0; i < sockets.length; i++) { 1244 try { 1245 if (sockets[i].protocols !== undefined) { 1246 new OrigWebSocket(sockets[i].url, sockets[i].protocols); 1247 } else { 1248 new OrigWebSocket(sockets[i].url); 1249 } 1250 1251 _logBlocked('[Privacy] Released analytics WebSocket after consent â', sockets[i].url); 1252 } catch (e) { 1253 _logBlocked('[Privacy] Failed to release analytics WebSocket â', sockets[i].url, e); 1254 } 1255 } 1256 } 1257 1258 function replayHeldCalls() { 1259 var calls = heldCalls.slice(); 1260 heldCalls = []; 1261 1262 restoreDataLayerPush(); 1263 1264 for (var i = 0; i < calls.length; i++) { 1265 var item = calls[i]; 1266 1267 try { 1268 if (item.type === 'dataLayer.push') { 1269 Array.prototype.push.apply(window.dataLayer, item.args); 1270 continue; 1271 } 1272 1273 if (item.type === 'gtag' || item.type === 'google_tracking.gtag') { 1274 window.dataLayer = window.dataLayer || []; 1275 Array.prototype.push.call(window.dataLayer, item.args); 1276 continue; 1277 } 1278 1279 if ((item.type === 'fbq' || item.type === 'facebook_tracking.fbq') && typeof window.fbq === 'function') { 1280 window.fbq.apply(window, item.args); 1281 continue; 1282 } 1283 1284 if (item.type === 'analytics.track' && window.analytics && typeof window.analytics.track === 'function') { 1285 window.analytics.track.apply(window.analytics, item.args); 1286 continue; 1287 } 1288 1289 if (item.type === 'analytics.identify' && window.analytics && typeof window.analytics.identify === 'function') { 1290 window.analytics.identify.apply(window.analytics, item.args); 1291 continue; 1292 } 1293 1294 if (item.type === 'analytics.page' && window.analytics && typeof window.analytics.page === 'function') { 1295 window.analytics.page.apply(window.analytics, item.args); 1296 continue; 1297 } 1298 1299 if (item.type === 'mixpanel.track' && window.mixpanel && typeof window.mixpanel.track === 'function') { 1300 window.mixpanel.track.apply(window.mixpanel, item.args); 1301 continue; 1302 } 1303 1304 if (item.type === 'amplitude.logEvent' && window.amplitude && typeof window.amplitude.logEvent === 'function') { 1305 window.amplitude.logEvent.apply(window.amplitude, item.args); 1306 continue; 1307 } 1308 1309 if (item.type === 'plausible' && typeof window.plausible === 'function') { 1310 window.plausible.apply(window, item.args); 1311 continue; 1312 } 1313 } catch (e) { 1314 _logBlocked('[Privacy] Failed to replay tracker call â', item.type, e); 1315 } 1316 } 1317 } 1318 1319 function acceptTracking() { 1320 if (gpcEnabled) { 1321 _logBlocked('[Privacy] Consent grant ignored because GPC/DNT is enabled.'); 1322 return; 1323 } 1324 1325 consent = 'granted'; 1326 setStoredConsent('granted'); 1327 1328 // *** ADDED â Consent Mode v2 update signal *** 1329 // Use the real gtag() function (defined before the IIFE) so gtag.js 1330 // registers consent via its API. Must fire before releaseHeldScripts 1331 // so GA loads already knowing consent is granted. 1332 try { 1333 if (typeof window.gtag === 'function') { 1334 console.log('[Privacy] Updating Consent Mode v2 signals for granted consent.'); 1335 window.gtag('consent', 'update', { 1336 analytics_storage: 'granted', 1337 ad_storage: 'granted', 1338 ad_user_data: 'granted', 1339 ad_personalization: 'granted' 1340 }); 1341 } 1342 } catch (e) { } 1343 // *** END ADDED â Consent Mode v2 update signal *** 1344 1345 restoreDataLayerPush(); 1346 releaseHeldScripts(); 1347 releaseHeldSockets(); 1348 1349 setTimeout(function () { 1350 replayHeldCalls(); 1351 }, 800); 1352 1353 _logBlocked('[Privacy] Tracking accepted. Held trackers released.'); 1354 } 1355 1356 function denyTracking() { 1357 consent = 'denied'; 1358 setStoredConsent('denied'); 1359 1360 heldScripts = []; 1361 heldCalls = []; 1362 heldSockets = []; 1363 1364 _logBlocked('[Privacy] Tracking denied. Held trackers discarded.'); 1365 } 1366 1367 var privacy = { 1368 gpcEnabled: gpcEnabled, 1369 1370 get consent() { 1371 return getConsentState(); 1372 }, 1373 1374 get trackingAllowed() { 1375 return trackingAllowed(); 1376 }, 1377 1378 get heldScripts() { 1379 return heldScripts.slice(); 1380 }, 1381 1382 get heldCalls() { 1383 return heldCalls.slice(); 1384 }, 1385 1386 get heldSockets() { 1387 return heldSockets.slice(); 1388 }, 1389 1390 setConsent: function (value) { 1391 if (value === 'granted') { 1392 acceptTracking(); 1393 return; 1394 } 1395 1396 if (value === 'denied') { 1397 denyTracking(); 1398 } 1399 }, 1400 1401 accept: acceptTracking, 1402 deny: denyTracking, 1403 release: acceptTracking, 1404 1405 reset: function () { 1406 clearStoredConsent(); 1407 consent = null; 1408 heldScripts = []; 1409 heldCalls = []; 1410 heldSockets = []; 1411 } 1412 }; 1413 1414 window.DiPrivacy = privacy; 1415 1416 // *** ADDED â Early return for granted users *** 1417 // If user has already granted consent, skip installing all the stubs and blockers. 1418 // The Consent Mode v2 default + update was already pushed via the real gtag() 1419 // before the IIFE started, so GTM/GA will read granted state on init. 1420 if (trackingAllowed()) { 1421 return; 1422 } 1423 // *** END ADDED â Early return for granted users *** 1424 1425 console.log('[Privacy] Tracking is held/blocked. Consent state â', getConsentState()); 1426 1427 // sendBeacon is commonly used for analytics hits and page-unload beacons. 1428 if (navigator.sendBeacon) { 1429 var origBeacon = navigator.sendBeacon; 1430 1431 navigator.sendBeacon = function (url, data) { 1432 if (!trackingAllowed() && shouldBlockUrl(url)) { 1433 _logBlocked('[Privacy] Blocked sendBeacon â', url); 1434 return true; 1435 } 1436 1437 return origBeacon.apply(this, arguments); 1438 }; 1439 } 1440
1441 // fetch() is commonly used by modern analytics, CDPs, pixels, and session replay tools. 1442 if (window.fetch) { 1443 var origFetch = window.fetch; 1444 1445 window.fetch = function (input, init) { 1446 var url = (typeof input === 'string') ? input : (input && input.url); 1447 1448 if (!trackingAllowed() && shouldBlockUrl(url)) { 1449 _logBlocked('[Privacy] Blocked fetch â', url); 1450 return Promise.resolve(new Response(null, { status: 204 })); 1451 } 1452 1453 return origFetch.apply(this, arguments).catch(function () { 1454 return new Response(null, { status: 204 }); 1455 }); 1456 }; 1457 } 1458 1459 // XHR is still used by older analytics and marketing scripts. 1460 if (window.XMLHttpRequest) { 1461 var OrigXHR = XMLHttpRequest; 1462 1463 function WrappedXHR() { 1464 var xhr = new OrigXHR(); 1465 var _open = xhr.open; 1466 var _send = xhr.send; 1467 1468 xhr.open = function (method, url) { 1469 xhr._blockedUrl = url; 1470 xhr._blockThis = !trackingAllowed() && shouldBlockUrl(url); 1471 return _open.apply(xhr, arguments); 1472 }; 1473 1474 xhr.send = function () { 1475 if (xhr._blockThis) { 1476 _logBlocked('[Privacy] Blocked XHR â', xhr._blockedUrl); 1477 1478 try { 1479 xhr.abort(); 1480 } catch (e) { } 1481 1482 return; 1483 } 1484 1485 return _send.apply(xhr, arguments); 1486 }; 1487 1488 return xhr; 1489 } 1490 1491 WrappedXHR.prototype = OrigXHR.prototype; 1492 window.XMLHttpRequest = WrappedXHR; 1493 } 1494 1495 // Some trackers still fire using image beacon URLs. 1496 if (window.HTMLImageElement) { 1497 var imgProto = HTMLImageElement.prototype; 1498 var desc = Object.getOwnPropertyDescriptor(imgProto, 'src'); 1499 1500 if (desc && desc.set) { 1501 Object.defineProperty(imgProto, 'src', { 1502 get: desc.get, 1503 set: function (url) { 1504 if (!trackingAllowed() && shouldBlockUrl(url)) { 1505 _logBlocked('[Privacy] Blocked Image â', url); 1506 return url; 1507 } 1508 1509 return desc.set.call(this, url); 1510 }, 1511 configurable: true, 1512 enumerable: true 1513 }); 1514 } 1515 } 1516 1517 // Consent-gated WebSockets. Only matching socketPatterns are held before consent. 1518 if (OrigWebSocket) { 1519 window.WebSocket = function (url, protocols) { 1520 if (!trackingAllowed() && shouldHoldSocket(url)) { 1521 if (shouldHold()) { 1522 holdSocket(url, protocols); 1523 } else { 1524 _logBlocked('[Privacy] Blocked analytics WebSocket â', url); 1525 } 1526 1527 return { 1528 close: function () { }, 1529 send: function () { }, 1530 addEventListener: function () { }, 1531 removeEventListener: function () { }, 1532 dispatchEvent: function () { return false; }, 1533 readyState: 3, 1534 bufferedAmount: 0, 1535 url: String(url || '') 1536 }; 1537 } 1538 1539 if (protocols !== undefined) { 1540 return new OrigWebSocket(url, protocols); 1541 } 1542 1543 return new OrigWebSocket(url); 1544 }; 1545 1546 window.WebSocket.prototype = OrigWebSocket.prototype; 1547 } 1548 1549 // jQuery.getScript() is used by many older site snippets to load trackers dynamically. 1550 if (window.jQuery && window.jQuery.getScript) { 1551 var $ = window.jQuery; 1552 var origGetScript = $.getScript; 1553 1554 $.getScript = function (url, cb) { 1555 if (blockOrHoldScript(url, null, null, 'jqueryGetScript', null)) { 1556 return; 1557 } 1558 1559 return origGetScript.apply(this, arguments); 1560 }; 1561 } 1562 1563 // Dynamically inserted
1563<script src> trackers are held or blocked. 1564 (function () { 1565 proto.appendChild = function (node) { 1566 if (node && node.tagName === 'SCRIPT') { 1567 var src = node.src || node.getAttribute('src'); 1568 1569 if (blockOrHoldScript(src, node, this, 'appendChild', null)) { 1570 return node; 1571 } 1572 } 1573 1574 return origAppend.call(this, node); 1575 }; 1576 1577 proto.insertBefore = function (node, ref) { 1578 if (node && node.tagName === 'SCRIPT') { 1579 var src = node.src || node.getAttribute('src'); 1580 1581 if (blockOrHoldScript(src, node, this, 'insertBefore', ref)) { 1582 return node; 1583 } 1584 } 1585 1586 return origInsert.call(this, node, ref); 1587 }; 1588 1589 if (origAppendMethod) { 1590 proto.append = function () { 1591 for (var i = 0; i < arguments.length; i++) { 1592 var node = arguments[i]; 1593 1594 if (node && node.tagName === 'SCRIPT') { 1595 var src = node.src || node.getAttribute('src'); 1596 1597 if (blockOrHoldScript(src, node, this, 'appendChild', null)) { 1598 return; 1599 } 1600 } 1601 } 1602 1603 return origAppendMethod.apply(this, arguments); 1604 }; 1605 } 1606 1607 if (origPrependMethod) { 1608 proto.prepend = function () { 1609 for (var i = 0; i < arguments.length; i++) { 1610 var node = arguments[i]; 1611 1612 if (node && node.tagName === 'SCRIPT') { 1613 var src = node.src || node.getAttribute('src'); 1614 1615 if (blockOrHoldScript(src, node, this, 'appendChild', null)) { 1616 return; 1617 } 1618 } 1619 } 1620 1621 return origPrependMethod.apply(this, arguments); 1622 }; 1623 } 1624 })(); 1625 1626 // Static/parser-inserted tracker scripts are scanned separately. 1627 // This helps catch hard-coded
1627<script src="..."> tags that are not loaded through appendChild/insertBefore. 1628 scanStaticTrackerScripts(); 1629 1630 if (document.readyState === 'loading') { 1631 document.addEventListener('DOMContentLoaded', scanStaticTrackerScripts); 1632 } 1633 1634 // Watch for tracker scripts added later by widgets or inline code. 1635 // This catches scripts that are inserted into the page after our initial scan. 1636 if (window.MutationObserver) { 1637 try { 1638 var trackerScriptObserver = new MutationObserver(function (mutations) { 1639 for (var i = 0; i < mutations.length; i++) { 1640 var added = mutations[i].addedNodes; 1641 1642 for (var j = 0; j < added.length; j++) { 1643 var node = added[j]; 1644 1645 if (node && node.tagName === 'SCRIPT') { 1646 holdStaticScriptTag(node); 1647 } 1648 1649 if (node && node.querySelectorAll) { 1650 var scripts = node.querySelectorAll('script[src]'); 1651 1652 for (var k = 0; k < scripts.length; k++) { 1653 holdStaticScriptTag(scripts[k]); 1654 } 1655 } 1656 } 1657 } 1658 }); 1659 1660 trackerScriptObserver.observe(document.documentElement, { 1661 childList: true, 1662 subtree: true 1663 }); 1664 } catch (e) { } 1665 } 1666 1667 function trackerStub(name) { 1668 return function () { 1669 blockOrHoldCall(name, arguments); 1670 }; 1671 } 1672 1673 /* 1674 Common tracker APIs. 1675 1676 These stubs prevent known trackers from firing before consent. 1677 When consent is pending, calls are held. When consent is denied or GPC/DNT 1678 is active, calls are discarded. When accepted, held calls are replayed. 1679 */ 1680 window.dataLayer = window.dataLayer || []; 1681 1682 window.dataLayer.push = function () { 1683 // *** ADDED â Consent Mode v2 / GTM / gtag bypass *** 1684 // Allow consent signals, GTM internals, and gtag config/js/set/get 1685 // through unconditionally. GTM needs unobstructed dataLayer.push 1686 // to initialize itself and read consent state. Consent signals 1687 // must never be held or dropped. 1688 var arg = arguments[0]; 1689 1690 // Always allow consent signals through â Consent Mode v2 must not be gated. 1691 // gtag('consent', 'default'|'update', {...}) arrives as arguments where arg[0] === 'consent'. 1692 var isConsentCommand = arg && ( 1693 arg[0] === 'consent' || 1694 arg['0'] === 'consent' 1695 ); 1696 1697 // Always allow GTM internal events through (gtm.start, gtm.js, gtm.dom, gtm.load, etc.) 1698 var isGtmInternal = arg && typeof arg === 'object' && !Array.isArray(arg) && ( 1699 'gtm.start' in arg || 1700 'gtm.uniqueEventId' in arg || 1701 (arg.event && typeof arg.event === 'string' && arg.event.indexOf('gtm.') === 0) 1702 ); 1703 1704 // Allow gtag config/js/set/get commands so gtag.js can initialize properly. 1705 // gtag('js', new Date()) and gtag('config', 'G-XXX') need to reach dataLayer. 1706 var isGtagInternal = arg && ( 1707 arg[0] === 'js' || 1708 arg[0] === 'config' || 1709 arg[0] === 'set' || 1710 arg[0] === 'get' || 1711 arg['0'] === 'js' || 1712 arg['0'] === 'config' || 1713 arg['0'] === 'set' || 1714 arg['0'] === 'get' 1715 ); 1716 1717 if (isConsentCommand || isGtmInternal || isGtagInternal) { 1718 return Array.prototype.push.apply(window.dataLayer, arguments); 1719 } 1720 // *** END ADDED â Consent Mode v2 / GTM / gtag bypass *** 1721 1722 if (blockOrHoldCall('dataLayer.push', arguments)) { 1723 return; 1724 } 1725 1726 return Array.prototype.push.apply(window.dataLayer, arguments); 1727 }; 1728 1729 // *** ADDED â gtag stubs intentionally not installed *** 1730 // NOTE: window.gtag and window.google_tracking.gtag were defined as real 1731 // functions BEFORE this IIFE ran (in the Consent Mode v2 bootstrap block). 1732 // We do NOT overwrite them with stubs here â they need to remain real so 1733 // that gtag.js can register consent via its API (which is what produces 1734 // pscdl=denied/granted on hits instead of pscdl=noapi). 1735 // 1736 // Tracking gating for gtag still happens via the wrapped dataLayer.push 1737 // above: consent/gtm/gtag-internal commands pass through, everything else 1738 // (e.g. gtag('event', 'conversion', {...})) goes through blockOrHoldCall. 1739 // *** END ADDED â gtag stubs intentionally not installed *** 1740 1741 window.fbq = trackerStub('fbq'); 1742 window.facebook_tracking = window.facebook_tracking || {}; 1743 window.facebook_tracking.fbq = trackerStub('facebook_tracking.fbq'); 1744 1745 window.FB = window.FB || { AppEvents: {} }; 1746 window.FB.AppEvents.logEvent = trackerStub('FB.AppEvents.logEvent'); 1747 window.FB.AppEvents.logPurchase = trackerStub('FB.AppEvents.logPurchase'); 1748 1749 window.twttr = window.twttr || {}; 1750 window.twttr.track = trackerStub('twttr.track'); 1751 window.twttr.load = trackerStub('twttr.load'); 1752 1753 window._linkedin_data_partner_ids = []; 1754 window.linkedinData = trackerStub('linkedinData'); 1755 1756 window.pintrk = trackerStub('pintrk'); 1757 window.ttq = trackerStub('ttq'); 1758 window.snaptr = trackerStub('snaptr'); 1759 window.hj = trackerStub('hj'); 1760 1761 window.mixpanel = window.mixpanel || {}; 1762 window.mixpanel.track = trackerStub('mixpanel.track'); 1763 window.mixpanel.identify = trackerStub('mixpanel.identify'); 1764 window.mixpanel.register = trackerStub('mixpanel.register'); 1765 1766 window.amplitude = window.amplitude || {}; 1767 window.amplitude.logEvent = trackerStub('amplitude.logEvent'); 1768 window.amplitude.setUserProperties = trackerStub('amplitude.setUserProperties'); 1769 1770 window.analytics = window.analytics || {}; 1771 window.analytics.track = trackerStub('analytics.track'); 1772 window.analytics.identify = trackerStub('analytics.identify'); 1773 window.analytics.page = trackerStub('analytics.page'); 1774 1775 window.plausible = trackerStub('plausible'); 1776 1777 })(window, document); 1778</script>
vendor: 1 bytes, line 1778
1778
1779<script> 1780 (function () { 1781 1782 // Set window.privacy_allow = { disabled: true } before this script to suppress the banner entirely 1783 var privacy_allow = Object.assign({ disabled: false }, window.privacy_allow || {}); 1784 window.privacy_allow = privacy_allow; 1785 1786 // Per-site override API â call before or after this script: 1787 // privacy_config.set('variant', 'manage'); 1788 if (!window.privacy_config || typeof window.privacy_config !== 'object') window.privacy_config = {}; 1789 Object.defineProperty(window.privacy_config, 'set', { 1790 enumerable: false, configurable: true, 1791 value: function (key, val) { window.privacy_config[key] = val; } 1792 }); 1793 1794 // variant: 'simple' â Decline / Accept All banner (no modal) 1795 // variant: 'manage' â Manage / Accept All banner + preferences modal 1796 var privacy_config_defaults = { 1797 primaryColor: '#1e3a5f', 1798 bgColor: '#ffffff', 1799 textColor: '#374151', 1800 // fontFamily: 'inherit', 1801 fontFamily: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif', 1802 buttonRadius: '4px', 1803 privacyPolicyUrl: '/privacy/', 1804 variant: 'manage', 1805 bannerText: 'We use cookies and tracking technologies to improve your browsing experience on our website, to show you personalized content, and to analyze our website traffic. Read our [privacy policy] to learn more.', 1806 declineLabel: 'Decline', 1807 manageLabel: 'Manage', 1808 acceptLabel: 'Accept All', 1809 modalTitle: 'Your tracking preferences.', 1810 modalDesc: 'We use tracking technologies, including scripts that may not set cookies, to understand how you use our site and deliver relevant content. You can learn more in our', 1811 submitLabel: 'Submit Preferences', 1812 rejectLabel: 'Reject all', 1813 cancelLabel: 'Cancel', 1814 categories: [ 1815 { 1816 id: 'tracking', 1817 label: 'Tracking & Analytics', 1818 description: 'Scripts and technologies that help us understand how visitors interact with our site, measure performance, and serve relevant content and ads.', 1819 defaultOn: true, 1820 } 1821 ] 1822 }; 1823 var privacy_config; 1824 1825 // âââ helpers âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1826 1827 function privacy_cb_el(tag, props) { 1828 var node = document.createElement(tag); 1829 if (props) Object.keys(props).forEach(function (k) { node[k] = props[k]; }); 1830 return node; 1831 } 1832 1833 function privacy_cb_removeBanner() { 1834 var el = document.getElementById('di-consent-banner'); 1835 if (el) el.parentNode.removeChild(el); 1836 } 1837 1838 function privacy_cb_removeModal() { 1839 var el = document.getElementById('di-cookie-pref-dialog'); 1840 if (!el) return; 1841 try { el.close(); } catch (e) { } 1842 } 1843 1844 function privacy_cb_accept() { 1845 try { if (window.DiPrivacy && typeof window.DiPrivacy.accept === 'function') window.DiPrivacy.accept(); } catch (e) { } 1846 privacy_cb_removeModal(); privacy_cb_removeBanner(); 1847 } 1848 1849 function privacy_cb_reject() { 1850 try { if (window.DiPrivacy && typeof window.DiPrivacy.deny === 'function') window.DiPrivacy.deny(); } catch (e) { } 1851 privacy_cb_removeModal(); privacy_cb_removeBanner(); 1852 } 1853 1854 function privacy_cb_rejectAll() { 1855 privacy_config.categories.forEach(function (cat) { 1856 var t = document.getElementById('di-cm-' + cat.id + '-toggle'); 1857 if (t) t.checked = false; 1858 }); 1859 privacy_cb_reject(); 1860 } 1861 1862 function privacy_cb_savePreferences() { 1863 var anyOff = privacy_config.categories.some(function (cat) { 1864 var t = document.getElementById('di-cm-' + cat.id + '-toggle'); 1865 return t && !t.checked; 1866 }); 1867 anyOff ? privacy_cb_reject() : privacy_cb_accept(); 1868 } 1869 1870 // âââ styles ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1871 1872 function privacy_cb_injectStyles() { 1873 console.log('Injecting consent banner styles...'); 1874 var existing = document.getElementById('di-consent-banner-styles'); 1875 if (existing) existing.parentNode.removeChild(existing); 1876 var style = document.createElement('style'); 1877 style.id = 'di-consent-banner-styles'; 1878 var css = ''; 1879 1880 // css += '#di-consent-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999999999;background:var(--di-cb-bg);box-shadow:0 -4px 16px rgba(0,0,0,.10);padding:20px 24px;font-family:var(--di-cb-font);box-sizing:border-box;}'; 1881 css += '#di-consent-banner{position:fixed;bottom:0;left:0;right:0;z-index:2147483647;background:var(--di-cb-bg);box-shadow:0 -4px 16px rgba(0,0,0,.10);padding:20px 24px;box-sizing:border-box;}'; 1882 css += '#di-consent-banner,#di-consent-banner *{font-family:var(--di-cb-font,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif)!important;letter-spacing:normal!important;}'; 1883 css += '#di-consent-banner .di-cb__text{font-size:14px!important;line-height:1.5!important;color:var(--di-cb-text);margin:0;}'; 1884 css += '@media(max-width:420px){#di-consent-banner{min-height:270px;}}'; 1885 css += '#di-consent-banner .di-cb__inner{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:32px;max-width:1280px;margin:0 auto;}'; 1886 css += '@media(min-width:640px){#di-consent-banner .di-cb__inner{flex-direction:row;}}'; 1887 css += '#di-consent-banner .di-cb__text{font-size:14px;color:var(--di-cb-text);margin:0;}'; 1888 css += '#di-consent-banner .di-cb__learn{color:var(--di-cb-primary);text-decoration:underline;transition:opacity .2s ease;}'; 1889 css += '#di-consent-banner .di-cb__learn:hover{opacity:.8;}'; 1890 css += '#di-consent-banner .di-cb__actions{display:flex;gap:8px!important;flex-shrink:0;}'; 1891 css += '@media(max-width:639px){#di-consent-banner .di-cb__actions{width:100%;flex-direction:column-reverse;}}'; 1892 css += '#di-consent-banner .di-cb__btn{cursor:pointer;font-size:16px;font-weight:500;padding:12px 24px;border-radius:var(--di-cb-radius);border:1px solid transparent;line-height:1;white-space:nowrap;transition:background .2s ease,color .2s ease,opacity .2s ease;}'; 1893 css += '#di-consent-banner .di-cb__btn--secondary{background:transparent;border-color:var(--di-cb-primary);color:var(--di-cb-primary);}'; 1894 css += '#di-consent-banner .di-cb__btn--secondary:hover{background:var(--di-cb-primary);color:#fff;}'; 1895 css += '#di-consent-banner .di-cb__btn--primary{background:var(--di-cb-primary);border-color:var(--di-cb-primary);color:#fff;}'; 1896 css += '#di-consent-banner .di-cb__btn--primary:hover{opacity:.88;}'; 1897 1898 css += '@keyframes di-cm-fadein{from{opacity:0}
1898to{opacity:1}}'; 1899 css += '@keyframes di-cm-slidein{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}'; 1900 css += '#di-cookie-pref-dialog{border:none;padding:0;margin:auto;background:#fff;border-radius:10px;box-shadow:0 8px 40px rgba(0,0,0,.22);max-width:480px;width:calc(100vw - 32px);box-sizing:border-box;overflow:hidden;font-family:var(--di-cb-font);animation:di-cm-slidein .2s ease;}'; 1901 css += '#di-cookie-pref-dialog::backdrop{background:rgba(0,0,0,.45);animation:di-cm-fadein .18s ease;}'; 1902 css += '#di-cookie-pref-dialog .di-cm__header{padding:22px 24px 0;}'; 1903 css += '#di-cookie-pref-dialog .di-cm__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}'; 1904 css += '#di-cookie-pref-dialog .di-cm__title{font-size:19px;font-weight:700;color:#111827;margin:0 0 8px;line-height:1.3;}'; 1905 css += '#di-cookie-pref-dialog .di-cm__close{background:none;border:none;cursor:pointer;color:#9ca3af;font-size:22px;line-height:1;padding:0;flex-shrink:0;margin-top:2px;transition:color .15s ease;}'; 1906 css += '#di-cookie-pref-dialog .di-cm__close:hover{color:#374151;}'; 1907 css += '#di-cookie-pref-dialog .di-cm__desc{font-size:13px;color:#6b7280;margin:0;line-height:1.55;padding:0 24px;}'; 1908 css += '#di-cookie-pref-dialog .di-cm__desc a{color:var(--di-cb-primary);text-decoration:underline;}'; 1909 css += '#di-cookie-pref-dialog .di-cm__rows{margin-top:16px;border-top:1px solid #f3f4f6;}'; 1910 css += '#di-cookie-pref-dialog .di-cm__item{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid #f3f4f6;}'; 1911 css += '#di-cookie-pref-dialog .di-cm__item-info{flex:1;}'; 1912 css += '#di-cookie-pref-dialog .di-cm__item-label{font-size:14px;font-weight:600;color:#111827;margin:0 0 4px;}'; 1913 css += '#di-cookie-pref-dialog .di-cm__item-desc{font-size:12px;color:#6b7280;margin:0;line-height:1.5;}'; 1914 css += '#di-cookie-pref-dialog .di-cm__toggle-wrap{flex-shrink:0;position:relative;width:44px;height:24px;margin-top:2px;}'; 1915 css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input{opacity:0;width:0;height:0;position:absolute;}'; 1916 css += '#di-cookie-pref-dialog .di-cm__toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:999px;cursor:pointer;transition:background .2s ease;}'; 1917 css += '#di-cookie-pref-dialog .di-cm__toggle-track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s ease;}'; 1918 css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input:checked+.di-cm__toggle-track{background:var(--di-cb-primary);}'; 1919 css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input:checked+.di-cm__toggle-track::after{transform:translateX(20px);}'; 1920 css += '#di-cookie-pref-dialog .di-cm__footer{display:flex;gap:8px;padding:16px 24px;flex-wrap:wrap;}'; 1921 css += '#di-cookie-pref-dialog .di-cm__btn{cursor:pointer;font-size:14px;font-weight:500;padding:10px 16px;border-radius:var(--di-cb-radius);border:1px solid transparent;line-height:1;white-space:nowrap;flex:1;transition:background .2s ease,color .2s ease,opacity .2s ease;}'; 1922 css += '#di-cookie-pref-dialog .di-cm__btn--cancel{background:transparent;border-color:#d1d5db;color:#374151;}'; 1923 css += '#di-cookie-pref-dialog .di-cm__btn--cancel:hover{background:#f9fafb;}'; 1924 css += '#di-cookie-pref-dialog .di-cm__btn--reject{background:transparent;border-color:var(--di-cb-primary);color:var(--di-cb-primary);}'; 1925 css += '#di-cookie-pref-dialog .di-cm__btn--reject:hover{background:var(--di-cb-primary);color:#fff;}'; 1926 css += '#di-cookie-pref-dialog .di-cm__btn--submit{background:var(--di-cb-primary);border-color:var(--di-cb-primary);color:#fff;}'; 1927 css += '#di-cookie-pref-dialog .di-cm__btn--submit:hover{opacity:.88;}'; 1928 css += '#di-cookie-pref-dialog .di-cm__policy{padding:0 24px 16px;font-size:11px;color:#9ca3af;}'; 1929 css += '#di-cookie-pref-dialog .di-cm__policy a{color:#9ca3af;text-decoration:underline;}'; 1930 css += '#di-cookie-pref-dialog .di-cm__policy a:hover{color:#6b7280;}'; 1931 1932 style.textContent = css; 1933 document.head.appendChild(style); 1934 } 1935 1936 // âââ modal âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1937 1938 function privacy_cb_createDialog() { 1939 1940 var dialog = privacy_cb_el('dialog', { id: 'di-cookie-pref-dialog' }); 1941 dialog.style.setProperty('--di-cb-primary', privacy_config.primaryColor); 1942 dialog.style.setProperty('--di-cb-radius', privacy_config.buttonRadius); 1943 dialog.style.setProperty('--di-cb-font', privacy_config.fontFamily); 1944 1945 dialog.addEventListener('click', function (e) { 1946 var r = dialog.getBoundingClientRect(); 1947 if (e.clientX < r.left || e.clientX > r.right || e.clientY < r.top || e.clientY > r.bottom) privacy_cb_removeModal(); 1948 }); 1949 dialog.addEventListener('cancel', function (e) { e.preventDefault(); privacy_cb_removeModal(); }); 1950 1951 var titleRow = privacy_cb_el('div', { className: 'di-cm__title-row' }); 1952 var titleEl = privacy_cb_el('p', { className: 'di-cm__title', textContent: privacy_config.modalTitle }); 1953 var closeBtn = privacy_cb_el('button', { className: 'di-cm__close', type: 'button', innerHTML: 'Ã' }); 1954 closeBtn.setAttribute('aria-label', 'Close'); 1955 closeBtn.addEventListener('click', privacy_cb_removeModal); 1956 titleRow.appendChild(titleEl); 1957 titleRow.appendChild(closeBtn); 1958 1959 var header = privacy_cb_el('div', { className: 'di-cm__header' }); 1960 header.appendChild(titleRow); 1961 1962 var desc = privacy_cb_el('p', { className: 'di-cm__desc' }); 1963 desc.appendChild(document.createTextNode(privacy_config.modalDesc + ' ')); 1964 desc.appendChild(privacy_cb_el('a', { href: privacy_config.privacyPolicyUrl, textContent: 'Privacy Policy' })); 1965 desc.appendChild(document.createTextNode('.')); 1966 1967 var rows = privacy_cb_el('div', { className: 'di-cm__rows' }); 1968 var toggleInputs = [];
1969 privacy_config.categories.forEach(function (cat) { 1970 var row = privacy_cb_el('div', { className: 'di-cm__item' }); 1971 var info = privacy_cb_el('div', { className: 'di-cm__item-info' }); 1972 var lbl = privacy_cb_el('p', { className: 'di-cm__item-label', textContent: cat.label }); 1973 var dsc = privacy_cb_el('p', { className: 'di-cm__item-desc', textContent: cat.description }); 1974 var wrap = privacy_cb_el('label', { className: 'di-cm__toggle-wrap' }); 1975 var input = privacy_cb_el('input', { type: 'checkbox', id: 'di-cm-' + cat.id + '-toggle', checked: cat.defaultOn !== false }); 1976 var track = privacy_cb_el('span', { className: 'di-cm__toggle-track' }); 1977 toggleInputs.push(input); 1978 info.appendChild(lbl); info.appendChild(dsc); 1979 wrap.appendChild(input); wrap.appendChild(track); 1980 row.appendChild(info); row.appendChild(wrap); 1981 rows.appendChild(row); 1982 }); 1983 1984 var footer = privacy_cb_el('div', { className: 'di-cm__footer' }); 1985 var cancelBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--cancel', type: 'button', textContent: privacy_config.cancelLabel }); 1986 var rejectBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--reject', type: 'button', textContent: privacy_config.rejectLabel }); 1987 rejectBtn.setAttribute('data-event', 'consent_reject'); 1988 var submitBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--submit', type: 'button', textContent: privacy_config.submitLabel }); 1989 function privacy_cb_updateSubmitEvent() { 1990 var anyOff = toggleInputs.some(function (t) { return !t.checked; }); 1991 submitBtn.setAttribute('data-event', anyOff ? 'consent_reject' : 'consent_accept'); 1992 } 1993 privacy_cb_updateSubmitEvent(); 1994 toggleInputs.forEach(function (t) { t.addEventListener('change', privacy_cb_updateSubmitEvent); }); 1995 cancelBtn.addEventListener('click', privacy_cb_removeModal); 1996 rejectBtn.addEventListener('click', privacy_cb_rejectAll); 1997 submitBtn.addEventListener('click', privacy_cb_savePreferences); 1998 footer.appendChild(cancelBtn); footer.appendChild(rejectBtn); footer.appendChild(submitBtn); 1999 2000 var policyFooter = privacy_cb_el('div', { className: 'di-cm__policy' }); 2001 policyFooter.appendChild(privacy_cb_el('a', { href: privacy_config.privacyPolicyUrl, textContent: 'Privacy Policy' })); 2002 2003 dialog.appendChild(header); 2004 dialog.appendChild(desc); 2005 dialog.appendChild(rows); 2006 dialog.appendChild(footer); 2007 dialog.appendChild(policyFooter); 2008 return dialog; 2009 } 2010 2011 function privacy_cb_openModal() { 2012 var dialog = document.getElementById('di-cookie-pref-dialog'); 2013 if (dialog) dialog.showModal(); 2014 } 2015 2016 // âââ banner ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2017 2018 function privacy_cb_createBanner() { 2019 2020 var wrap = privacy_cb_el('div', { id: 'di-consent-banner' }); 2021 var inner = privacy_cb_el('div', { className: 'di-cb__inner' }); 2022 var p = privacy_cb_el('p', { className: 'di-cb__text' }); 2023 2024 var match = privacy_config.bannerText.match(/^([\s\S]*?)\[([^\]]+)\]([\s\S]*)$/); 2025 if (match) { 2026 p.appendChild(document.createTextNode(match[1])); 2027 p.appendChild(privacy_cb_el('a', { className: 'di-cb__learn', href: privacy_config.privacyPolicyUrl, textContent: match[2] })); 2028 p.appendChild(document.createTextNode(match[3])); 2029 } else { 2030 p.textContent = privacy_config.bannerText; 2031 } 2032 2033 var actions = privacy_cb_el('div', { className: 'di-cb__actions' }); 2034 var secondary = privacy_config.variant === 'manage' 2035 ? privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--secondary', type: 'button', textContent: privacy_config.manageLabel }) 2036 : privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--secondary', type: 'button', textContent: privacy_config.declineLabel }); 2037 if (privacy_config.variant !== 'manage') secondary.setAttribute('data-event', 'consent_reject'); 2038 var acceptBtn = privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--primary', type: 'button', textContent: privacy_config.acceptLabel }); 2039 acceptBtn.setAttribute('data-event', 'consent_accept'); 2040 2041 secondary.addEventListener('click', privacy_config.variant === 'manage' ? privacy_cb_openModal : privacy_cb_reject); 2042 acceptBtn.addEventListener('click', privacy_cb_accept); 2043 2044 actions.appendChild(secondary); 2045 actions.appendChild(acceptBtn); 2046 inner.appendChild(p); 2047 inner.appendChild(actions); 2048 wrap.appendChild(inner); 2049 return wrap; 2050 } 2051 2052 // âââ init ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2053 2054 function privacy_cb_init() { 2055 2056 if (!document.body) { 2057 document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true }); 2058 return; 2059 } 2060 2061 privacy_config = Object.assign({}, privacy_config_defaults, window.privacy_config || {}); 2062 if (window.privacy_allow && window.privacy_allow.disabled === true) return; 2063 if (!window.DiPrivacy || window.DiPrivacy.consent !== 'pending' || window.DiPrivacy.gpcEnabled) { 2064 var signals = []; 2065 2066 if (navigator.globalPrivacyControl === true) { 2067 signals.push('navigator.globalPrivacyControl'); 2068 } 2069 if (window.matchMedia && window.matchMedia('(global-privacy-control: 1)').matches) { 2070 signals.push('matchMedia(global-privacy-control: 1)'); 2071 } 2072 var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; 2073 if (dnt === '1' || dnt === 'yes') { 2074 signals.push('doNotTrack (' + dnt + ')'); 2075 } 2076 2077 if (signals.length) { 2078 console.log('[Privacy] GPC/DNT active via: ' + signals.join(', ')); 2079 } else { 2080 console.log('[Privacy] No GPC/DNT signals active â early return triggered by DiPrivacy state (consent=' + 2081 (window.DiPrivacy && window.DiPrivacy.consent) + ', gpcEnabled=' + 2082 (window.DiPrivacy && window.DiPrivacy.gpcEnabled) + ')'); 2083 } 2084 return; 2085 } 2086 privacy_cb_injectStyles(); 2087 document.body.appendChild(privacy_cb_createDialog()); 2088 var banner = privacy_cb_createBanner(); 2089 banner.style.setProperty('--di-cb-primary', privacy_config.primaryColor); 2090 banner.style.setProperty('--di-cb-bg', privacy_config.bgColor); 2091 banner.style.setProperty('--di-cb-text', privacy_config.textColor); 2092 banner.style.setProperty('--di-cb-font', privacy_config.fontFamily); 2093 banner.style.setProperty('--di-cb-radius', privacy_config.buttonRadius); 2094 document.body.appendChild(banner); 2095 } 2096 2097 if (document.readyState === 'loading') { 2098 document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true }); 2099 } else if (document.body) { 2100 privacy_cb_init(); 2101 } else { 2102 document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true }); 2103 } 2104 2105 })(); 2106</script>
2106 2107<!--
2107<script>FontAwesomeConfig = {searchPseudoElements: true};</script>
2107 -->
2108<script> 2109 javascript_deferred.prototype[get_deferred_id()] = function() { 2110 $.getScript('https://www.googletagmanager.com/gtag/js?id=G-T926NYNK8M'); 2111 window.dataLayer = window.dataLayer || []; 2112 google_tracking.gtag('js', new Date()); 2113 google_tracking.gtag('config', 'G-T926NYNK8M'); 2114 } 2115 javascript_deferred.prototype[get_deferred_id()] = function() { 2116 $.getScript('https://go.doctorsinternet.com/embed/v7/174343173389941/11/987654321301115183'); 2117 } 2118</script>
2118 2119 2120 2121 <link rel="canonical" href="https://heartwisecardiology.com/"> 2122 2123 <meta name="description" content="Heartwise Cardiology offers comprehensive cardiac care in Murray Hill, NYC. Our board-certified cardiologists specialize in arrhythmias, heart failure and preventative cardiology."> 2124 <meta name="keywords" content="Cardiologist in Murray Hill, Cardiovascular Specialist Murray Hill New York, NYC Stress Testing, Murray Hill NY Cardiologist, Cholesterol Management 10016, Murray Hill Cardiology Office, Murray Hill NY Cardiologist, Murray Hill heart specialists, Arrhythmia 10016, Murray Hill electrophysiology, Murray Hill NYC Preventive Cardiology, Echocardiogram Murray Hill, Nuclear stress testing 10016, Pacemakers Doctor Murray Hill, Defibrillators 10016, Cardiologist near me"> 2125
2125<script type="application/ld+json">{"@context":{"@vocab":"https:\/\/schema.org\/"},"@graph":[{"@type":"LocalBusiness","parentOrganization":{"name":"Heartwise Cardiology"},"url":"https:\/\/fakedomain.com","mainEntityOfPage":"https:\/\/fakedomain.com","name":"Heartwise Cardiology","address":{"@type":"PostalAddress","streetAddress":"148 East 38th Street","addressLocality":"New York","addressRegion":"NY","postalCode":"10016","telephone":"(212) 679-4488"},"image":"https:\/\/fakedomain.com\/custom\/images\/logo.png","openingHours":["Mo 8:30-17:00","Tu 8:30-17:00","We 8:30-17:00","Th 8:30-17:00","Fr 8:30-17:00"],"paymentAccepted":"Cash, Credit Cards, Personal Checks","currenciesAccepted":"USD"}]}</script>
2125 2126 <style>body { 2127 border: 0px; 2128 padding: 0px; 2129 margin: 0px; 2130 font-family: "arial"; 2131 font-size: 16px; 2132 letter-spacing: 0.25px; 2133 word-spacing: 0.5px; 2134 font-weight: normal; 2135 background: white; 2136 box-sizing: border-box; 2137 width: 100%; 2138 height: 100%; 2139 -webkit-tap-highlight-color: rgba(0,0,0,0); 2140 text-rendering: optimizeSpeed !important; 2141 display: flex; 2142 flex-wrap: wrap; 2143} 2144body::after { 2145 content: ''; 2146 clear: both; 2147 visibility: hidden; 2148 display: block; 2149} 2150@media (max-width: 360px) { 2151 body { 2152 overflow-x: hidden; 2153 } 2154} 2155body > section { 2156 float: left; 2157 width: 100%; 2158 position: relative; 2159 z-index: 10; 2160 box-sizing: border-box; 2161 display: inline-block; 2162 flex-basis: 100%; 2163} 2164body a { 2165 text-decoration: none; 2166 color: inherit; 2167 transition: color 0.4s; 2168} 2169body a:hover { 2170 color: #0a82d2; 2171} 2172body a svg { 2173 pointer-events: none; 2174} 2175body p { 2176 margin: 1rem 0px; 2177 line-height: 1.6rem; 2178} 2179body img { 2180 max-width: 100%; 2181 max-height: 100%; 2182 image-rendering: -webkit-optimize-contrast; 2183} 2184body picture { 2185 max-width: 100%; 2186 max-height: 100%; 2187} 2188body h1, 2189body h2, 2190body h3, 2191body h4, 2192body h5, 2193body h6 { 2194 margin: 1rem 0px; 2195} 2196body h1 { 2197 font-size: 5rem; 2198} 2199body h2 { 2200 font-size: 4rem; 2201} 2202body h3 { 2203 font-size: 3rem; 2204} 2205body h4 { 2206 font-size: 2rem; 2207} 2208body h5, 2209body h6 { 2210 font-size: 1rem; 2211} 2212body sup { 2213 font-size: 0.75rem; 2214 line-height: 0px; 2215} 2216body li { 2217 line-height: 1.6rem; 2218} 2219body iframe { 2220 width: 100%; 2221 margin: 0px; 2222 padding: 0px; 2223 border: 0px; 2224} 2225body iframe:not([height]) { 2226 height: 100%; 2227} 2228body picture { 2229 max-width: 100%; 2230 max-height: 100%; 2231} 2232body .button { 2233 padding: 20px 40px; 2234 display: inline-block; 2235 cursor: pointer; 2236 transition: background 0.4s, color 0.4s; 2237 margin: 1rem 0px; 2238 text-align: center; 2239 line-height: 1.6rem; 2240 box-sizing: border-box; 2241} 2242@media (max-width: 640px) { 2243 body .button { 2244 padding: 20px; 2245 } 2246} 2247body .float-left { 2248 float: left; 2249} 2250body .float-right { 2251 float: right; 2252} 2253body .position-center { 2254 display: inline-block; 2255 position: relative; 2256 left: 50%; 2257 transform: translate(-50%); 2258} 2259body .clear { 2260 clear: both; 2261} 2262body .inline-block { 2263 display: inline-block; 2264} 2265body .flex { 2266 display: flex; 2267} 2268body .background_container { 2269 position: relative; 2270 overflow: hidden; 2271} 2272body .background_container .background_image { 2273 position: absolute; 2274 min-width: 100%; 2275 min-height: 100%; 2276 transform: translate(-50%,-50%); 2277 left: 50%; 2278 top: 50%; 2279 object-fit: cover; 2280 height: inherit; 2281 width: 100%; 2282 height: 100%; 2283} 2284body .background_container .background_image * { 2285 width: 100%; 2286 object-fit: cover; 2287 object-position: inherit; 2288 height: inherit; 2289} 2290body section[data-type="system-lightbox-container"] { 2291 position: fixed; 2292 width: 100%; 2293 height: 100%; 2294 top: 0px; 2295 left: 0px; 2296 z-index: 99999; 2297 display: flex; 2298 opacity: 0; 2299 pointer-events: none; 2300 transition: opacity 0.4s; 2301 -webkit-user-select: none; 2302 -moz-user-select: none; 2303 -ms-user-select: none; 2304 user-select: none; 2305} 2306body section[data-type="system-lightbox-container"].show { 2307 opacity: 1; 2308 pointer-events: initial; 2309} 2310body section[data-module="ad_tracking"] { 2311 display: none; 2312} 2313body form input[type="submit"] { 2314 display: none; 2315} 2316body form section[data-type="system-lightbox-content"] { 2317 display: none; 2318} 2319body form [data-hidden="1"] { 2320 display: none; 2321} 2322body form input[type="file"] { 2323 display: none; 2324} 2325body form div[data-container="file"] { 2326 margin: 5px; 2327 transition: opacity 0.4s; 2328} 2329body form div[data-container="file"].disabled { 2330 opacity: 0.2; 2331 pointer-events: none; 2332} 2333body form [data-container="file"] label { 2334 display: inline-block; 2335 cursor: pointer; 2336 line-height: 1.6rem; 2337 box-sizing: border-box; 2338 border-radius: 3px; 2339 transition: all .75s ease; 2340 background-size: 500% 500%; 2341 background-position: -2px -2px; 2342 padding: 20px 40px; 2343 color: white; 2344 position: relative; 2345} 2346body form [data-container="file"] label:hover { 2347 background-position: bottom right; 2348} 2349body form [data-container="file"] label .remove_file { 2350 position: absolute; 2351 top: -5px; 2352 left: -5px; 2353 width: 24px; 2354 height: 24px; 2355 background-color: white; 2356 border-radius: 50%; 2357 display: flex; 2358 justify-content: center; 2359 align-items: center; 2360 color: black; 2361 box-shadow: 1px 1px 5px rgba(0,0,0,0.4); 2362 font-size: 1rem; 2363} 2364body form div[data-group="file"] { 2365 display: flex; 2366 flex: 0 0 auto; 2367 width: calc(100% - 20px); 2368 margin: 10px 10px; 2369 flex-wrap: wrap; 2370 justify-content: center; 2371 user-select: none; 2372 transition: opacity 0.4s; 2373} 2374body form div[data-group="file"] > div { 2375 display: flex; 2376 flex-wrap: wrap; 2377 justify-content: center; 2378} 2379body form div[data-group="file"] .max_size_container { 2380 width: 100%; 2381 display: flex; 2382 justify-content: center; 2383 padding: 10px 20px; 2384 box-sizing: border-box; 2385 border: 3px solid #fbfbfb; 2386 border-radius: 3px; 2387 transition: background-color 0.4s, border 0.4s; 2388 margin-top: 20px; 2389} 2390body form div[data-group="file"] .max_size_container .size_divider { 2391 display: inline-block; 2392 margin: 0px 5px; 2393} 2394body form div[data-group="file"] .max_size_container .current_size_warning { 2395 display: none; 2396 margin-right: 10px; 2397 font-size: 24px; 2398} 2399body form div[data-group="file"] .max_size_container .current_size_ok { 2400 display: inline-block; 2401 margin-right: 10px; 2402 font-size: 24px; 2403} 2404body form div[data-group="file"] .too_large { 2405 color: #c40000; 2406 font-weight: bold; 2407 box-sizing: border-box; 2408 border: 3px solid #c40000; 2409 background-color: #c40000; 2410 color: white; 2411} 2412body form div[data-group="file"] .too_large .current_size_warning { 2413 display: inline-block; 2414} 2415body form div[data-group="file"] .too_large .current_size_ok { 2416 display: none; 2417} 2418body form [data-type='submit'].disabled { 2419 opacity: 0.2; 2420 pointer-events: none; 2421} 2422body form[action="https://maps.google.com/maps"] input[type="submit"] { 2423 display: initial; 2424 padding: 5px 10px; 2425 font-size: 1rem; 2426 box-sizing: border-box; 2427 border: 1px solid grey; 2428}
2429body form[action="https://maps.google.com/maps"] input#saddr { 2430 border: 1px solid grey; 2431 margin: 0px 10px; 2432 font-size: 1rem; 2433 padding: 5px 10px; 2434 box-sizing: border-box; 2435} 2436body .ui-widget.ui-widget-content { 2437 border: 0px; 2438} 2439body .ui-datepicker-flex { 2440 display: flex !important; 2441 background-color: rgba(0,0,0,0.95); 2442 position: fixed !important; 2443 top: 0px !important; 2444 left: 0px !important; 2445 z-index: 1000 !important; 2446 width: 100%; 2447 height: 100%; 2448 color: white; 2449 display: none; 2450 flex-direction: column; 2451 justify-content: center; 2452 align-items: center; 2453} 2454body .ui-datepicker-flex th, 2455body .ui-datepicker-flex td { 2456 width: 50px; 2457 height: 50px; 2458 box-sizing: border-box; 2459 text-align: center; 2460 font-size: 1.25rem; 2461 padding: 0px; 2462} 2463body .ui-datepicker-flex th a, 2464body .ui-datepicker-flex td a { 2465 padding: 0px; 2466} 2467@media (max-width: 320px) { 2468 body .ui-datepicker-flex th, 2469 body .ui-datepicker-flex td { 2470 width: 40px; 2471 height: 40px; 2472 font-size: 1rem; 2473 } 2474} 2475body .ui-datepicker-flex .ui-datepicker-header { 2476 display: flex; 2477 justify-content: center; 2478 width: 350px; 2479 border: 0px; 2480 border-bottom: 1px solid white; 2481 border-radius: 0px; 2482 background: initial; 2483 color: white; 2484} 2485body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-prev { 2486 order: 0; 2487} 2488body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-title { 2489 order: 1; 2490} 2491body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-next { 2492 order: 2; 2493} 2494body .ui-datepicker-flex .ui-widget-header .ui-state-hover { 2495 background: white; 2496 border-radius: 0px; 2497} 2498body .ui-datepicker-flex .ui-datepicker-calendar { 2499 width: 350px; 2500} 2501body .ui-datepicker-flex .ui-datepicker-calendar .ui-state-default { 2502 background: initial; 2503 color: white; 2504 border: 0px; 2505 text-align: center; 2506} 2507body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day { 2508 background-color: white; 2509 border-radius: 50%; 2510} 2511body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day a { 2512 color: black; 2513} 2514body .sidebar[data-sidebar="false"] { 2515 display: none; 2516} 2517body .sidebar[data-sidebar="true"] { 2518 flex-basis: 280px; 2519 width: 100%; 2520 flex-grow: 1; 2521 flex-shrink: 0; 2522 margin-left: 40px; 2523 box-sizing: border-box; 2524} 2525body .sidebar[data-sidebar="true"] img, 2526body .sidebar[data-sidebar="true"] picture { 2527 border-radius: 5px; 2528} 2529body .sidebar[data-sidebar="true"] > .label { 2530 font-size: 1.25rem; 2531 margin: 1.5rem 0px 0.5rem; 2532 border-bottom: 1px solid #ececec; 2533 padding-bottom: 0.5rem; 2534} 2535body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] { 2536 padding: 1rem 0rem; 2537} 2538body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] > div { 2539 line-height: 1.6rem; 2540} 2541body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] { 2542 padding: 1rem 0rem; 2543} 2544body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] > div { 2545 line-height: 1.6rem; 2546} 2547body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"], 2548body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] { 2549 display: flex; 2550} 2551body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div.title, 2552body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div.title { 2553 margin-bottom: 10px; 2554} 2555body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"], 2556body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] { 2557 display: flex; 2558 width: 50px; 2559 height: 50px; 2560} 2561body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"] a, 2562body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] a { 2563 font-size: 1.6rem; 2564 display: flex; 2565 width: 100%; 2566 height: 100%; 2567 justify-content: center; 2568 align-items: center; 2569} 2570body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"], 2571body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] { 2572 display: flex; 2573 flex-direction: row; 2574 flex-wrap: wrap; 2575 padding: 1rem 0px; 2576} 2577body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] > div.title, 2578body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] > div.title { 2579 margin-bottom: 10px; 2580} 2581body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row, 2582body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row { 2583 display: flex; 2584 flex: 1 0 100%; 2585} 2586body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2587body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2588 flex: 1 0 40%; 2589 line-height: 1.6rem; 2590} 2591body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2592body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2593 flex: 1 0 60%; 2594 text-align: right; 2595 line-height: 1.6rem; 2596} 2597body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] { 2598 padding: 1rem 20px; 2599} 2600body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2601 list-style: initial; 2602 margin: initial; 2603 padding: initial; 2604} 2605body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul li:not(:last-of-type) { 2606 margin-bottom: 10px; 2607} 2608body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] { 2609 padding: 1rem 20px; 2610} 2611body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul { 2612 list-style: initial; 2613 margin: initial; 2614 padding: initial; 2615} 2616body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul li:not(:last-of-type) { 2617 margin-bottom: 10px; 2618} 2619@media (max-width: 920px) { 2620 body .sidebar[data-sidebar="true"] { 2621 flex-basis: 100%; 2622 max-width: 100%; 2623 margin-left: 0px; 2624 margin-top: 1rem; 2625 justify-content: center; 2626 text-align: center; 2627 } 2628 body .sidebar[data-sidebar="true"] div[data-sidebar] { 2629 justify-content: center; 2630 } 2631 body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul, 2632 body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2633 list-style: none; 2634 } 2635 body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul, 2636 body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2637 list-style: none; 2638 } 2639 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2640 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2641 padding-right: 10px; 2642 box-sizing: border-box; 2643 flex: 1 0 50%; 2644 text-align: right; 2645 } 2646 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2647 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2648 padding-left: 10px; 2649 box-sizing: border-box; 2650 flex: 1 0 50%; 2651 text-align: left; 2652 } 2653} 2654@media (max-width: 920px) and (max-width: 360px) { 2655 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2656 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2657 flex: 1 0 40%; 2658 } 2659 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2660 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2661 flex: 1 0 60%; 2662 } 2663} 2664@media (max-width: 1080px) { 2665 body section[data-module="blog_content"] .content_container,
2666 body section[data-module="article_content"] .content_container { 2667 flex-wrap: wrap; 2668 } 2669} 2670@media (max-width: 920px) { 2671 body section[data-module="dynamic_content"] .content_container, 2672 body section[data-module="interior_content"] .content_container { 2673 flex-wrap: wrap; 2674 } 2675} 2676</style> 2677 <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link href="https://fonts.googleapis.com/css?family=Asap:400,700&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css?family=Quicksand&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css?family=Lato:400,700&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"></head> 2678 <body data-template-group="homepage"> 2679 <style>body { 2680 background: #ffffff; 2681 color: #3c3c3c; 2682 font-family: "Asap"; 2683} 2684body a { 2685 color: #333333; 2686} 2687body a:hover { 2688 color: #dac298; 2689} 2690body h1 { 2691 font-family: "Lato"; 2692} 2693body h2 { 2694 font-family: "Lato"; 2695} 2696body h3 { 2697 font-family: "Lato"; 2698} 2699body h1, 2700body h2, 2701body h3, 2702body h4, 2703body h5, 2704body h6 { 2705 color: #333333; 2706 font-weight: 300; 2707} 2708body input, 2709body textarea { 2710 font-family: "Asap"; 2711 border: 0px; 2712 border-radius: 0; 2713} 2714body input[type="text"], 2715body textarea { 2716 -webkit-appearance: none; 2717} 2718body .button { 2719 background: #333333; 2720 color: white; 2721 font-size: 1rem; 2722} 2723body .button:hover { 2724 background: #203647; 2725 color: white; 2726} 2727body .text_background { 2728 color: #ffffff; 2729} 2730body .text_primary { 2731 color: #333333; 2732} 2733body .text_secondary { 2734 color: #dac298; 2735} 2736body .text_tertiary { 2737 color: #faf7f2; 2738} 2739body .background_background { 2740 background: #ffffff; 2741} 2742body .background_primary { 2743 background: #333333; 2744} 2745body .background_secondary { 2746 background: #dac298; 2747} 2748body .background_tertiary { 2749 background: #faf7f2; 2750} 2751body .item_float_right { 2752 float: right; 2753 margin: 0 0 15px 15px; 2754} 2755@media (max-width: 480px) { 2756 body .item_float_right { 2757 float: none; 2758 margin: 0 auto 10px; 2759 } 2760} 2761body .item_float_left { 2762 float: left; 2763 margin: 0 15px 15px 0; 2764} 2765@media (max-width: 480px) { 2766 body .item_float_left { 2767 float: none; 2768 margin: 0 auto 10px; 2769 } 2770} 2771body .margin_center { 2772 margin: 0 auto; 2773} 2774body .margin_left { 2775 margin: 0 auto 0 0; 2776} 2777body .margin_right { 2778 margin: 0 0 0 auto; 2779} 2780body .margin_bottom { 2781 margin: auto 0 0 0; 2782} 2783body .margin_top { 2784 margin: 0 0 auto 0; 2785} 2786body .sys_flex_container { 2787 display: flex; 2788 gap: 20px; 2789} 2790body .sys_flex_container.flex_wrap { 2791 flex-wrap: wrap; 2792} 2793@media (max-width: 1024px) { 2794 body .sys_flex_container.flex_wrap_tablet { 2795 flex-wrap: wrap; 2796 } 2797} 2798@media (max-width: 768px) { 2799 body .sys_flex_container.flex_wrap_phablet { 2800 flex-wrap: wrap; 2801 } 2802} 2803@media (max-width: 480px) { 2804 body .sys_flex_container.flex_wrap_phone { 2805 flex-wrap: wrap; 2806 } 2807} 2808body .sys_flex_container.justify_center { 2809 justify-content: center; 2810} 2811body .sys_flex_container.justify_start { 2812 justify-content: flex-start; 2813} 2814body .sys_flex_container.justify_end { 2815 justify-content: flex-end; 2816} 2817body .sys_flex_container.justify_around { 2818 justify-content: space-around; 2819} 2820body .sys_flex_container.justify_between { 2821 justify-content: space-between; 2822} 2823body .sys_flex_container.align_center { 2824 align-items: center; 2825} 2826body .sys_flex_container.align_start { 2827 align-items: flex-start; 2828} 2829body .sys_flex_container.align_end { 2830 align-items: flex-end; 2831} 2832body .sys_flex_container.align_stretch { 2833 align-items: stretch; 2834} 2835body .sys_flex_container > .full_width { 2836 flex-basis: 100%; 2837} 2838@media (max-width: 1024px) { 2839 body .sys_flex_container > .full_width_tablet { 2840 flex-basis: 100%; 2841 } 2842} 2843@media (max-width: 768px) { 2844 body .sys_flex_container > .full_width_phablet { 2845 flex-basis: 100%; 2846 } 2847} 2848@media (max-width: 480px) { 2849 body .sys_flex_container > .full_width_phone { 2850 flex-basis: 100%; 2851 } 2852} 2853body .sys_flex_container.flex_column { 2854 flex-direction: column; 2855} 2856@media (max-width: 1024px) { 2857 body .sys_flex_container.flex_column_tablet { 2858 flex-direction: column; 2859 } 2860} 2861@media (max-width: 768px) { 2862 body .sys_flex_container.flex_column_phablet { 2863 flex-direction: column; 2864 } 2865} 2866@media (max-width: 480px) { 2867 body .sys_flex_container.flex_column_phone { 2868 flex-direction: column; 2869 } 2870} 2871body .sys_grid_container { 2872 display: grid; 2873 gap: 20px; 2874} 2875body .sys_grid_container.two_wide { 2876 grid-template-columns: repeat(2,1fr); 2877} 2878body .sys_grid_container.three_wide { 2879 grid-template-columns: repeat(3,1fr); 2880} 2881body .sys_grid_container.four_wide { 2882 grid-template-columns: repeat(4,1fr); 2883} 2884body .sys_grid_container.five_wide { 2885 grid-template-columns: repeat(5,1fr); 2886} 2887@media (max-width: 1024px) { 2888 body .sys_grid_container.one_wide_tablet { 2889 grid-template-columns: repeat(1,1fr); 2890 } 2891} 2892@media (max-width: 1024px) { 2893 body .sys_grid_container.two_wide_tablet { 2894 grid-template-columns: repeat(2,1fr); 2895 } 2896} 2897@media (max-width: 1024px) { 2898 body .sys_grid_container.three_wide_tablet { 2899 grid-template-columns: repeat(3,1fr); 2900 } 2901} 2902@media (max-width: 1024px) { 2903 body .sys_grid_container.four_wide_tablet { 2904 grid-template-columns: repeat(4,1fr); 2905 } 2906} 2907@media (max-width: 1024px) { 2908 body .sys_grid_container.five_wide_tablet { 2909 grid-template-columns: repeat(5,1fr); 2910 } 2911} 2912@media (max-width: 768px) { 2913 body .sys_grid_container.one_wide_phablet { 2914 grid-template-columns: repeat(1,1fr); 2915 } 2916} 2917@media (max-width: 768px) { 2918 body .sys_grid_container.two_wide_phablet { 2919 grid-template-columns: repeat(2,1fr); 2920 } 2921} 2922@media (max-width: 768px) { 2923 body .sys_grid_container.three_wide_phablet { 2924 grid-template-columns: repeat(3,1fr); 2925 } 2926} 2927@media (max-width: 768px) { 2928 body .sys_grid_container.four_wide_phablet { 2929 grid-template-columns: repeat(4,1fr); 2930 } 2931} 2932@media (max-width: 768px) { 2933 body .sys_grid_container.five_wide_phablet { 2934 grid-template-columns: repeat(5,1fr); 2935 } 2936} 2937@media (max-width: 480px) { 2938 body .sys_grid_container.one_wide_phone { 2939 grid-template-columns: repeat(1,1fr); 2940 } 2941} 2942@media (max-width: 480px) { 2943 body .sys_grid_container.two_wide_phone { 2944 grid-template-columns: repeat(2,1fr); 2945 } 2946} 2947@media (max-width: 480px) { 2948 body .sys_grid_container.three_wide_phone { 2949 grid-template-columns: repeat(3,1fr); 2950 } 2951} 2952@media (max-width: 480px) { 2953 body .sys_grid_container.four_wide_phone { 2954 grid-template-columns: repeat(4,1fr); 2955 } 2956} 2957@media (max-width: 480px) { 2958 body .sys_grid_container.five_wide_phone { 2959 grid-template-columns: repeat(5,1fr); 2960 } 2961} 2962body .sys_grid_container > .full_width { 2963 grid-column: 1/-1; 2964} 2965@media (max-width: 1024px) { 2966 body .sys_grid_container > .full_width_tablet { 2967 grid-column: 1/-1; 2968 } 2969} 2970@media (max-width: 768px) { 2971 body .sys_grid_container > .full_width_phablet { 2972 grid-column: 1/-1; 2973 } 2974} 2975@media (max-width: 480px) { 2976 body .sys_grid_container > .full_width_phone { 2977 grid-column: 1/-1; 2978 } 2979} 2980body .sys_flex_container.no_gap, 2981body .sys_grid_container.no_gap { 2982 gap: 0; 2983} 2984body .sys_flex_container.medium_gap, 2985body .sys_grid_container.medium_gap { 2986 gap: 40px; 2987} 2988body .sys_flex_container.large_gap, 2989body .sys_grid_container.large_gap { 2990 gap: 80px; 2991} 2992@media (max-width: 1024px) { 2993 body .sys_flex_container.no_gap_tablet, 2994 body .sys_grid_container.no_gap_tablet { 2995 gap: 0px; 2996 } 2997} 2998@media (max-width: 1024px) { 2999 body .sys_flex_container.small_gap_tablet, 3000 body .sys_grid_container.small_gap_tablet { 3001 gap: 20px; 3002 } 3003} 3004@media (max-width: 1024px) { 3005 body .sys_flex_container.medium_gap_tablet, 3006 body .sys_grid_container.medium_gap_tablet { 3007 gap: 40px; 3008 } 3009} 3010@media (max-width: 1024px) { 3011 body .sys_flex_container.large_gap_tablet, 3012 body .sys_grid_container.large_gap_tablet { 3013 gap: 80px; 3014 } 3015} 3016@media (max-width: 768px) { 3017 body .sys_flex_container.no_gap_phablet, 3018 body .sys_grid_container.no_gap_phablet { 3019 gap: 0px; 3020 } 3021} 3022@media (max-width: 768px) { 3023 body .sys_flex_container.small_gap_phablet, 3024 body .sys_grid_container.small_gap_phablet { 3025 gap: 20px; 3026 } 3027} 3028@media (max-width: 768px) { 3029 body .sys_flex_container.medium_gap_phablet, 3030 body .sys_grid_container.medium_gap_phablet { 3031 gap: 40px; 3032 } 3033} 3034@media (max-width: 768px) { 3035 body .sys_flex_container.large_gap_phablet, 3036 body .sys_grid_container.large_gap_phablet { 3037 gap: 80px; 3038 } 3039} 3040@media (max-width: 480px) { 3041 body .sys_flex_container.no_gap_phone, 3042 body .sys_grid_container.no_gap_phone { 3043 gap: 0px; 3044 } 3045} 3046@media (max-width: 480px) { 3047 body .sys_flex_container.small_gap_phone, 3048 body .sys_grid_container.small_gap_phone { 3049 gap: 20px; 3050 } 3051} 3052@media (max-width: 480px) { 3053 body .sys_flex_container.medium_gap_phone, 3054 body .sys_grid_container.medium_gap_phone { 3055 gap: 40px; 3056 } 3057} 3058@media (max-width: 480px) { 3059 body .sys_flex_container.large_gap_phone, 3060 body .sys_grid_container.large_gap_phone { 3061 gap: 80px; 3062 } 3063} 3064body div[data-type="locations-social"] { 3065 color: white; 3066} 3067body div[data-type="locations-social"] a:hover {
3068 color: inherit; 3069} 3070body div[data-type="locations-social"] > div { 3071 transition: background 0.2s; 3072} 3073body div[data-type="locations-social"] div[data-type="facebook"] { 3074 background: #4267b2; 3075} 3076body div[data-type="locations-social"] div[data-type="facebook"]:hover { 3077 background: #6283c5; 3078 color: #ffffff; 3079} 3080body div[data-type="locations-social"] div[data-type="twitter"] { 3081 background: #1da1f2; 3082} 3083body div[data-type="locations-social"] div[data-type="twitter"]:hover { 3084 background: #4db5f5; 3085 color: #ffffff; 3086} 3087body div[data-type="locations-social"] div[data-type="google"] { 3088 background: #db4437; 3089} 3090body div[data-type="locations-social"] div[data-type="google"]:hover { 3091 background: #e36c62; 3092 color: #ffffff; 3093} 3094body div[data-type="locations-social"] div[data-type="instagram"] { 3095 background: #833ab4; 3096} 3097body div[data-type="locations-social"] div[data-type="instagram"]:hover { 3098 background: #9c58c9; 3099 color: #ffffff; 3100} 3101body div[data-type="locations-social"] div[data-type="blog"] { 3102 background: #833ab4; 3103} 3104body div[data-type="locations-social"] div[data-type="blog"]:hover { 3105 background: #9c58c9; 3106 color: #ffffff; 3107} 3108body .sidebar[data-sidebar="true"] > .label { 3109 font-size: 1.5rem; 3110 margin: 1.5rem 0px 0.5rem; 3111 border-bottom: 1px solid #333333; 3112 padding-bottom: 0.5rem; 3113 font-weight: bold; 3114 color: #333333; 3115 font-family: "Lato"; 3116} 3117body :-moz-placeholder { 3118 color: #3c3c3c; 3119 font-family: "Asap"; 3120 text-decoration: none; 3121 font-weight: normal; 3122 opacity: 0.8; 3123} 3124body ::-moz-placeholder { 3125 color: #3c3c3c; 3126 font-family: "Asap"; 3127 text-decoration: none; 3128 font-weight: normal; 3129 opacity: 0.8; 3130} 3131body ::-webkit-input-placeholder { 3132 color: #3c3c3c; 3133 font-family: "Asap"; 3134 text-decoration: none; 3135 font-weight: normal; 3136 opacity: 0.8; 3137} 3138body :-ms-input-placeholder { 3139 color: #3c3c3c; 3140 font-family: "Asap"; 3141 text-decoration: none; 3142 font-weight: normal; 3143 opacity: 0.8; 3144} 3145body form * { 3146 font-family: "Asap"; 3147 text-decoration: none; 3148 font-weight: normal; 3149 font-size: 1rem; 3150} 3151body form div[data-container="file"] { 3152 margin: 5px; 3153 transition: opacity 0.4s; 3154} 3155body form div[data-container="file"]:last-of-type label { 3156 background-image: linear-gradient(to bottom right,#333333 25%,#dac298 75%); 3157} 3158body form [data-container="file"] label { 3159 background-image: linear-gradient(to bottom right,#dac298 25%,#333333 75%); 3160} 3161body div[data-micro-template="accordion_container"] { 3162 width: 100%; 3163 max-width: 100%; 3164 font-family: "Asap"; 3165} 3166body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title { 3167 display: flex; 3168 justify-content: space-between; 3169 align-items: center; 3170 color: #333333; 3171 cursor: pointer; 3172 border-bottom: 1px solid #3c3c3c; 3173 padding-bottom: 0px; 3174} 3175body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3176body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3177 font-size: 1.5rem; 3178 font-weight: 400; 3179} 3180@media (max-width: 1024px) { 3181 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3182 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3183 font-size: 1.2rem; 3184 } 3185} 3186@media (max-width: 480px) { 3187 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3188 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3189 font-size: 1.1rem; 3190 } 3191} 3192body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active { 3193 border-color: white; 3194 color: white; 3195} 3196body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active .accordion_title_text { 3197 color: white; 3198} 3199body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_body { 3200 display: none; 3201 padding: 20px 0; 3202 line-height: 1.35em; 3203 text-align: left; 3204} 3205body section[data-type="system-lightbox-container"] .close-icon { 3206 background-color: white; 3207 border-radius: 50%; 3208 box-sizing: border-box; 3209 border: 5px solid white; 3210 display: flex; 3211 justify-content: center; 3212 align-items: center; 3213 top: -10px; 3214 right: -10px; 3215} 3216body section[data-type="system-lightbox-container"] .next-icon { 3217 background-color: white; 3218 border-radius: 50%; 3219 box-sizing: border-box; 3220 border: 4px solid white; 3221 display: flex; 3222 justify-content: center; 3223 align-items: center; 3224 position: absolute; 3225 top: 50%; 3226 right: 0px; 3227 font-size: 2rem; 3228 transform: translate(10px,-50%); 3229 cursor: pointer; 3230} 3231body section[data-type="system-lightbox-container"] .prev-icon { 3232 background-color: white; 3233 border-radius: 50%; 3234 box-sizing: border-box; 3235 border: 4px solid white; 3236 display: flex; 3237 justify-content: center; 3238 align-items: center; 3239 position: absolute; 3240 top: 50%; 3241 left: 0px; 3242 font-size: 2rem; 3243 transform: translate(-10px,-50%); 3244 cursor: pointer; 3245} 3246body section[data-type="system-lightbox-container"] .gallery_grid_modal { 3247 display: none; 3248 position: fixed; 3249 height: 100vh; 3250 width: 100%; 3251 top: 0; 3252 left: 0; 3253 background-color: rgba(0,0,0,0.6); 3254 justify-content: center; 3255 align-items: center; 3256 opacity: 0; 3257 transition: all 0.4s ease-in-out; 3258 z-index: 99999999; 3259} 3260body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container { 3261 cursor: pointer; 3262 margin: 5%; 3263 position: relative; 3264} 3265body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container img { 3266 max-height: 80vh; 3267} 3268body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content { 3269 display: flex; 3270 flex-direction: column; 3271} 3272body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button { 3273 order: 5; 3274 margin: 0; 3275} 3276body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow { 3277 position: absolute; 3278 top: 50%; 3279} 3280body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow svg {
3281 color: #fff; 3282 font-size: 36px; 3283 transition: all 0.2s; 3284} 3285body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow:hover svg { 3286 transform: scale(1.2); 3287} 3288body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3289 left: -50px; 3290} 3291body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3292 right: -50px; 3293} 3294body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3295 position: absolute; 3296 bottom: 100px; 3297 width: 100%; 3298 text-align: center; 3299 background: rgba(0,0,0,0.6); 3300} 3301body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text { 3302 color: #fff; 3303 font-size: 1.25em; 3304 margin: 0; 3305 font-family: "Asap"; 3306 padding: 15px 0; 3307} 3308body section[data-type="system-lightbox-container"] .gallery_grid_modal.show { 3309 display: flex; 3310 opacity: 1; 3311} 3312@media (max-width: 768px) { 3313 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3314 bottom: 75px; 3315 } 3316 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text { 3317 font-size: 1em; 3318 padding: 5px; 3319 } 3320 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3321 left: -40px; 3322 } 3323 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3324 right: -40px; 3325 } 3326 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button { 3327 padding: 10px; 3328 } 3329} 3330@media (max-width: 480px) { 3331 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3332 bottom: 50px; 3333 } 3334 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow { 3335 bottom: -40px; 3336 top: initial; 3337 } 3338 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3339 left: 20%; 3340 } 3341 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3342 right: 20%; 3343 } 3344} 3345body .responsive_video { 3346 padding-bottom: 56.25%; 3347 position: relative; 3348} 3349body .responsive_video iframe, 3350body .responsive_video video { 3351 position: absolute; 3352 height: 100%; 3353 width: 100%; 3354 top: 0; 3355 left: 0; 3356} 3357body .ul_column { 3358 column-count: 2; 3359} 3360@media (max-width: 768px) { 3361 body .ul_column { 3362 column-count: 2; 3363 } 3364} 3365@media (max-width: 480px) { 3366 body .ul_column { 3367 column-count: 1; 3368 } 3369} 3370body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3371 display: grid; 3372 grid-template-columns: repeat(4,1fr); 3373 gap: 40px 20px; 3374} 3375@media (max-width: 1366px) { 3376 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3377 grid-template-columns: repeat(3,1fr); 3378 } 3379} 3380@media (max-width: 768px) { 3381 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3382 grid-template-columns: repeat(2,1fr); 3383 } 3384} 3385@media (max-width: 480px) { 3386 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3387 grid-template-columns: repeat(1,1fr); 3388 gap: 20px 10px; 3389 } 3390} 3391@media (max-width: 480px) { 3392 body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .image { 3393 display: none; 3394 } 3395} 3396body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text { 3397 text-align: center; 3398} 3399@media (max-width: 480px) { 3400 body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text { 3401 text-align: left; 3402 } 3403} 3404body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text p { 3405 margin: 0; 3406} 3407body section .content_container .content .invisalign_video_container { 3408 display: grid; 3409 grid-template-columns: repeat(2,1fr); 3410 gap: 40px; 3411} 3412@media (max-width: 480px) { 3413 body section .content_container .content .invisalign_video_container { 3414 grid-template-columns: repeat(1,1fr); 3415 gap: 20px; 3416 } 3417} 3418body section .content_container .content .invisalign_video_container .invisalign_list .text { 3419 text-align: center; 3420} 3421body section .content_container .content .invisalign_video_container .invisalign_list .text p { 3422 color: #dac298; 3423 font-size: 1.2rem; 3424} 3425@media (max-width: 480px) { 3426 body section .content_container .content .invisalign_video_container .invisalign_list .text p { 3427 font-size: 1.1rem; 3428 } 3429} 3430body section .content_container .content .service_video_container { 3431 margin: 60px auto; 3432 display: flex; 3433 border-bottom: 10px solid #dac298; 3434 box-shadow: 6px 5px 8px 0px #bfbfbf; 3435} 3436@media (max-width: 768px) { 3437 body section .content_container .content .service_video_container { 3438 flex-direction: column; 3439 } 3440} 3441body section .content_container .content .service_video_container > div { 3442 flex: 1; 3443} 3444body section .content_container .content .service_video_container .service_video_text { 3445 padding: 0 40px; 3446 background: #333333; 3447 box-sizing: border-box; 3448 display: flex; 3449 justify-content: center; 3450 align-items: center; 3451} 3452@media (max-width: 640px) { 3453 body section .content_container .content .service_video_container .service_video_text { 3454 padding: 0 20px; 3455 } 3456} 3457body section .content_container .content .service_video_container .service_video_text h4 { 3458 color: #fff; 3459 font-size: 1rem; 3460 font-style: italic; 3461 line-height: 1.4em; 3462 font-weight: 400; 3463} 3464body section .content_container .content .service_testimonial_videos { 3465 background: #333333; 3466 padding: 20px 40px; 3467 border-bottom: 10px solid #dac298; 3468 text-align: center; 3469 box-shadow: 6px 5px 8px 0px #bfbfbf; 3470} 3471@media (max-width: 640px) { 3472 body section .content_container .content .service_testimonial_videos { 3473 padding: 20px; 3474 } 3475} 3476body section .content_container .content .service_testimonial_videos .secondary_divider { 3477 display: inline-block; 3478 margin: 0 auto; 3479 height: 3px; 3480 background: #dac298; 3481 width: 150px; 3482} 3483body section .content_container .content .service_testimonial_videos h2 { 3484 color: #fff; 3485 font-size: 2rem; 3486 margin-bottom: 10px; 3487 padding: 0; 3488 font-weight: 400; 3489} 3490body section .content_container .content .service_testimonial_videos h2.text_center { 3491 text-align: center; 3492} 3493body section .content_container .content .service_testimonial_videos p { 3494 color: #fff; 3495} 3496body section .content_container .content .service_testimonial_videos .testimonial_videos_container { 3497 display: flex; 3498 flex-wrap: wrap; 3499 justify-content: space-between; 3500 text-align: center; 3501} 3502body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video { 3503 flex-basis: 48%; 3504 margin: 20px 0; 3505} 3506@media (max-width: 550px) { 3507 body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video { 3508 flex-basis: 100%; 3509 } 3510} 3511body section .content_container .content .alternating_service_container { 3512 margin-top: 20px; 3513} 3514body section .content_container .content .alternating_service_container .alternating_service { 3515 display: flex; 3516 justify-content: space-between; 3517 align-items: center; 3518 margin-bottom: 30px; 3519 flex-wrap: wrap; 3520} 3521body section .content_container .content .alternating_service_container .alternating_service .image, 3522body section .content_container .content .alternating_service_container .alternating_service .text { 3523 flex-basis: 48%; 3524} 3525@media (max-width: 768px) { 3526 body section .content_container .content .alternating_service_container .alternating_service .image, 3527 body section .content_container .content .alternating_service_container .alternating_service .text { 3528 flex-basis: 100%; 3529 } 3530} 3531body section .content_container .content .alternating_service_container .alternating_service .text h3 { 3532 font-size: 1.4rem; 3533} 3534@media (max-width: 768px) { 3535 body section .content_container .content .alternating_service_container .alternating_service .image { 3536 text-align: center; 3537 } 3538} 3539body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image { 3540 order: 2; 3541 text-align: right; 3542} 3543@media (max-width: 768px) { 3544 body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image { 3545 text-align: center; 3546 order: initial; 3547 } 3548} 3549</style><style></style><style>.section_1 { 3550 background-color: #333333; 3551 color: white; 3552} 3553.section_1 .content_container .content .banner_container { 3554 height: 60px; 3555 display: flex; 3556 justify-content: space-between; 3557 margin: 0 50px; 3558 padding: 10px 0px; 3559 align-items: center; 3560} 3561.section_1 .content_container .content .banner_container .left { 3562 display: flex; 3563 flex-direction: column; 3564} 3565.section_1 .content_container .content .banner_container .left .address { 3566 font-size: 1.3rem; 3567 line-height: 1.5rem; 3568 letter-spacing: 1px; 3569 font-family: "Lato"; 3570} 3571.section_1 .content_container .content .banner_container .left .socials { 3572 line-height: 1.3rem; 3573 display: flex; 3574 margin-top: 5px; 3575} 3576.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] { 3577 font-size: 1.2rem; 3578 margin: 0 5px; 3579} 3580.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] a { 3581 color: #ffffff; 3582} 3583.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type { 3584 margin-left: 0; 3585} 3586.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type { 3587 margin-right: 0; 3588} 3589.section_1 .content_container .content .banner_container .right { 3590 display: flex; 3591} 3592.section_1 .content_container .content .banner_container .right .phone { 3593 display: flex; 3594 flex-direction: column; 3595 font-family: "Lato"; 3596} 3597.section_1 .content_container .content .banner_container .right .phone .number { 3598 font-size: 1.8rem; 3599 color: #ffffff; 3600} 3601.section_1 .content_container .content .banner_container .right .phone .number:hover {
3602 color: #dac298; 3603} 3604.section_1 .content_container .content .banner_container .right .tracking { 3605 margin-left: 10px; 3606 display: flex; 3607 font-family: "Lato"; 3608 flex-direction: column; 3609} 3610.section_1 .content_container .content .banner_container .right .tracking .number { 3611 font-size: 1.8rem; 3612 color: white; 3613} 3614.section_1 .content_container .content .banner_container .right .tracking .number:hover { 3615 color: #dac298; 3616} 3617.section_1 .content_container .content .banner_container .right .tracking[data-show="false"] { 3618 display: none; 3619} 3620@media (max-width: 1024px) { 3621 .section_1 .content_container .content .banner_container { 3622 height: 80px; 3623 margin: 0 30px; 3624 } 3625 .section_1 .content_container .content .banner_container .left .address { 3626 display: none; 3627 } 3628 .section_1 .content_container .content .banner_container .left .socials { 3629 margin-top: 0px; 3630 } 3631 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] { 3632 font-size: 1.6rem; 3633 margin: 0 5px; 3634 } 3635 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type { 3636 margin-left: 0; 3637 } 3638 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type { 3639 margin-right: 0; 3640 } 3641 .section_1 .content_container .content .banner_container .right .phone .number { 3642 font-size: 1.4rem; 3643 } 3644 .section_1 .content_container .content .banner_container .right .tracking .number { 3645 font-size: 1.4rem; 3646 } 3647} 3648@media (max-width: 768px) { 3649 .section_1 .content_container .content .banner_container { 3650 height: 80px; 3651 margin: 0 30px; 3652 } 3653 .section_1 .content_container .content .banner_container .left .address { 3654 display: none; 3655 } 3656 .section_1 .content_container .content .banner_container .left .socials { 3657 margin-top: 0px; 3658 } 3659 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] { 3660 font-size: 1.5rem; 3661 margin: 0 5px; 3662 } 3663 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type { 3664 margin-left: 0; 3665 } 3666 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type { 3667 margin-right: 0; 3668 } 3669 .section_1 .content_container .content .banner_container .right .phone .label { 3670 font-size: .85rem; 3671 } 3672 .section_1 .content_container .content .banner_container .right .phone .number { 3673 font-size: 1.3rem; 3674 } 3675 .section_1 .content_container .content .banner_container .right .tracking .label { 3676 font-size: .85rem; 3677 } 3678 .section_1 .content_container .content .banner_container .right .tracking .number { 3679 font-size: 1.3rem; 3680 } 3681} 3682@media (max-width: 600px) { 3683 .section_1 .content_container .content .banner_container { 3684 height: 80px; 3685 margin: 0 10px; 3686 flex-direction: column; 3687 } 3688 .section_1 .content_container .content .banner_container .left .socials { 3689 margin-top: 5px; 3690 } 3691 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] { 3692 font-size: 1.2rem; 3693 margin: 0 5px; 3694 } 3695 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type { 3696 margin-left: 0; 3697 } 3698 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type { 3699 margin-right: 0; 3700 } 3701 .section_1 .content_container .content .banner_container .right .phone .label { 3702 font-size: .85rem; 3703 } 3704 .section_1 .content_container .content .banner_container .right .phone .number { 3705 font-size: 1.3rem; 3706 } 3707 .section_1 .content_container .content .banner_container .right .tracking .label { 3708 font-size: .85rem; 3709 } 3710 .section_1 .content_container .content .banner_container .right .tracking .number { 3711 font-size: 1.3rem; 3712 } 3713} 3714@media (max-width: 425px) { 3715 .section_1 .content_container .content .banner_container { 3716 height: auto; 3717 } 3718 .section_1 .content_container .content .banner_container .left .socials { 3719 margin-top: 3px; 3720 } 3721 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] { 3722 font-size: 1.2rem; 3723 margin: 0 5px 5px; 3724 } 3725 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type { 3726 margin-left: 0; 3727 } 3728 .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type { 3729 margin-right: 0; 3730 } 3731 .section_1 .content_container .content .banner_container .right { 3732 flex-direction: column; 3733 } 3734 .section_1 .content_container .content .banner_container .right .phone { 3735 margin: 5px 0; 3736 text-align: center; 3737 } 3738 .section_1 .content_container .content .banner_container .right .phone .label { 3739 font-size: .8rem; 3740 } 3741 .section_1 .content_container .content .banner_container .right .phone .number { 3742 font-size: 1.1rem; 3743 } 3744 .section_1 .content_container .content .banner_container .right .tracking { 3745 margin: 5px 0; 3746 text-align: center; 3747 margin-left: 0px; 3748 } 3749 .section_1 .content_container .content .banner_container .right .tracking .label { 3750 font-size: .8rem; 3751 } 3752 .section_1 .content_container .content .banner_container .right .tracking .number { 3753 font-size: 1.1rem; 3754 } 3755} 3756</style> 3757<section class="section_1" data-module="html_module" data-html="/custom/modules/tracking_banner/mod.html" data-json="/custom/modules/tracking_banner/mod.json" data-page="" data-full-path="/"> 3758 <div class="content_container"> 3759 <div class="content"> 3760 3761 <div class="banner_container"> 3762 <div class="left"> 3763 <div class="address"> 3764 148 East 38th Street<span>, </span> 3765 New York, NY 10016 3766 </div> 3767 <div class="socials"> 3768 <div data-micro-template="social_icons"> 3769 <a href="https://www.facebook.com/profile.php?id=61575751475062#" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 3770</div><div data-micro-template="social_icons"> 3771 <a href="https://www.google.com/maps/place/Heartwise+Cardiology/@40.7485252,-73.9773268,21z/data=!4m6!3m5!1s0x89c25906a6b9e5fb:0x3483795b4d46e516!8m2!3d40.7484683!4d-73.9772785!16s%2Fg%2F1tsyqpvv?entry=ttu&g_ep=EgoyMDI1MDMzMS4wIKXMDSoJLDEwMjExNjQwSAFQAw%3D%3D" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 3772</div><div data-micro-template="social_icons"> 3773 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 3774</div> 3775 </div> 3776 </div> 3777 <div class="right"> 3778 <div class="phone"> 3779 <div class="label">Existing Patients</div> 3780 <a href="tel:+12126794488" class="number tel_12126794488" aria-label="(212) 679-4488" data-click-call="0">(212) 679-4488 </a> 3781 </div> 3782 <div data-show="true" class="tracking"> 3783 <div class="label">New Patients</div> 3784 <a href="tel:+12124012665" class="number tel_12124012665" aria-label="(212) 401-2665" data-click-call="0">(212) 401-2665 </a> 3785 </div> 3786 </div> 3787</div> 3788 3789 </div> 3790 <div class="sidebar" data-sidebar="false"> 3791 3792 </div> 3793 </div> 3794</section><style>.section_2 { 3795 background-color: #ffffff; 3796 height: 100px; 3797 position: relative; 3798 left: 0px; 3799 top: 0px; 3800 z-index: 500; 3801 transition: height 0.2s, background-color 0.4s; 3802 display: flex; 3803 text-transform: uppercase; 3804 align-items: center; 3805 justify-content: center; 3806 padding: 0px 40px; 3807} 3808.section_2 .content_container { 3809 display: flex; 3810 align-items: center; 3811 flex: 0 0 100%; 3812 max-width: 1370px; 3813} 3814.section_2 .content_container .logo { 3815 flex: 0 0 auto; 3816 line-height: 0px; 3817 z-index: 300; 3818} 3819.section_2 .content_container .logo img, 3820.section_2 .content_container .logo picture { 3821 max-height: 100px; 3822 transition: max-height 0.2s; 3823 z-index: 20; 3824 position: relative; 3825} 3826@media (max-width: 425px) { 3827 .section_2 .content_container .logo img, 3828 .section_2 .content_container .logo picture { 3829 height: 85px; 3830 width: 128px; 3831 } 3832} 3833.section_2 .content_container .detail_container .social { 3834 position: absolute; 3835 top: 20px; 3836 left: 20px; 3837 color: white; 3838} 3839.section_2 .content_container .detail_container .social a:hover {
3840 color: #30516a; 3841} 3842.section_2 .content_container .detail_container .social a:not(:last-of-type) { 3843 display: inline-block; 3844 margin-right: 10px; 3845} 3846.section_2 .content_container .detail_container .contact { 3847 position: absolute; 3848 top: 20px; 3849 right: 20px; 3850 color: white; 3851 font-family: "Asap"; 3852} 3853.section_2 .content_container .detail_container .contact svg { 3854 position: absolute; 3855 left: -20px; 3856} 3857.section_2 .content_container .detail_container .contact a:hover { 3858 color: #30516a; 3859} 3860.section_2 .content_container nav { 3861 display: flex; 3862 margin: 0px; 3863 z-index: 100; 3864 width: 100%; 3865 text-align: right; 3866 box-sizing: border-box; 3867 color: black; 3868 align-items: center; 3869 justify-content: space-between; 3870 height: 100px; 3871 margin-left: auto; 3872 margin-right: auto; 3873 font-size: .95rem; 3874 font-family: "Asap"; 3875} 3876.section_2 .content_container nav a:hover { 3877 color: #30516a; 3878} 3879.section_2 .content_container nav .mobile_menu { 3880 position: absolute; 3881 display: none; 3882 padding-right: inherit; 3883 font-size: 2rem; 3884 cursor: pointer; 3885} 3886.section_2 .content_container nav ul { 3887 padding: 0px; 3888 margin: 0px; 3889} 3890.section_2 .content_container nav ul li { 3891 list-style-type: none; 3892 letter-spacing: 1.5px; 3893} 3894.section_2 .content_container nav ul a { 3895 display: inline-block; 3896} 3897.section_2 .content_container nav ul ul { 3898 display: none; 3899 position: absolute; 3900 padding: 0px; 3901 flex-direction: column; 3902} 3903.section_2 .content_container nav ul > li li { 3904 font-family: "Asap"; 3905} 3906.section_2 .content_container nav ul > li li a { 3907 color: white; 3908 line-height: 1.2rem; 3909} 3910.section_2 .content_container nav ul > li li a:hover { 3911 color: #333333; 3912} 3913.section_2 .content_container nav ul > li > ul.group_container { 3914 top: 100px; 3915 box-sizing: border-box; 3916 flex-direction: row; 3917 flex-wrap: wrap; 3918 max-height: 500px; 3919 min-width: 1200px; 3920 max-width: 1200px; 3921 justify-content: center; 3922 background-color: #dac298; 3923 width: initial; 3924 flex-flow: column-wrap; 3925} 3926.section_2 .content_container nav ul > li > ul.group_container h3 { 3927 font-size: 0.9rem; 3928 font-weight: bold; 3929 margin: 0px 0px 0.5rem; 3930 color: #333333; 3931 font-family: "Asap"; 3932 text-transform: uppercase; 3933 display: none; 3934} 3935.section_2 .content_container nav ul > li > ul.group_container > li.large_list { 3936 min-width: 580px; 3937} 3938.section_2 .content_container nav ul > li > ul.group_container > li.very_large_list { 3939 min-width: 860px; 3940} 3941.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(1) { 3942 background-color: rgba(32,32,32,0); 3943} 3944.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(2) { 3945 background-color: rgba(64,64,64,0); 3946} 3947.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(3) { 3948 background-color: rgba(64,64,64,0); 3949} 3950.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(3) { 3951 background-color: rgba(64,64,64,0); 3952} 3953.section_2 .content_container nav ul > li > ul.group_container > li { 3954 min-width: 400px; 3955 padding-top: 20px; 3956 padding-bottom: 20px; 3957 width: 140px; 3958} 3959.section_2 .content_container nav ul > li > ul.group_container > li > ul { 3960 position: relative; 3961 display: block; 3962 background: none; 3963 margin-bottom: 0.5rem; 3964 padding: 0px 0px 0px 20px; 3965 display: flex; 3966 flex-direction: row; 3967 flex-wrap: wrap; 3968} 3969.section_2 .content_container nav ul > li > ul.group_container > li > ul > li { 3970 line-height: 40px; 3971 text-align: left; 3972 flex-basis: 260px; 3973 margin-right: 20px; 3974} 3975.section_2 .content_container nav ul > li > ul.group_container > li > ul > li:first-of-type { 3976 border-bottom: none; 3977 flex-basis: 100%; 3978} 3979.section_2 .content_container nav ul > li > ul.group_container > li > ul > li:not(:first-of-type) { 3980 border-bottom: 1px solid white; 3981} 3982.section_2 .content_container nav > ul { 3983 margin-left: auto; 3984 display: flex; 3985 height: 100%; 3986} 3987.section_2 .content_container nav > ul > li:last-of-type { 3988 background-color: #30516a; 3989 color: #ffffff; 3990} 3991.section_2 .content_container nav > ul > li:last-of-type a { 3992 color: #ffffff; 3993} 3994.section_2 .content_container nav > ul > li:last-of-type a:hover { 3995 color: #dac298; 3996} 3997.section_2 .content_container nav > ul > li { 3998 display: flex; 3999 justify-content: center; 4000 align-items: center; 4001 text-align: center; 4002 padding: 0px 10px; 4003 font-family: "Asap"; 4004} 4005.section_2 .content_container nav > ul > li > ul { 4006 left: 50%; 4007 top: 100px; 4008 transform: translate(-50%); 4009 background-image: linear-gradient(#dac298,rgba(218,194,152,0.9)); 4010 width: 100%; 4011 min-width: 290px; 4012} 4013.section_2 .content_container nav > ul > li > ul > li { 4014 line-height: 40px; 4015 width: 100%; 4016 text-align: center; 4017} 4018.section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) { 4019 position: absolute; 4020 left: 100%; 4021 transform: translate(0px,-40px); 4022 background-color: rgba(60,60,60,0.9); 4023} 4024.section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) > li { 4025 line-height: 40px; 4026 width: 140px; 4027} 4028@media (max-width: 1280px) { 4029 .section_2 .content_container nav { 4030 max-width: 100%; 4031 padding: 0px 20px; 4032 box-sizing: border-box; 4033 margin: 20px 0px 0px 0px; 4034 height: initial; 4035 } 4036 .section_2 .content_container nav .mobile_menu { 4037 display: inline-block; 4038 top: 50%; 4039 right: 0px; 4040 transform: translate(0px,-50%); 4041 padding-left: inherit; 4042 margin-right: 20px; 4043 } 4044 .section_2 .content_container nav ul { 4045 background: #333333; 4046 } 4047 .section_2 .content_container nav ul > li { 4048 box-sizing: border-box; 4049 } 4050 .section_2 .content_container nav ul > li > ul.group_container { 4051 max-height: initial; 4052 } 4053 .section_2 .content_container nav ul ul { 4054 position: relative; 4055 transform: initial; 4056 } 4057 .section_2 .content_container nav > ul { 4058 position: absolute; 4059 left: 0px; 4060 display: none; 4061 width: 100%; 4062 top: 100px; 4063 text-align: center; 4064 box-sizing: border-box; 4065 color: white; 4066 background-color: #333333; 4067 padding: 0px 0px; 4068 box-shadow: 10px 10px 40px rgba(0,0,0,0.25); 4069 z-index: 300; 4070 } 4071 .section_2 .content_container nav > ul > li:not(:last-of-type) { 4072 margin: 0px; 4073 } 4074 .section_2 .content_container nav > ul > li:last-of-type { 4075 border-bottom: 1px solid #dac298; 4076 } 4077 .section_2 .content_container nav > ul > li { 4078 width: 100%; 4079 margin: 0px; 4080 border-top: 1px solid #dac298; 4081 font-size: 1rem; 4082 padding: 0px; 4083 line-height: 40px; 4084 display: inline-block; 4085 background-color: #333333; 4086 } 4087 .section_2 .content_container nav > ul > li:first-of-type { 4088 border-top: 0px; 4089 } 4090 .section_2 .content_container nav > ul > li:last-of-type { 4091 border-bottom: 0px; 4092 } 4093 .section_2 .content_container nav > ul > li a { 4094 display: inline-block; 4095 width: 100%; 4096 height: 100%; 4097 color: #ffffff; 4098 } 4099 .section_2 .content_container nav > ul > li > ul { 4100 top: 0px; 4101 padding-top: 0px; 4102 background-color: rgba(102,102,102,0.95); 4103 } 4104 .section_2 .content_container nav > ul > li > ul > li { 4105 width: 100%; 4106 padding: 0px 0px; 4107 box-sizing: border-box; 4108 text-align: center; 4109 background-color: #333333; 4110 background-color: rgba(64,64,64,0.95); 4111 } 4112 .section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) { 4113 position: initial; 4114 left: initial; 4115 padding-top: 20px; 4116 padding-bottom: 20px; 4117 transform: initial; 4118 text-align: center; 4119 } 4120 .section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) > li { 4121 line-height: 40px; 4122 width: 100%; 4123 } 4124 .section_2 .content_container nav > ul > li > ul.group_container { 4125 top: 0px; 4126 max-width: 100%; 4127 max-height: initial; 4128 min-width: 100%; 4129 } 4130 .section_2 .content_container nav > ul > li > ul.group_container h3 { 4131 margin: 0px; 4132 text-align: center; 4133 border: none !important; 4134 color: #dac298; 4135 } 4136 .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(1), 4137 .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(2), 4138 .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(3), 4139 .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(4) { 4140 background-color: #333333; 4141 } 4142 .section_2 .content_container nav > ul > li > ul.group_container > li { 4143 padding: 0px; 4144 min-width: 100%; 4145 } 4146 .section_2 .content_container nav > ul > li > ul.group_container > li > ul { 4147 padding-left: 0px; 4148 margin-bottom: 0px; 4149 } 4150 .section_2 .content_container nav > ul > li > ul.group_container > li > ul > li { 4151 text-align: center; 4152 flex-basis: 100%; 4153 margin-right: 0px; 4154 border-bottom: none; 4155 border: none !important; 4156 } 4157} 4158@media (max-width: 640px) { 4159 .section_2 { 4160 padding: 0px 20px; 4161 } 4162 .section_2 .content_container nav .mobile_menu { 4163 margin-right: 0px; 4164 } 4165} 4166.section_2.not_top, 4167.section_2.condensed { 4168 height: 100px; 4169} 4170.section_2.not_top { 4171 background: white; 4172} 4173.section_2.condensed { 4174 background-color: white; 4175} 4176</style> 4177<section class="section_2" data-module="minimal_menu_v2" data-html="" data-json="/custom/modules/minimal_menu/module.json" data-page="" data-full-path="/"> 4178 <div class="content_container"> 4179 <div class="logo"> 4180 <a href="/" aria-label="link"><picture><source srcset="/cache/lo-custom_images_logo.webp 380w, /cache/custom_images_logo.webp 640w" sizes="(max-width: 380px) 100v
4180w, 640px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a logo with text that reads HEARTWISE above a stylized heart symbol, followed by CARDIOLOGY." class="" src="/custom/images/logo.png" data-lazy-img="false" data-src="/custom/images/logo.png"></picture></a> 4181 </div> 4182 <nav> 4183 <div class="mobile_menu"><i class="fas fa-bars"></i></div><ul><li data-url="/" data-label="Home" data-new-window="" data-group="" data-group-label="">Home</li><li data-url="/" data-label="About Us" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">About Us<ul><li data-url="/our-office/" data-label="Our Office" data-new-window="" data-group="" data-group-label="">Our Office</li><li data-url="/office-tour/" data-label="Office Tour" data-new-window="" data-group="" data-group-label="">Office Tour</li><li data-url="/new-patients/" data-label="New Patients" data-new-window="" data-group="" data-group-label="">New Patients</li><li data-url="/our-community/" data-label="Our Community" data-new-window="" data-group="" data-group-label="">Our Community</li><li data-url="/testimonials/" data-label="Testimonials" data-new-window="" data-group="" data-group-label="">Testimonials</li><li data-url="/faq/" data-label="FAQ" data-new-window="" data-group="" data-group-label="">FAQ</li><li data-url="/articles/" data-label="Recent Articles" data-new-window="" data-group="" data-group-label="">Recent Articles</li></ul></li><li data-url="/staff/" data-label="Our Doctors" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Our Doctors<ul><li data-url="/staff/david-j-harnick-md/" data-label="David J Harnick, MD" data-new-window="">David J Harnick, MD</li><li data-url="/staff/raymonda-rastegar-md-facc/" data-label="Raymonda Rastegar, MD, FACC" data-new-window="">Raymonda Rastegar, MD, FACC</li></ul></li><li data-url="/" data-label="Services" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Services<ul><li data-url="/services/ablation-therapy-for-arrhythmias/" data-label="Ablation Therapy for Arrhythmias" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Ablation Therapy for Arrhythmias</li><li data-url="/services/aortic-aneurysm/" data-label="Aortic Aneurysm" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Aortic Aneurysm</li><li data-url="/services/arrhythmia/" data-label="Arrhythmia" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Arrhythmia</li><li data-url="/services/atrial-fibrillation/" data-label="Atrial Fibrillation" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Atrial Fibrillation</li><li data-url="/services/chest-pain/" data-label="Chest Pain" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Chest Pain</li><li data-url="/services/cholesterol-management/" data-label="Cholesterol Management" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Cholesterol Management</li><li data-url="/services/concierge-service/" data-label="Concierge Service" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Concierge Service</li><li data-url="/services/defibrillator/" data-label="Defibrillator" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Defibrillator</li><li data-url="/services/echo/" data-label="Echocardiogram (Echo)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Echocardiogram (Echo)</li><li data-url="/services/electrophysiology/" data-label="Electrophysiology" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Electrophysiology</li><li data-url="/services/event-holter/" data-label="Event & Holter Monitors" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Event & Holter Monitors</li><li data-url="/services/heart-failure/" data-label="Heart Failure" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Heart Failure</li><li data-url="/services/implantable-loop-recorders/" data-label="Implantable Loop Recorders (ILR)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Implantable Loop Recorders (ILR)</li><li data-url="/services/mens-health/" data-label="Men's Health" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Men's Health</li><li data-url="/services/nuclear-stress-testing/" data-label="Nuclear Stress Testing" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Nuclear Stress Testing</li><li data-url="/services/pacemaker/" data-label="Pacemaker" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Pacemaker</li><li data-url="/services/palpitations/" data-label="Palpitations" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Palpitations</li><li data-url="/services/pvd/" data-label="Peripheral Vascular Disease (PVD)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Peripheral Vascular Disease (PVD)</li><li data-url="/services/preventive-cardiology/" data-label="Preventive Cardiology" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Preventive Cardiology</li><li data-url="/services/stroke/" data-label="Stroke/TIAâs and Carotid Disease" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Stroke/TIAâs and Carotid Disease</li><li data-url="/services/syncope/" data-label="Syncope (Fainting)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Syncope (Fainting)</li><li data-url="/services/tilt-table-testing/" data-label="Tilt Table Testing (TTT)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Tilt Table Testing (TTT)</li><li data-url="/services/valvular-heart-disease-and-heart-murmurs/" data-label="Valvular Heart Disease and Heart Murmurs" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Valvular Heart Disease and Heart Murmurs</li><li data-url="/services/womens-health/" data-label="Women's Health" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Women's Health</li></ul></li><li data-url="https://1749.portal.athenahealth.com" data-label="Patient Portal" data-new-window="" data-group="" data-group-label="">Patient Portal</li><li data-url="https://payment.patient.athenahealth.com/statement/?src=statement" data-label="Pay Online" data-new-window="" data-group="" data-group-label="">Pay Online</li><li data-url="/contact/" data-label="Contact Us" data-new-window="" data-group="" data-group-label="">Contact Us</li><li data-url="/appointments/" data-label="Request an Appointment" data-new-window="" data-group="" data-group-label="">Request an Appointment</li></ul> </nav> 4184 </div> 4185</section>
4185<script> 4186 javascript.prototype[get_id()] = function() { 4187 var json = {"settings":{"group_labels":{"group_1":"Group 1","group_2":"Group 2","group_3":"Group 3","group_4":"Group 4","group_5":"Group 5"},"use_flex":true},"content":{"menu":[{"label":"Home","group":"","url":"\/"},{"label":"About Us","group":"","url":"\/","menu":[{"label":"Our Office","url":"\/our-office\/"},{"label":"Office Tour","url":"\/office-tour\/"},{"label":"New Patients","url":"\/new-patients\/"},{"label":"Our Community","url":"\/our-community\/"},{"label":"Testimonials","url":"\/testimonials\/"},{"label":"FAQ","url":"\/faq\/"},{"label":"Recent Articles","url":"\/articles\/","aleso_articles_required":3}]},{"label":"Our Doctors","url":"\/staff\/","menu":"staff"},{"label":"Services","group":"","url":"\/","menu":"services"},{"label":"Patient Portal","group":"","url":"https:\/\/1749.portal.athenahealth.com"},{"label":"Pay Online","group":"","url":"https:\/\/payment.patient.athenahealth.com\/statement\/?src=statement"},{"label":"Contact Us","group":"","url":"\/contact\/"},{"label":"Request an Appointment","group":"","url":"\/appointments\/"}]}}; 4188 var display_type = ( 4189 json.hasOwnProperty('settings') && 4190 json.settings.hasOwnProperty('use_flex') && 4191 json.settings.use_flex 4192 ? 'flex' : 'block' 4193 ); 4194 4195 var scroll_disabled = false; 4196 var scrollbar_width = scrollbar_width(); 4197 4198 function open_menu() { 4199 $('.section_2 nav') 4200 .addClass('open'); 4201 4202 if (scroll_disabled) { 4203 return; 4204 } 4205 4206 scroll_disabled = true; 4207 scrollTop = $(window).scrollTop(); 4208 4209 $('body') 4210 .css({ 4211 }); 4212 4213 $('.section_2 .mobile_menu') 4214 .css({ 4215 'transform': 'translate(-'+scrollbar_width+'px, -50%)' 4216 }); 4217 4218 $('.section_2') 4219 .addClass('condensed'); 4220 4221 setTimeout(function() { 4222 $('.section_2 nav > ul').animate({ 4223 height: 'toggle', 4224 opacity: 'toggle' 4225 }, 200).css('display', 'block'); 4226 }, 200); 4227 } 4228 4229 function close_menu(resize) { 4230 setTimeout(function() { 4231 $('.section_2 nav').removeClass('open'); 4232 $('.section_2').removeClass('condensed'); 4233 4234 if (!scroll_disabled) { 4235 return; 4236 } 4237 4238 $('body') 4239 .css({ 4240 'top': -1 * scrollTop, 4241 'position': 'initial', 4242 'overflow': 'initial', 4243 'pointer-events': 'initial', 4244 'padding-right': 'initial' 4245 }); 4246 4247 $('.section_2 .mobile_menu') 4248 .css({ 4249 'transform': 'translate(0px, -50%)' 4250 }); 4251 4252 scroll_disabled = false; 4253 $(window).scrollTop(scrollTop); 4254 }, 200); 4255 4256 if (!resize) { 4257 $('.section_2 nav > ul').animate({ 4258 height: 'toggle', 4259 opacity: 'toggle' 4260 }, 200).css('display', 'block'); 4261 } 4262 } 4263 4264 function scrollbar_width() { 4265 var div = $('<div style="width: 50px; height: 50px; overflow: hidden; position: absolute; top:-200px; left: -200px ;"><div style="height: 100px;">'); 4266 $('body').append(div); 4267 var w1 = $('div', div).innerWidth(); 4268 div.css('overflow-y', 'scroll'); 4269 var w2 = $('div', div).innerWidth(); 4270 $(div).remove(); 4271 return (w1 - w2); 4272 } 4273 4274 // Convert LI elements to links 4275 $('.section_2 nav *[data-url]:not([data-url=""])').each(function() { 4276 $(this).contents().filter(function() { 4277 return this.nodeType == 3; 4278 }) 4279 .replaceWith('<a href="'+$(this).attr('data-url')+'">'+$(this).attr('data-label')+''); 4280 if ($(this).attr('data-url').includes('http')) { 4281 $(this).children('a').attr('target', '_blank'); 4282 $(this).children('a').attr('rel', 'noopener'); 4283 } 4284 }); 4285 4286 // Find UL elements containing groups and categorize them 4287 $('.section_2 nav ul > li').each(function() { 4288 if ($(this).attr('data-group')) { 4289 var parent_ul = $(this).closest('ul'); 4290 var group = $(this).attr('data-group') 4291 4292 $(parent_ul).addClass('group_container'); 4293 4294 if ($(this).siblings('li[data-group-container="'+group+'"]').length == 0) { 4295 group_container_li = 4296 $('<li />') 4297 .attr('data-group-container', group) 4298 .appendTo(parent_ul); 4299 4300 group_container_ul = 4301 $('<ul />') 4302 .attr('data-group-container', group) 4303 .appendTo(group_container_li); 4304 4305 group_label = 4306 $('<li />') 4307 .appendTo(group_container_ul); 4308 4309 group_header = 4310 $('<h3 />') 4311 .html($(this).attr('data-group-label')) 4312 .appendTo(group_label); 4313 } 4314 4315 $(this).appendTo($(this).siblings('li[data-group-container="'+group+'"]').children('ul[data-group-container="'+group+'"]')); 4316 } 4317 }); 4318 4319 $('.section_2 nav > ul > li > ul > li:not([data-group-container])').each(function() { 4320 $(this).closest('ul').closest('li').css('position', 'relative'); 4321 }); 4322 4323 // Set click and hover events 4324 $('.section_2 nav li:not([data-group-container]):has(> ul)').mouseover(function() { 4325 if ($('.section_2 .mobile_menu').css('display') == 'none') { 4326 $('> ul', this).stop().fadeIn(200).css('display', 'flex'); 4327 } 4328 }); 4329 4330 // Adjust columns based on the menu height specified in the CSS (Desktop only) 4331 $('.section_2 nav > ul > li').mouseover(function() { 4332 if ($('.section_2 .mobile_menu').css('display') == 'none') { 4333 $('ul[data-group-container]').each(function() { 4334 if ($(this).height() > $(this).closest('ul.group_container').height()) { 4335 var large_list = $(this).closest($('li[data-group-container]')); 4336 4337 if (!$(large_list).hasClass('large_list')) { 4338 $(large_list).addClass('large_list'); 4339 4340 if ($(this).height() > $(this).closest('ul.group_container').height()) { 4341 $(large_list).addClass('very_large_list'); 4342 } 4343 } 4344 } 4345 }); 4346 } 4347 }); 4348 4349 $('.section_2 nav li:not([data-group-container]):has(> ul)').mouseout(function() { 4350 if ($('.section_2 .mobile_menu').css('display') == 'none') { 4351 $('> ul', this).stop().fadeOut(200); 4352 } 4353 }); 4354 4355 $('.section_2 nav .mobile_menu').click(function() { 4356 if ($('.section_2 .overlay').hasClass('display')) { 4357 $('.section_2 .overlay').removeClass('display'); 4358 } 4359 else { 4360 $('.section_2 .overlay').addClass('display'); 4361 } 4362 4363 if ($('.section_2 nav').hasClass('open')) { 4364 close_menu(false); 4365 } 4366 else { 4367 open_menu(); 4368 } 4369 }); 4370 4371 $('.section_2 nav li:has(> ul)').click(function(e) { 4372 e.preventDefault(); 4373 if ($('.section_2 .mobile_menu').css('display') != 'none') { 4374 $(this).children('ul').animate({ 4375 height: 'toggle', 4376 opacity: 'toggle' 4377 }, 200, function() { 4378 // Add code here to display scroll arrow 4379 }).css('display', 'block'); 4380 } 4381 }); 4382 4383 $('.section_2 nav li > ul > li').click(function(e) { 4384 e.stopPropagation(); 4385 }); 4386 4387 // Close the menu on horizontal resize 4388 var window_width = $(window).width(); 4389 4390 window.addEventListener('resize', function() { 4391 if ($(window).width() == window_width) { 4392 return; 4393 } 4394 else { 4395 close_menu(true); 4396 $('.section_2 .overlay').removeClass('display'); 4397 $('.large_list').removeClass('large_list'); 4398 $('.very_large_list').removeClass('very_large_list'); 4399 if ($('.section_2 .mobile_menu').css('display') == 'none') { 4400 $('.section_2 nav > ul').css('display', display_type); 4401 } 4402 else { 4403 $('.section_2 nav > ul').fadeOut(0); 4404 $('.section_2 nav > ul > li > ul').fadeOut(0); 4405 } 4406 } 4407 window_width = $(window).width(); 4408 }); 4409 } 4410</script>
vendor: 1 bytes, line 4410
4410
4411<script> 4412 javascript.prototype[get_id()] = function() { 4413 $(document).scroll(function() { 4414 var position = $(document).scrollTop(); 4415 4416 if (position > 100) { 4417 if (!$('.section_2').hasClass('not_top')) { 4418 $('.section_2').addClass('not_top'); 4419 } 4420 } 4421 else { 4422 if ($('.section_2').hasClass('not_top')) { 4423 $('.section_2').removeClass('not_top'); 4424 } 4425 } 4426 }); 4427 } 4428</script>
4428<style>.section_3 { 4429 height: calc(100vh - 200px); 4430 min-height: 600px; 4431} 4432@media (max-width: 1440px) { 4433 .section_3 { 4434 height: 700px; 4435 min-height: 0px; 4436 } 4437} 4438@media (max-width: 1024px) { 4439 .section_3 { 4440 height: 650px; 4441 } 4442} 4443@media (max-width: 768px) { 4444 .section_3 { 4445 height: 380px; 4446 } 4447} 4448@media (max-width: 480px) { 4449 .section_3 { 4450 height: 300px; 4451 } 4452} 4453.section_3 .content_container { 4454 width: 100%; 4455 height: 100%; 4456} 4457.section_3 .content_container .content { 4458 width: 100%; 4459 height: 100%; 4460} 4461.section_3 .content_container .content .banner_content_container { 4462 position: absolute; 4463 z-index: 100; 4464 width: 30%; 4465 min-width: 700px; 4466 height: 100%; 4467 display: flex; 4468 justify-content: center; 4469 align-items: center; 4470 background-color: rgba(51,51,51,0.5); 4471} 4472@media (max-width: 1440px) { 4473 .section_3 .content_container .content .banner_content_container { 4474 min-width: 500px; 4475 } 4476} 4477@media (max-width: 1024px) { 4478 .section_3 .content_container .content .banner_content_container { 4479 width: 100%; 4480 min-width: initial; 4481 display: none; 4482 } 4483} 4484.section_3 .content_container .content .banner_content_container .banner_content { 4485 padding: 0 20px 0 40px; 4486 width: 80%; 4487} 4488.section_3 .content_container .content .banner_content_container .banner_content h3 { 4489 color: white; 4490 text-align: left; 4491 font-size: 2.4rem; 4492} 4493.section_3 .content_container .content .banner_content_container .banner_content h4 { 4494 color: white; 4495 text-align: left; 4496} 4497.section_3 .content_container .content .banner_content_container .banner_content p { 4498 color: #ffffff; 4499} 4500@media (max-width: 1024px) { 4501 .section_3 .content_container .content .banner_content_container .banner_content h3 { 4502 text-align: center; 4503 } 4504 .section_3 .content_container .content .banner_content_container .banner_content h4 { 4505 text-align: center; 4506 } 4507} 4508@media (max-width: 768px) { 4509 .section_3 .content_container .content .banner_content_container .banner_content h3 { 4510 font-size: 1.5rem; 4511 } 4512 .section_3 .content_container .content .banner_content_container .banner_content h4 { 4513 font-size: 1.2rem; 4514 } 4515} 4516@media (max-width: 425px) { 4517 .section_3 .content_container .content .banner_content_container .banner_content h3 { 4518 font-size: 1rem; 4519 } 4520 .section_3 .content_container .content .banner_content_container .banner_content h4 { 4521 font-size: .8rem; 4522 } 4523} 4524.section_3 .content_container .content .banner_content_container .banner_content .button_container { 4525 display: flex; 4526 justify-content: flex-start; 4527} 4528@media (max-width: 1024px) { 4529 .section_3 .content_container .content .banner_content_container .banner_content .button_container { 4530 justify-content: center; 4531 } 4532} 4533.section_3 .content_container .content .banner_content_container .banner_content .button_container .button { 4534 color: #333333; 4535 background-color: #dac298; 4536 font-weight: 600; 4537 font-size: 0.9rem; 4538 padding: 20px 30px; 4539 display: inline-block; 4540 border-top-left-radius: 10px; 4541 border-bottom-left-radius: 10px; 4542 border-bottom-right-radius: 10px; 4543 letter-spacing: 1px; 4544 transition: all 0.2s; 4545 border-top-right-radius: 0px; 4546 border: none; 4547 text-transform: uppercase; 4548 margin-top: 10px; 4549} 4550.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:hover { 4551 background-color: #30516a; 4552 color: #ffffff; 4553} 4554.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:first-of-type { 4555 margin-left: 0px; 4556} 4557.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:last-of-type { 4558 margin-right: 0px; 4559} 4560@media (max-width: 768px) { 4561 .section_3 .content_container .content .banner_content_container .banner_content .button_container .button { 4562 padding: 10px 20px; 4563 font-size: 1.2rem; 4564 } 4565} 4566@media (max-width: 425px) { 4567 .section_3 .content_container .content .banner_content_container .banner_content .button_container .button { 4568 font-size: 1rem; 4569 padding: 5px 10px; 4570 } 4571} 4572.section_3 .content_container .content .block_container { 4573 position: absolute; 4574 width: 100%; 4575 height: 100%; 4576 opacity: 0; 4577 transition: opacity 2s; 4578 overflow: hidden; 4579} 4580.section_3 .content_container .content .block_container .block { 4581 height: 100%; 4582} 4583.section_3 .content_container .content .block_container .block .background_container { 4584 width: 100%; 4585 height: 100%; 4586 position: relative; 4587 background-color: rgba(0,0,0,0.2); 4588} 4589.section_3 .content_container .content .block_container .block .background_container .background_content_container { 4590 position: absolute; 4591 width: 100%; 4592 height: 100%; 4593 display: flex; 4594 flex-direction: column; 4595 justify-content: center; 4596 align-items: center; 4597 transition: width 400ms; 4598} 4599@media (max-width: 1440px) { 4600 .section_3 .content_container .content .block_container .block .background_container .background_content_container { 4601 width: 65%; 4602 } 4603} 4604@media (max-width: 1024px) { 4605 .section_3 .content_container .content .block_container .block .background_container .background_content_container { 4606 width: 100%; 4607 } 4608} 4609.section_3 .content_container .content .block_container .block .background_container .background_content_container .background_content { 4610 width: 80%; 4611 display: flex; 4612 flex-direction: column; 4613} 4614.section_3 .content_container .content .block_container .block .background_container .background_image { 4615 object-position: 18% 50%; 4616 z-index: -100; 4617} 4618.section_3 .content_container .content .block_container .block .background_container .background_image[src="/custom/images/staff/banner1.jpg"], 4619.section_3 .content_container .content .block_container .block .background_container .background_image[src="/custom/images/family/banner3.jpg"] { 4620 object-position: 50% 50%; 4621} 4622@media (max-width: 1024px) { 4623 .section_3 .content_container .content .block_container .block .background_container .background_image { 4624 object-position: right; 4625 } 4626} 4627.section_3 .content_container .content .block_container .block .background_container.expand { 4628 transition: transform 8s; 4629 transform: scale(1.1); 4630 transform-origin: center center; 4631} 4632.section_3 .content_container .content .block_container.start { 4633 transition: opacity 0s; 4634 opacity: 1; 4635} 4636.section_3 .content_container .content .block_container.show { 4637 opacity: 1; 4638} 4639</style> 4640<section class="section_3" data-module="sphinx_banner_custom" data-html="/custom/modules/sphinx_banner_custom/1.0.0/mod.html" data-json="/custom/modules/sphinx_banner/mod.json" data-page="" data-full-path="/"> 4641 <div class="content_container"> 4642 <div class="content"> 4643 <div class="block_container"> 4644 <div class="block"> 4645 <div class="background_container"> 4646 <picture class="background_image"><source srcset="/cache/sm-custom_images_home_banner_1.webp 420w, /cache/md-custom_images_home_banner_1.webp 640w, /cache/lg-custom_images_home_banner_1.webp 1024w, /cache/xl-custom_images_home_banner_1.webp 1366w, /cache/custom_images_home_banner_1.webp 1600w" sizes="(max-width: 420px) 100v
4646w, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1600px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a cityscape with the iconic Empire State Building and the Manhattan skyline visible in the background under a clear blue sky." class="background_image" src="/custom/images/home_banner/1.jpg" data-lazy-img="false" data-src="/custom/images/home_banner/1.jpg"></picture> 4647 </div> 4648 </div> 4649</div><div class="block_container"> 4650 <div class="block"> 4651 <div class="background_container"> 4652 <picture class="background_image"><source srcset="/cache/sm-custom_images_home_banner_2.webp 420w, /cache/md-custom_images_home_banner_2.webp 640w, /cache/lg-custom_images_home_banner_2.webp 1024w, /cache/xl-custom_images_home_banner_2.webp 1366w, /cache/custom_images_home_banner_2.webp 1600w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1600px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a woman making a heart gesture with her hands against a sunlit background." class="background_image" src="/custom/images/home_banner/2.jpg" data-lazy-img="false" data-src="/custom/images/home_banner/2.jpg"></picture> 4653 </div> 4654 </div> 4655</div> 4656 <div class="banner_content_container"> 4657 <div class="banner_content"> 4658 <h4> 4659 David J Harnick, MD, <br>Raymonda Rastegar, MD FACC 4660 4661</h4> 4662<h3>Heartwise Cardiology</h3> 4663<p>Cardiology & Electrophysiology located in Murray Hill, New York.</p> 4664 <div class="button_container"><a href="/appointments/" class="button" role="button" aria-label="Request an Appointment">Request an Appointment</a></div> 4665 </div> 4666 </div> 4667 </div> 4668 </div> 4669</section>
4669<script> 4670 javascript.prototype[get_id()] = function() { 4671 var json = {"settings":{"slide_duration":6,"parallax":true,"header":"\/custom\/modules\/sphinx_banner\/header.html","mobile_image":"\/custom\/images\/home_banner\/2.jpg"},"content":[{"image":"\/custom\/images\/home_banner\/1.jpg"},{"image":"\/custom\/images\/home_banner\/2.jpg"}],"buttons":[{"label":"Request an Appointment","url":"\/appointments\/"}]}; 4672 4673 var banner_fade_counter = 1; 4674 var banner_fade_duration = json.settings.slide_duration * 1000; 4675 4676 $('.section_3 .block_container:first-of-type').addClass('active'); 4677 $('.section_3 .block_container:first-of-type').addClass('start'); 4678 4679 4680 setInterval(function() { 4681 if ($('.section_3 .block_container').length > 1) { 4682 $('.section_3 .block_container.active').removeClass('active'); 4683 $('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').css('z-index', '10'); 4684 banner_fade_counter++; 4685 4686 4687 if (banner_fade_counter > $('.section_3 .block_container').length) { 4688 banner_fade_counter = 1; 4689 } 4690 $('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').addClass('active'); 4691 $('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').css('z-index', '20'); 4692 if ( 4693 json.settings.hasOwnProperty('expand') && 4694 json.settings.expand 4695 ) { 4696 $('.section_3 .block_container:nth-of-type('+banner_fade_counter+') .background_container').addClass('expand'); 4697 } 4698 $('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').addClass('show'); 4699 setTimeout(function() { 4700 $('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+'))').css('z-index', '10'); 4701 $('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+'))').removeClass('show'); 4702 $('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+')) .background_container').removeClass('expand'); 4703 $('.section_3 .block_container.start').removeClass('start'); 4704 }, 3000); 4705 } 4706 }, banner_fade_duration); 4707 4708 4709 } 4710</script>
4710<style>.section_4 { 4711 padding: 40px 40px; 4712} 4713.section_4 .content_container { 4714 max-width: 100%; 4715 justify-content: center; 4716 display: flex; 4717 margin-left: auto; 4718 margin-right: auto; 4719 box-sizing: border-box; 4720} 4721.section_4 .content_container .content { 4722 width: 100%; 4723} 4724.section_4 .content_container .content h2 { 4725 text-align: center; 4726} 4727.section_4 .content_container .content h3 { 4728 font-size: 1.5rem; 4729} 4730@media (max-width: 640px) { 4731 .section_4 { 4732 padding: 20px 20px; 4733 } 4734} 4735</style><style>.section_4 .content_container .content { 4736 margin: 40px 0px 50px; 4737} 4738.section_4 .content_container .content h3 { 4739 text-align: center; 4740} 4741.section_4 .content_container .content h4 { 4742 text-align: center; 4743} 4744.section_4 .content_container .content p { 4745 text-align: center; 4746} 4747.section_4 .content_container .content a { 4748 color: #bf964d; 4749} 4750.section_4 .content_container .content span { 4751 text-decoration: underline; 4752} 4753</style> 4754<section class="section_4" data-module="content" data-html="/custom/content/home/welcome.html" data-json="" data-page="" data-full-path="/"> 4755 <div class="content_container"> 4756 <div class="content"> 4757 <h4> 4758 EXPERIENCED CARE YOU CAN TRUST 4759</h4> 4760<h3> 4761 About Heartwise Cardiology 4762</h3> 4763 4764<div class="main"> 4765 <div class="left"> 4766 4767<p>Heartwise Cardiology provides comprehensive medical care to adults in and around the Murray Hill neighborhood of Manhattan, New York. Board-certified cardiologists David Harnick, MD, and Raymonda Rastegar, MD, specialize in the diagnosis and treatment of acute and chronic heart conditions and take a personalized, conservative approach to care.</p> 4768 4769 <p>The modern Heartwise Cardiology office is equipped with advanced, high-end diagnostic technologies, including electrocardiogram (EKG), echocardiogram, nuclear stress testing, and tilt table testing. This allows <span>our providers to accurately identify the causes of heart-related symptoms such as shortness of breath, palpitations, syncope (fainting), and chest pain</span> without having to refer patients elsewhere.</p> 4770 4771 4772 <p>Customized treatment plans address a wide range of conditions, including atrial fibrillation and other types of arrhythmias, coronary artery disease, and heart failure. The heart specialists use noninvasive cardiology treatments and also provide minimally invasive procedures for the placement of defibrillators and pacemakers. </p> 4773 4774 <p>Heartwise Cardiology prioritizes preventive cardiology to lower risk factors for heart disease, heart attack, and other serious conditions. The physicians offer heart disease screenings, routine blood pressure checks, and cholesterol management services on-site. They also design individualized preventive cardiology care plans that address the unique needs of menâs and womenâs health. </p> 4775 4776 <p>In addition to the wide range of services available in-office, the Heartwise Cardiology providers affiliate with the best teaching hospitals in New York City to provide patients with the highest quality of care. Reach out to the practice by phone or <a href="/appointments/" aria-label="online">online</a> today.</p> 4777</div> 4778 4779<div class="right"> 4780</div> 4781</div> 4782 4783 </div> 4784 </div> 4785</section><style></style><style>.section_5 .content_container .content .block_container .block .background_container .background_image { 4786 filter: brightness(.8); 4787 z-index: -10; 4788 height: 100%; 4789} 4790.section_5 .content_container .content .block_container .block .background_content_container { 4791 margin: 60px 0; 4792} 4793.section_5 .content_container .content .block_container .block .background_content_container .background_content { 4794 display: flex; 4795 flex-direction: column; 4796 justify-content: center; 4797 align-items: center; 4798} 4799.section_5 .content_container .content .block_container .block .background_content_container .background_content >.title { 4800 font-family: "Lato"; 4801 text-align: center; 4802 color: #fff; 4803 text-shadow: 0px 0px 50px rgba(0,0,0,0.5); 4804} 4805.section_5 .content_container .content .block_container .block .background_content_container .background_content >.title[data-show="false"] { 4806 display: none; 4807} 4808.section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container { 4809 display: flex; 4810 width: 100%; 4811 justify-content: center; 4812 max-width: 1600px; 4813 align-items: flex-start; 4814 flex-wrap: wrap; 4815} 4816@media (max-width: 1280px) { 4817 .section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container { 4818 flex-wrap: wrap; 4819 } 4820} 4821@media (max-width: 768px) { 4822 .section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container { 4823 flex-direction: column; 4824 width: 90%; 4825 } 4826} 4827</style><style>.section_5 [data-micro-template="home_expertise"] { 4828 display: flex; 4829 flex-direction: column; 4830 padding: 30px 20px 0px; 4831 margin: 10px 2px 0px; 4832 width: auto; 4833 width: -moz-available; 4834 width: -webkit-fill-available; 4835 width: fill-available; 4836 justify-content: center; 4837 align-items: center; 4838 flex-basis: 25%; 4839} 4840@media (max-width: 1280px) { 4841 .section_5 [data-micro-template="home_expertise"] { 4842 padding: 20px; 4843 margin: 30px 0px 0px; 4844 flex-basis: 40%; 4845 } 4846} 4847.section_5 [data-micro-template="home_expertise"] .icon { 4848 display: flex; 4849 justify-content: center; 4850 align-items: center; 4851 max-width: 180px; 4852 border-radius: 100%; 4853 overflow: hidden; 4854} 4855.section_5 [data-micro-template="home_expertise"] .icon .icon-img { 4856 display: none; 4857} 4858.section_5 [data-micro-template="home_expertise"] .icon .icon-fa { 4859 display: flex; 4860} 4861.section_5 [data-micro-template="home_expertise"] .icon[data-icon-type="img"] .icon-img { 4862 display: flex; 4863} 4864.section_5 [data-micro-template="home_expertise"] .icon[data-icon-type="img"] .icon-fa { 4865 display: none; 4866} 4867.section_5 [data-micro-template="home_expertise"] .title { 4868 font-family: "Lato"; 4869 color: #ffffff; 4870 font-size: 1.6rem; 4871 line-height: 1.8rem; 4872 margin: 15px 0px; 4873 text-align: center; 4874} 4875@media (max-width: 1024px) { 4876 .section_5 [data-micro-template="home_expertise"] .title { 4877 line-height: 1.6rem; 4878 font-size: 1.4rem; 4879 } 4880} 4881.section_5 [data-micro-template="home_expertise"] .description { 4882 font-family: "Asap"; 4883 color: #ffffff; 4884 font-size: 1rem; 4885 text-align: center; 4886 line-height: 1.75rem; 4887} 4888.section_5 [data-micro-template="home_expertise"] .button_container { 4889 margin-top: 10px; 4890} 4891.section_5 [data-micro-template="home_expertise"] .button_container .button { 4892 background-color: #dac298; 4893 font-size: .9rem; 4894 font-weight: bold; 4895 padding: 5px 30px; 4896 display: inline-block; 4897 border-top-left-radius: 10px; 4898 border-bottom-left-radius: 10px; 4899 border-bottom-right-radius: 10px; 4900 letter-spacing: 1px; 4901 transition: all 400ms; 4902 border-top-right-radius: 0px; 4903 text-transform: uppercase; 4904 color: #333333; 4905} 4906.section_5 [data-micro-template="home_expertise"] .button_container .button:hover { 4907 background-color: #30516a; 4908 color: #ffffff; 4909} 4910</style> 4911<section class="section_5" data-module="html_module" data-html="/custom/modules/home_expertise/mod.html" data-json="/custom/modules/home_expertise/mod.json" data-page="" data-full-path="/"> 4912 <div class="content_container"> 4913 <div class="content"> 4914 4915 <div class="block_container"> 4916 <div class="block"> 4917 <div class="background_container"> 4918 <div class="background_content_container"> 4919 <div class="background_content"> 4920 <h3 class="title" data-show="true"> 4921 Advanced Cardiovascular Services for Heart Health 4922 </h3> 4923 <div class="flex_container"> 4924 <div data-micro-template="home_expertise"> 4925 <div class="icon" data-icon-type="img"> 4926 <i class="/custom/modules/home_expertise/images/icon1.png icon-fa"></i> 4927 <picture><source srcset="/cache/custom_modules_home_expertise_images_icon1.webp 95w" sizes="95px" data-lazy-picture="false" type="image/webp"><img alt="The image features an icon representing an ECG monitor with a heart symbol on its screen, connected by a cord to a device labeled EKG." class="icon-img" src="/custom/modules/home_expertise/images/icon1.png" data-lazy-img="false" data-src="/custom/modules/home_expertise/images/icon1.png"></picture> 4928 </div> 4929 <h5 class="title"> 4930 Echocardiogram 4931 </h5> 4932 <div class="description"> 4933 Non-invasive ultrasound imaging to assess heart structure and function. 4934 </div> 4935 <div class="button_container"> 4936 <a href="/services/echo/" class="button" role="button" aria-label="Learn More">Learn More</a> 4937 </div> 4938</div> 4939<div data-micro-template="home_expertise"> 4940 <div class="icon" data-icon-type="img"> 4941 <i class="/custom/modules/home_expertise/images/icon2.png icon-fa"></i> 4942 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon2.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a pixelated icon with a heart shape inside a square frame, which appears to be a simplified representation of an ECG electrocardiogram machine, often used for monitoring heart activity." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon2.png"></picture> 4943 </div> 4944 <h5 class="title"> 4945 Nuclear Stress Testing 4946 </h5> 4947 <div class="description"> 4948 Evaluates blood flow and heart function under physical or chemical stress. 4949 </div> 4950 <div class="button_container"> 4951 <a href="/services/nuclear-stress-testing/" class="button" role="button" aria-label="Learn More">Learn More</a> 4952 </div> 4953</div> 4954<div data-micro-template="home_expertise"> 4955 <div class="icon" data-icon-type="img"> 4956 <i class="/custom/modules/home_expertise/images/icon3.png icon-fa"></i> 4957 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon3.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp">
4957<img alt="The image displays a stylized graphic resembling a heart with a cross inside it, set against a black background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon3.png"></picture> 4958 </div> 4959 <h5 class="title"> 4960 Implantable Loop Recorders (ILR) 4961 </h5> 4962 <div class="description"> 4963 Long-term heart rhythm monitoring for arrhythmia detection and diagnosis. 4964 </div> 4965 <div class="button_container"> 4966 <a href="/services/implantable-loop-recorders/" class="button" role="button" aria-label="Learn More">Learn More</a> 4967 </div> 4968</div> 4969<div data-micro-template="home_expertise"> 4970 <div class="icon" data-icon-type="img"> 4971 <i class="/custom/modules/home_expertise/images/icon4.png icon-fa"></i> 4972 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon4.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a stylized icon of an electrical outlet with three plugs inserted into it." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon4.png"></picture> 4973 </div> 4974 <h5 class="title"> 4975 Tilt Table Testing (TTT) 4976 </h5> 4977 <div class="description"> 4978 Diagnoses fainting causes by monitoring blood pressure and heart rate changes. 4979 </div> 4980 <div class="button_container"> 4981 <a href="/services/tilt-table-testing/" class="button" role="button" aria-label="Learn More">Learn More</a> 4982 </div> 4983</div> 4984<div data-micro-template="home_expertise"> 4985 <div class="icon" data-icon-type="img"> 4986 <i class="/custom/modules/home_expertise/images/icon5.png icon-fa"></i> 4987 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon5.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image displays a stylized graphic with a cartoon-like appearance featuring a character s face and a football helmet, set against a dark background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon5.png"></picture> 4988 </div> 4989 <h5 class="title"> 4990 Pacemakers 4991 </h5> 4992 <div class="description"> 4993 Regulate slow heart rhythms with electrical impulses for stability. 4994 </div> 4995 <div class="button_container"> 4996 <a href="/services/pacemaker/" class="button" role="button" aria-label="Learn More">Learn More</a> 4997 </div> 4998</div> 4999<div data-micro-template="home_expertise"> 5000 <div class="icon" data-icon-type="img"> 5001 <i class="/custom/modules/home_expertise/images/icon6.png icon-fa"></i> 5002 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon6.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image displays a pixelated emoji-like graphic resembling a heart shape with a face-like feature, rendered in a monochromatic palette against a dark background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon6.png"></picture> 5003 </div> 5004 <h5 class="title"> 5005 Defibrillators 5006 </h5> 5007 <div class="description"> 5008 Deliver shocks to restore normal heart rhythm during cardiac emergencies. 5009 </div> 5010 <div class="button_container"> 5011 <a href="/services/defibrillator/" class="button" role="button" aria-label="Learn More">Learn More</a> 5012 </div> 5013</div> 5014 5015 </div>
5016 </div> 5017 </div> 5018 <picture class="background_image"><source srcset="/cache/sm-custom_modules_home_expertise_images_bg.webp 420w, /cache/md-custom_modules_home_expertise_images_bg.webp 640w, /cache/lg-custom_modules_home_expertise_images_bg.webp 1024w, /cache/xl-custom_modules_home_expertise_images_bg.webp 1366w, /cache/custom_modules_home_expertise_images_bg.webp 1900w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1900px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a close-up view of a blurred, abstract design with flowing lines against a dark background, which could be interpreted as an artistic representation or possibly a graphical element related to technology or digital interfaces." class="background_image" src="/custom/modules/home_expertise/images/bg.jpg" data-lazy-img="false" data-src="/custom/modules/home_expertise/images/bg.jpg"></picture> 5019 </div> 5020 </div> 5021</div> 5022 5023 </div> 5024 <div class="sidebar" data-sidebar="false"> 5025 5026 </div> 5027 </div> 5028</section><style></style><style>.section_6 .content_container .content { 5029 margin: 120px 0px; 5030 display: flex; 5031 justify-content: center; 5032 align-items: center; 5033 flex-wrap: wrap; 5034} 5035@media (max-width: 480px) { 5036 .section_6 .content_container .content { 5037 margin: 60px 0px; 5038 } 5039} 5040.section_6 .content_container .content div[data-micro-template="home_doctor"]:not(:first-child) { 5041 margin-top: 40px; 5042} 5043</style><style>.section_6 div[data-micro-template="home_doctor"] { 5044 display: flex; 5045 max-width: 1200px; 5046 width: 80%; 5047} 5048@media (max-width: 480px) { 5049 .section_6 div[data-micro-template="home_doctor"] { 5050 width: 94%; 5051 } 5052} 5053.section_6 div[data-micro-template="home_doctor"]:nth-of-type(even) { 5054 flex-direction: row-reverse; 5055} 5056.section_6 div[data-micro-template="home_doctor"]:nth-of-type(odd) { 5057 flex-direction: row; 5058} 5059.section_6 div[data-micro-template="home_doctor"] .text_container { 5060 flex: 1 1 auto; 5061 width: 70%; 5062 display: flex; 5063 flex-direction: column; 5064 align-items: center; 5065 justify-content: center; 5066 background-color: #ecf1f3; 5067} 5068.section_6 div[data-micro-template="home_doctor"] .text_container .text_content { 5069 padding: 15px 40px; 5070} 5071.section_6 div[data-micro-template="home_doctor"] .text_container .text_content .btn { 5072 color: #ffffff; 5073 background-color: #30516a; 5074 font-weight: 600; 5075 font-size: 0.9rem; 5076 padding: 12px 30px; 5077 display: inline-block; 5078 border-top-left-radius: 10px; 5079 border-bottom-left-radius: 10px; 5080 border-bottom-right-radius: 10px; 5081 letter-spacing: 1px; 5082 transition: all 0.2s; 5083 border-top-right-radius: 0px; 5084 border: none; 5085 text-transform: uppercase; 5086 margin-top: 10px; 5087} 5088.section_6 div[data-micro-template="home_doctor"] .text_container .text_content .btn:hover { 5089 background-color: #dac298; 5090 color: #333333; 5091} 5092.section_6 div[data-micro-template="home_doctor"] .background_container { 5093 flex: 1 1 auto; 5094 width: 30%; 5095 min-height: 440px; 5096} 5097.section_6 div[data-micro-template="home_doctor"] .background_container .background_content .background_image { 5098 object-position: 50% 20%; 5099 height: 100%; 5100} 5101@media (max-width: 1024px) { 5102 .section_6 div[data-micro-template="home_doctor"] .text_container { 5103 width: 60%; 5104 } 5105 .section_6 div[data-micro-template="home_doctor"] .text_container .text_content { 5106 width: 80%; 5107 } 5108 .section_6 div[data-micro-template="home_doctor"] .text_container .text_content h3 { 5109 font-size: 2.5rem; 5110 } 5111 .section_6 div[data-micro-template="home_doctor"] .background_container { 5112 width: 40%; 5113 } 5114} 5115@media (max-width: 768px) { 5116 .section_6 div[data-micro-template="home_doctor"]:nth-of-type(n) { 5117 flex-direction: column-reverse; 5118 flex-wrap: wrap; 5119 } 5120 .section_6 div[data-micro-template="home_doctor"] .text_container { 5121 width: 100%; 5122 } 5123 .section_6 div[data-micro-template="home_doctor"] .text_container .text_content { 5124 padding: 20px 0; 5125 } 5126 .section_6 div[data-micro-template="home_doctor"] .text_container .text_content h3 { 5127 font-size: 1.8rem; 5128 } 5129 .section_6 div[data-micro-template="home_doctor"] .background_container { 5130 width: 100%; 5131 min-height: 400px; 5132 } 5133 .section_6 div[data-micro-template="home_doctor"] .background_container .background_content .background_image { 5134 min-height: auto; 5135 } 5136} 5137</style> 5138<section class="section_6" data-module="html_module" data-html="/custom/modules/home_doctor/mod.html" data-json="/custom/modules/home_doctor/mod.json" data-page="" data-full-path="/"> 5139 <div class="content_container"> 5140 <div class="content"> 5141 5142 <div data-micro-template="home_doctor"> 5143 <div class="text_container"> 5144 <div class="text_content"> 5145 <h4>Get to know our Doctor</h4> 5146 <h3>David J Harnick, MD</h3> 5147 <p><strong>Board Certified in Cardiovascular Diseases and Cardiac Electrophysiology</strong></p> 5148<p>Dr. David Harnick is a board-certified cardiologist and electrophysiologist who provides exceptional cardiovascular care at Heartwise Cardiology in the Murray Hill and Upper East Side neighborhoods of New York City. While he treats the full range of heart conditions, he specializes in helping patients with cardiac arrhythmias, dizziness, and syncope.</p> 5149 <a href="/staff/david-j-harnick-md/" class="btn" aria-label="More About our Doctor">More About our Doctor</a> 5150 </div> 5151 </div> 5152 <div class="background_container"> 5153 <div class="background_content"> 5154 <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_dr_harnick.webp 420w, /cache/custom_images_dr_harnick.webp 640w" sizes="(max-width: 420px) 100v
5154w, 640px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a man wearing glasses, smiling, and dressed in formal attire standing against a blurred background." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/dr_harnick.jpg"></picture> 5155 </div> 5156 </div> 5157</div><div data-micro-template="home_doctor"> 5158 <div class="text_container"> 5159 <div class="text_content"> 5160 <h4>Get to know our Doctor</h4> 5161 <h3>Raymonda Rastegar, MD, FACC</h3> 5162 5163<p><strong>Board Certified in Cardiovascular Diseases</strong></p> 5164<p>Dr. Raymonda Rastegar is a triple-boarded cardiologist with certifications in general cardiology, echocardiography, and nuclear cardiology. She has expertise in general and noninvasive cardiology, as well as preventive care. At Heartwise Cardiology in the Murray Hill neighborhood of Manhattan, New York, she treats varied cardiovascular conditions with a special interest in helping patients prevent heart disease and heart attacks.</p> 5165 <a href="/staff/raymonda-rastegar-md-facc/" class="btn" aria-label="More About our Doctor">More About our Doctor</a> 5166 </div> 5167 </div> 5168 <div class="background_container"> 5169 <div class="background_content"> 5170 <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_dr_rastegar.webp 420w, /cache/custom_images_dr_rastegar.webp 640w" sizes="(max-width: 420px) 100vw, 640px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a woman dressed in business attire with a confident expression, standing beside a man who appears to be in a formal setting." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/dr_rastegar.jpg"></picture> 5171 </div> 5172 </div> 5173</div> 5174 5175 </div> 5176 <div class="sidebar" data-sidebar="false"> 5177 5178 </div> 5179 </div> 5180</section>
5180<script> 5181 5182 javascript.prototype[get_id()] = function() { 5183 $('.section_6 div[data-micro-template="staff_list"] ').each(function (index, element) { 5184 $element_1 = $(this).find(".staff_content"); 5185 $element_2 = $(this).find("> h3"); 5186 5187 $($element_1).prepend($element_2); 5188 }); 5189 } 5190 5191</script>
5191<style>.section_7 .block_container { 5192 display: flex; 5193 flex-direction: column; 5194} 5195.section_7 .block_container .block { 5196 display: flex; 5197 flex-wrap: wrap; 5198} 5199.section_7 .block_container .block .background_container { 5200 width: 100%; 5201 height: 680px; 5202 display: flex; 5203 justify-content: center; 5204 align-items: center; 5205} 5206.section_7 .block_container .block .background_container .background_content { 5207 position: relative; 5208 z-index: 20; 5209 width: 100%; 5210 height: 100%; 5211 display: flex; 5212 align-items: center; 5213 justify-content: center; 5214} 5215.section_7 .block_container .block .background_container .background_image { 5216 max-height: initial; 5217} 5218</style><style>.section_7 { 5219 background-color: #222; 5220} 5221.section_7 .content_container { 5222 padding: 80px 40px; 5223} 5224@media (max-width: 480px) { 5225 .section_7 .content_container { 5226 padding: 80px 20px; 5227 } 5228} 5229@media (max-width: 1024px) { 5230 .section_7 .content_container .content .block_container .block { 5231 flex-direction: column; 5232 justify-content: center; 5233 align-items: center; 5234 } 5235} 5236.section_7 .content_container .content .block_container .block .background_container { 5237 height: 550px; 5238 justify-content: initial; 5239 align-items: initial; 5240 flex: 1; 5241 max-width: 100%; 5242} 5243@media (max-width: 1024px) { 5244 .section_7 .content_container .content .block_container .block .background_container { 5245 flex: auto; 5246 width: 400px; 5247 height: 400px; 5248 justify-content: center; 5249 } 5250} 5251.section_7 .content_container .content .block_container .block .split_content { 5252 flex-basis: 50%; 5253 max-width: 100%; 5254 display: flex; 5255 flex-direction: column; 5256 justify-content: center; 5257 padding: 60px; 5258 box-sizing: border-box; 5259} 5260@media (max-width: 1024px) { 5261 .section_7 .content_container .content .block_container .block .split_content { 5262 padding: 30px 20px; 5263 } 5264} 5265.section_7 .content_container .content .block_container .block .split_content p { 5266 color: #ffffff; 5267} 5268.section_7 .content_container .content .block_container .block .split_content .title { 5269 text-align: left; 5270 padding-right: 100px; 5271 box-sizing: border-box; 5272} 5273@media (max-width: 1280px) { 5274 .section_7 .content_container .content .block_container .block .split_content .title { 5275 padding-right: 0px; 5276 } 5277} 5278.section_7 .content_container .content .block_container .block .split_content .title h2 { 5279 font-size: 1.8rem; 5280 letter-spacing: 3px; 5281 font-weight: 300; 5282 text-transform: uppercase; 5283 line-height: 1.6em; 5284 color: #ffffff; 5285} 5286@media (max-width: 1024px) { 5287 .section_7 .content_container .content .block_container .block .split_content .title h2 { 5288 font-size: 2rem; 5289 } 5290} 5291@media (max-width: 550px) { 5292 .section_7 .content_container .content .block_container .block .split_content .title h2 { 5293 font-size: 1.45rem; 5294 } 5295} 5296.section_7 .content_container .content .block_container .block .split_content .title h3 { 5297 font-size: 1.5rem; 5298 text-transform: uppercase; 5299 margin: 0; 5300 font-weight: 400; 5301 color: #ffffff; 5302} 5303@media (max-width: 1024px) { 5304 .section_7 .content_container .content .block_container .block .split_content .title h3 { 5305 font-size: 1.2rem; 5306 } 5307} 5308.section_7 .content_container .content .block_container .block .split_content .text { 5309 font-size: 1rem; 5310 max-width: 100%; 5311 padding-right: 100px; 5312 box-sizing: border-box; 5313} 5314@media (max-width: 1280px) { 5315 .section_7 .content_container .content .block_container .block .split_content .text { 5316 padding-right: 0px; 5317 } 5318} 5319@media (max-width: 768px) { 5320 .section_7 .content_container .content .block_container .block .split_content .text { 5321 margin-top: 0; 5322 } 5323} 5324.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] { 5325 display: flex; 5326 flex-wrap: wrap; 5327} 5328.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] .button { 5329 color: white; 5330 background-color: #f53457; 5331 margin: 5px 10px 5px 0; 5332 text-transform: uppercase; 5333 font-weight: 600; 5334 font-size: .75rem; 5335 padding: 8px 25px; 5336 letter-spacing: 2px; 5337 box-sizing: border-box; 5338 border: 2px solid #f53457; 5339 transition: all 0.3s; 5340} 5341.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] .button:hover { 5342 background: #203647; 5343 border-color: #203647; 5344} 5345.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:last-of-type .button { 5346 margin-right: 0; 5347} 5348.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:first-of-type .button { 5349 background: none; 5350 color: #f53457; 5351 box-sizing: border-box; 5352} 5353.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:first-of-type .button:hover {
5354 color: #203647; 5355} 5356</style> 5357<section class="section_7" data-module="parallax_image" data-html="/custom/modules/basilisk_split/module.html" data-json="/custom/modules/basilisk_split/module2.json" data-page="" data-full-path="/"> 5358 <div class="content_container"> 5359 <div class="content"> 5360 <div class="block_container"> 5361 <div class="block"> 5362 <div class="background_container"> 5363 <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_modules_basilisk_split_images_bg.webp 420w, /cache/md-custom_modules_basilisk_split_images_bg.webp 640w, /cache/custom_modules_basilisk_split_images_bg.webp 1024w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, 1024px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a building with large windows, featuring an architectural style with a prominent black frame around the windows and a white facade." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/basilisk_split/images/bg.jpg"></picture> 5364 </div> 5365 <div class="split_content"> 5366 <div class="title"> 5367 <h3></h3> 5368 <h2>The success of our practice is dependent on our high quality and compassionate care</h2> 5369 </div> 5370 <div class="text"> 5371 5372<p>We get back to the basics of medicine: availability, affability, and ability. We want to help people live happy, productive, and fulfilling lives free of cardiovascular disease, its complications, and untimely death.</p> 5373 5374 </div> 5375 </div> 5376 </div> 5377</div> 5378 5379 </div> 5380 </div> 5381</section>
5381<script> 5382 javascript.prototype[get_id()] = function() { 5383 var json = {"settings":{"parallax":false},"content":[{"image":"\/custom\/modules\/basilisk_split\/images\/bg.jpg","title":"The success of our practice is dependent on our high quality and compassionate care","subtitle":"","text":"\/custom\/modules\/basilisk_split\/content2.html","button":[{}]}]}; 5384 5385 function shift_image() { 5386 if ( 5387 json.settings.hasOwnProperty('parallax') && 5388 json.settings.parallax 5389 ) { 5390 $('.section_7 .background_image').each(function() { 5391 var elementHeight = $(this).height(); 5392 var startEffect = $(this).offset().top - $(window).height(); 5393 var endEffect = $(this).offset().top + elementHeight; 5394 5395 var pageHeight = $(document).height(); 5396 5397 var scrollDistance = endEffect - startEffect; 5398 var scrollPosition = $(document).scrollTop(); 5399 5400 if (scrollPosition > startEffect && scrollPosition < endEffect) { 5401 scrollPercent = ((scrollPosition - startEffect) / scrollDistance * 100).toFixed(4); 5402 /* $(this).css('transform', 'translate(-50%, -'+(100 - scrollPercent)+'%)'); */ 5403 $(this).css('object-position', 'center '+(100 - scrollPercent)+'%'); 5404 } 5405 }); 5406 } 5407 else { 5408 $('.section_7 .background_image').addClass('static'); 5409 } 5410 } 5411 5412 shift_image(); 5413 5414 $(window).resize(function() { 5415 shift_image(); 5416 }); 5417 5418 $(document).scroll(function() { 5419 shift_image(); 5420 }); 5421 } 5422</script>
5422<style>.section_8 { 5423 padding: 40px 40px; 5424} 5425.section_8 .content_container { 5426 max-width: 100%; 5427 justify-content: center; 5428 display: flex; 5429 margin-left: auto; 5430 margin-right: auto; 5431 box-sizing: border-box; 5432} 5433.section_8 .content_container .content { 5434 width: 100%; 5435} 5436.section_8 .content_container .content h2 { 5437 text-align: center; 5438} 5439.section_8 .content_container .content h3 { 5440 font-size: 1.5rem; 5441} 5442@media (max-width: 640px) { 5443 .section_8 { 5444 padding: 20px 20px; 5445 } 5446} 5447</style><style>.section_8 { 5448 background-color: #fafafa; 5449 padding: 0px; 5450} 5451.section_8 iframe { 5452 height: 620px; 5453} 5454@media (max-width: 480px) { 5455 .section_8 .grid_reviewBlockWrapper__kOwhf { 5456 overflow: hidden !important; 5457 } 5458} 5459.section_8 .content_container { 5460 margin: 30px auto; 5461} 5462.section_8 .content_container .content h4 { 5463 color: white; 5464 text-align: center; 5465} 5466.section_8 .content_container .content h3.h3 { 5467 color: white; 5468 text-align: center; 5469} 5470</style> 5471<section class="section_8" data-module="content" data-html="/custom/content/home/testimonials.html" data-json="" data-page="" data-full-path="/"> 5472 <div class="content_container"> 5473 <div class="content"> 5474 <div id="bf-revz-widget-987654321301115183"></div> 5475 </div> 5476 </div> 5477</section><style>.section_9 { 5478 padding: 40px 40px; 5479} 5480.section_9 .content_container { 5481 max-width: 100%; 5482 justify-content: center; 5483 display: flex; 5484 margin-left: auto; 5485 margin-right: auto; 5486 box-sizing: border-box; 5487} 5488.section_9 .content_container .content { 5489 width: 100%; 5490} 5491.section_9 .content_container .content h2 { 5492 text-align: center; 5493} 5494.section_9 .content_container .content h3 { 5495 font-size: 1.5rem; 5496} 5497@media (max-width: 640px) { 5498 .section_9 { 5499 padding: 20px 20px; 5500 } 5501} 5502</style><style>.section_9 { 5503 background-color: #222; 5504} 5505.section_9 .content_container .content { 5506 margin: 40px 0px 50px; 5507} 5508.section_9 .content_container .content .main { 5509 max-width: 1200px; 5510 margin: 0 auto; 5511 text-align: center; 5512} 5513.section_9 .content_container .content .main:first-of-type { 5514 border-bottom: 1px solid #444; 5515 padding-bottom: 40px; 5516} 5517.section_9 .content_container .content .main h3 { 5518 margin-bottom: 20px; 5519 text-transform: uppercase; 5520 letter-spacing: 2px; 5521 color: #ffffff; 5522} 5523.section_9 .content_container .content .inner { 5524 display: flex; 5525 flex-wrap: wrap; 5526 justify-content: center; 5527} 5528.section_9 .content_container .content .box { 5529 background-color: #444; 5530 color: white; 5531 padding: 15px 20px; 5532 border-radius: 8px; 5533 margin: 10px; 5534 font-size: 18px; 5535 display: flex; 5536 align-items: center; 5537 justify-content: center; 5538 gap: 10px; 5539} 5540.section_9 .content_container .content .svg-inline--fa { 5541 color: #dac298; 5542} 5543</style> 5544<section class="section_9" data-module="content" data-html="/custom/content/home/awards.html" data-json="" data-page="" data-full-path="/"> 5545 <div class="content_container"> 5546 <div class="content"> 5547 <div class="main"> 5548<h3>Awards</h3> 5549 <div class="inner"> 5550 <div class="box"><i class="fas fa-trophy"></i> NY BEST DOCTORS</div> 5551 <div class="box"><i class="fas fa-trophy"></i> NY TIMES BEST DOCTORS</div> 5552 <div class="box"><i class="fas fa-trophy"></i> NY TOP DOCS</div> 5553 </div> 5554</div> 5555<div class="main"> 5556 <h3>Credentials</h3> 5557 <div class="inner"> 5558 <div class="box"><i class="fas fa-id-badge"></i> GENERAL CARD AND EP</div> 5559 <div class="box"><i class="fas fa-id-badge"></i> BOARD CERTIFICATIONS</div> 5560 <div class="box"><i class="fas fa-id-badge"></i> FULL SERVICES OFFICE TESTING</div> 5561 </div> 5562 5563</div> 5564 </div> 5565 </div> 5566</section><style>.section_10 { 5567 --aleso-article-columns: 3; 5568 padding: 40px 20px; 5569} 5570@media (max-width: 480px) { 5571 .section_10 { 5572 --aleso-article-columns: 1; 5573 } 5574} 5575.section_10 .content_container { 5576 width: min(100%,1400px); 5577 margin: 0 auto; 5578} 5579.section_10 .content_container .content .aleso_articles_title { 5580 text-align: center; 5581} 5582.section_10 .content_container .content .aleso_articles_container { 5583 display: grid; 5584 grid-template-columns: repeat(var(--aleso-article-columns),1fr); 5585 gap: 40px; 5586 box-sizing: border-box; 5587 padding: 10px 0; 5588} 5589@media (max-width: 1024px) { 5590 .section_10 .content_container .content .aleso_articles_container { 5591 gap: 20px; 5592 } 5593} 5594@media (max-width: 480px) { 5595 .section_10 .content_container .content .aleso_articles_container { 5596 display: flex; 5597 flex-wrap: nowrap; 5598 overflow: auto; 5599 padding-bottom: 20px; 5600 } 5601} 5602@media (max-width: 480px) { 5603 .section_10 .content_container .content .aleso_articles_container .aleso_article_c
5603ontainer { 5604 width: 85vw; 5605 flex-shrink: 0; 5606 } 5607} 5608.section_10 .content_container .content .aleso_articles_container .aleso_article_container h4 { 5609 font-family: "Lato"; 5610 font-size: 1.25rem; 5611 margin-bottom: 0; 5612 font-weight: 500; 5613} 5614</style><style>.section_10 { 5615 --aleso-article-columns: 3; 5616 padding: 40px 20px; 5617} 5618@media (max-width: 480px) { 5619 .section_10 { 5620 --aleso-article-columns: 1; 5621 } 5622} 5623.section_10 .content_container { 5624 width: min(100%,1400px); 5625 margin: 0 auto; 5626} 5627.section_10 .content_container .content .aleso_articles_title { 5628 text-align: center; 5629} 5630.section_10 .content_container .content .aleso_articles_container { 5631 display: grid; 5632 grid-template-columns: repeat(var(--aleso-article-columns),1fr); 5633 gap: 40px; 5634 box-sizing: border-box; 5635 padding: 10px 0; 5636} 5637@media (max-width: 1024px) { 5638 .section_10 .content_container .content .aleso_articles_container { 5639 gap: 20px; 5640 } 5641} 5642@media (max-width: 480px) { 5643 .section_10 .content_container .content .aleso_articles_container { 5644 display: flex; 5645 flex-wrap: nowrap; 5646 overflow: auto; 5647 padding-bottom: 20px; 5648 } 5649} 5650@media (max-width: 480px) { 5651 .section_10 .content_container .content .aleso_articles_container .aleso_article_container { 5652 width: 85vw; 5653 flex-shrink: 0; 5654 } 5655} 5656.section_10 .content_container .content .aleso_articles_container .aleso_article_container h4 { 5657 font-family: "Lato"; 5658 font-size: 1.25rem; 5659 margin-bottom: 0; 5660 font-weight: 500; 5661} 5662</style> 5663<section class="section_10" data-module="pegasus_articles" data-html="/custom/modules/pegasus_articles/module.html" data-json="" data-page="" data-full-path="/"> 5664 <div class="content_container"> 5665 <div class="content"> 5666 5667 <style>.section_10 .aleso_article_container .aleso_article_image { 5668 aspect-ratio: 1.5; 5669} 5670.section_10 .aleso_article_container .date_posted { 5671 margin: 0px; 5672 padding: 0px; 5673 color: #625877; 5674 font-size: 12px; 5675 font-weight: bold; 5676} 5677</style><style>.section_10 .aleso_articles_container { 5678 display: grid; 5679 grid-template-columns: repeat(3,1fr); 5680 gap: 40px; 5681} 5682@media (max-width: 768px) { 5683 .section_10 .aleso_articles_container { 5684 grid-template-columns: repeat(2,1fr); 5685 } 5686} 5687@media (max-width: 480px) { 5688 .section_10 .aleso_articles_container { 5689 grid-template-columns: repeat(1,1fr); 5690 } 5691} 5692</style><h2 class="aleso_articles_title">Recent Articles</h2> 5693<div class="aleso_articles_container"> 5694<a href="/articles/14253/balancing-cholesterol-a-comprehensive-guide-to-heart-health/" class="aleso_article_container" aria-label="Balancing Cholesterol: A Comprehensive Guide to Heart Health Dive into the science behind cholesterol, understanding 'good' (HDL) and 'bad' (LDL) types, and learn how regular monitoring and lifestyle changes can maintain heart health. Explore modern diagnostic tools, actionable strategies for cholesterol management, and personalized care plans at Heartwise Cardiology. December 17, 2025"> 5695 <div> 5696 <div class="background_container aleso_article_image"> 5697 <picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1766001387.030a8b8a.10137028247.lg.jpg"></picture> 5698 </div> 5699 <h4>Balancing Cholesterol: A Comprehensive Guide to Heart Health</h4> 5700 <p>Dive into the science behind cholesterol, understanding 'good' (HDL) and 'bad' (LDL) types, and learn how regular monitoring and lifestyle changes can maintain heart health. Explore modern diagnostic tools, actionable strategies for cholesterol management, and personalized care plans at Heartwise Cardiology.</p> 5701 <p class="date_posted">December 17, 2025</p> 5702 </div> 5703</a><a href="/articles/14252/advancing-heart-health-nuclear-stress-testing-echocardiograms/" class="aleso_article_c
5703ontainer" aria-label="Advancing Heart Health: The Role of Nuclear Stress Testing and Echocardiograms Explore the pivotal role of nuclear stress testing and echocardiograms in assessing heart function under physical stress. These advanced diagnostic tools offer unprecedented insights into cardiac health, enabling early detection and personalized treatment plans for conditions like coronary artery disease. December 17, 2025"> 5704 <div> 5705 <div class="background_container aleso_article_image"> 5706 <picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1766000998.8009e05b.10132548796.lg.jpg"></picture> 5707 </div> 5708 <h4>Advancing Heart Health: The Role of Nuclear Stress Testing and Echocardiograms</h4> 5709 <p>Explore the pivotal role of nuclear stress testing and echocardiograms in assessing heart function under physical stress. These advanced diagnostic tools offer unprecedented insights into cardiac health, enabling early detection and personalized treatment plans for conditions like coronary artery disease.</p> 5710 <p class="date_posted">December 17, 2025</p> 5711 </div> 5712</a><a href="/articles/14251/decoding-chest-pain-cardiac-vs-non-cardiac-origins/" class="aleso_article_container" aria-label="Decoding Chest Pain: Cardiac vs. Non-Cardiac Origins Chest pain can be alarming, but understanding its nuances is crucial for distinguishing between potentially life-threatening cardiac issues and non-cardiac causes. This comprehensive guide explores the varied symptoms of chest discomfort, from dull aches to sharp stabs, and delves into advanced diagnostic tools like nuclear stress testing and echocardiograms that help pinpoint underlying issues quickly and accurately. December 17, 2025"> 5713 <div> 5714 <div class="background_container aleso_article_image"> 5715 <picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1765999928.4a678de8.10189146112.lg.jpg"></picture> 5716 </div> 5717 <h4>Decoding Chest Pain: Cardiac vs. Non-Cardiac Origins</h4> 5718 <p>Chest pain can be alarming, but understanding its nuances is crucial for distinguishing between potentially life-threatening cardiac issues and non-cardiac causes. This comprehensive guide explores the varied symptoms of chest discomfort, from dull aches to sharp stabs, and delves into advanced diagnostic tools like nuclear stress testing and echocardiograms that help pinpoint underlying issues quickly and accurately.</p> 5719 <p class="date_posted">December 17, 2025</p> 5720 </div> 5721</a> 5722</div> 5723 5724 </div> 5725 <div class="sidebar" data-sidebar="false"> 5726 5727 </div> 5728 </div> 5729</section>
5729<script> 5730 javascript.prototype[get_id()] = function () { 5731 if(document.querySelectorAll('.section_10 .aleso_article_container').length < 3) { 5732 document.querySelector('.section_10').style.display = 'none'; 5733 } 5734 } 5735</script>
5735 5736<style>.section_11 .block_container { 5737 display: flex; 5738 flex-direction: column; 5739} 5740.section_11 .block_container .block { 5741 display: flex; 5742 flex-wrap: wrap; 5743} 5744.section_11 .block_container .block .background_container { 5745 width: 100%; 5746 height: 680px; 5747 display: flex; 5748 justify-content: center; 5749 align-items: center; 5750} 5751.section_11 .block_container .block .background_container .background_content { 5752 position: relative; 5753 z-index: 20; 5754 width: 100%; 5755 height: 100%; 5756 display: flex; 5757 align-items: center; 5758 justify-content: center; 5759} 5760.section_11 .block_container .block .background_container .background_image { 5761 max-height: initial; 5762} 5763</style><style>.section_11 .block_container .block .background_container { 5764 height: 600px; 5765} 5766@media (max-width: 768px) { 5767 .section_11 .block_container .block .background_container { 5768 height: 400px; 5769 } 5770} 5771@media (max-width: 480px) { 5772 .section_11 .block_container .block .background_container { 5773 height: 300px; 5774 } 5775} 5776.section_11 .block_container .block .background_container .background_content .background_image { 5777 object-position: 50% 15%; 5778} 5779</style> 5780<section class="section_11" data-module="parallax_image" data-html="/system/modules/parallax_image/1.0.2/module.html" data-json="/custom/modules/parallax/home.json" data-page="" data-full-path="/"> 5781 <div class="content_container"> 5782 <div class="content"> 5783 <div class="block_container"> 5784 <div class="block"> 5785 <div class="background_container"> 5786 <div class="background_content"></div> 5787 <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_home_parallax_1.webp 420w, /cache/md-custom_images_home_parallax_1.webp 640w, /cache/lg-custom_images_home_parallax_1.webp 1024w, /cache/xl-custom_images_home_parallax_1.webp 1366w, /cache/custom_images_home_parallax_1.webp 1920w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1920px" data-lazy-picture="true" type="image/webp"><img alt="The image shows an aerial view of a city skyline with numerous high-rise buildings, including recognizable landmarks such as the Empire State Building and the Statue of Liberty in the distance, with water bodies interspersed among the urban landscape." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/home_parallax/1.jpg"></picture> 5788 </div> 5789 </div> 5790</div> 5791 </div> 5792 </div> 5793</section>
5793<script> 5794 javascript.prototype[get_id()] = function() { 5795 var json = {"settings":{"parallax":true},"content":[{"image":"\/custom\/images\/home_parallax\/1.jpg","content":""}]}; 5796 5797 function shift_image() { 5798 if ( 5799 json.settings.hasOwnProperty('parallax') && 5800 json.settings.parallax 5801 ) { 5802 $('.section_11 .background_image').each(function() { 5803 var elementHeight = $(this).height(); 5804 var startEffect = $(this).offset().top - $(window).height(); 5805 var endEffect = $(this).offset().top + elementHeight; 5806 5807 var pageHeight = $(document).height(); 5808 5809 var scrollDistance = endEffect - startEffect; 5810 var scrollPosition = $(document).scrollTop(); 5811 5812 if (scrollPosition > startEffect && scrollPosition < endEffect) { 5813 scrollPercent = ((scrollPosition - startEffect) / scrollDistance * 100).toFixed(4); 5814 /* $(this).css('transform', 'translate(-50%, -'+(100 - scrollPercent)+'%)'); */ 5815 $(this).css('object-position', 'center '+(100 - scrollPercent)+'%'); 5816 } 5817 }); 5818 } 5819 else { 5820 $('.section_11 .background_image').addClass('static'); 5821 } 5822 } 5823 5824 shift_image(); 5825 5826 $(window).resize(function() { 5827 shift_image(); 5828 }); 5829 5830 $(document).scroll(function() { 5831 shift_image(); 5832 }); 5833 } 5834</script>
5834<style></style><style>.section_12 { 5835 border-top: 5px solid #333333; 5836} 5837.section_12 .content_container .content .custom_footer { 5838 max-width: 1200px; 5839 margin: 50px auto; 5840 display: flex; 5841 flex-wrap: wrap; 5842 justify-content: space-between; 5843 align-items: center; 5844 box-sizing: border-box; 5845} 5846@media (max-width: 1024px) { 5847 .section_12 .content_container .content .custom_footer { 5848 padding: 40px; 5849 margin: auto; 5850 } 5851} 5852@media (max-width: 980px) { 5853 .section_12 .content_container .content .custom_footer { 5854 flex-direction: column; 5855 padding: 20px; 5856 margin: 30px 0px; 5857 } 5858} 5859.section_12 .content_container .content .custom_footer a { 5860 color: F48C1C; 5861 transition: all 0.2s; 5862} 5863.section_12 .content_container .content .custom_footer a:hover { 5864 color: #dac298; 5865 transition: all 0.2s; 5866} 5867.section_12 .content_container .content .custom_footer .text { 5868 flex-basis: 48%; 5869 box-sizing: border-box; 5870 display: flex; 5871 flex-wrap: wrap; 5872 justify-content: space-between; 5873} 5874@media (max-width: 1024px) { 5875 .section_12 .content_container .content .custom_footer .text { 5876 flex-basis: 45%; 5877 } 5878} 5879@media (max-width: 980px) { 5880 .section_12 .content_container .content .custom_footer .text { 5881 flex-direction: column; 5882 } 5883} 5884.section_12 .content_container .content .custom_footer .text h3 { 5885 line-height: 3.5rem; 5886 margin: 15px 0px 25px; 5887 color: #dac298; 5888} 5889.section_12 .content_container .content .custom_footer .text h4 { 5890 font-family: "Lato"; 5891 font-weight: 100; 5892 line-height: auto; 5893 margin: 0px; 5894 color: #dac298; 5895 margin-bottom: 20px; 5896} 5897@media (max-width: 480px) { 5898 .section_12 .content_container .content .custom_footer .text h4 { 5899 color: #333333; 5900 } 5901} 5902.section_12 .content_container .content .custom_footer .text .information { 5903 flex-basis: 50%; 5904 box-sizing: border-box; 5905} 5906.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="full_address_social"] div { 5907 line-height: 1.6rem; 5908} 5909.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] { 5910 display: flex; 5911 flex-direction: row; 5912 margin-top: 40px; 5913} 5914@media (max-width: 980px) { 5915 .section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] { 5916 margin-top: 20px; 5917 } 5918} 5919.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] { 5920 margin-right: 20px; 5921 font-size: 26px; 5922} 5923.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] a { 5924 color: #30516a; 5925} 5926.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] a:hover { 5927 color: #dac298; 5928} 5929.section_12 .content_container .content .custom_footer .text .hours { 5930 flex-basis: 50%; 5931 box-sizing: border-box; 5932} 5933@media (max-width: 980px) { 5934 .section_12 .content_container .content .custom_footer .text .hours { 5935 margin: 20px 0px; 5936 } 5937} 5938.section_12 .content_container .content .custom_footer .text .hours .row { 5939 display: flex; 5940 justify-content: space-between; 5941 line-height: 1.6rem; 5942} 5943.section_12 .content_container .content .custom_footer .map { 5944 flex-basis: 40%; 5945} 5946@media (max-width: 1024px) { 5947 .section_12 .content_container .content .custom_footer .map { 5948 flex-basis: 45%; 5949 } 5950} 5951@media (max-width: 980px) { 5952 .section_12 .content_container .content .custom_footer .map { 5953 width: 100%; 5954 } 5955} 5956.section_12 .content_container .content .custom_footer .map div[data-micro-template="map"] { 5957 height: 350px; 5958 width: 100%; 5959} 5960</style> 5961<section class="section_12" data-module="html_module" data-html="/custom/modules/custom_footer/module.html" data-json="/custom/modules/custom_footer/module.json" data-page="" data-full-path="/"> 5962 <div class="content_container"> 5963 <div class="content"> 5964 5965 <div class="custom_footer"> 5966 <div class="text"> 5967 <h4>Heartwise Cardiology</h4> 5968 5969 <div class="information"> 5970 <div data-micro-template="full_address_social"> 5971 <div>148 East 38th Street</div> 5972 <div></div> 5973 <div><span>New York</span>, <span>NY</span> <span>10016</span></div> 5974 <div>Existing Patients: <a href="tel:+12126794488" aria-label="(212) 679-4488" class="tel_12126794488" data-click-call="0">(212) 679-4488</a></div> 5975 <div>New Patients: <a href="tel:+12126794488" aria-label="(212) 401-2665" class="tel_12126794488" data-click-call="0">(212) 401-2665</a></div> 5976 5977 5978 <div data-micro-template="social_icons_container"> 5979 <div data-micro-template="social_icons"> 5980 <a href="https://www.facebook.com/profile.php?id=61575751475062#" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 5981</div><div data-micro-template="social_icons"> 5982 <a href="https://www.google.com/maps/place/Heartwise+Cardiology/@40.7485252,-73.9773268,21z/data=!4m6!3m5!1s0x89c25906a6b9e5fb:0x3483795b4d46e516!8m2!3d40.7484683!4d-73.9772785!16s%2Fg%2F1tsyqpvv?entry=ttu&g_ep=EgoyMDI1MDMzMS4wIKXMDSoJLDEwMjExNjQwSAFQAw%3D%3D" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 5983</div><div data-micro-template="social_icons"> 5984 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 5985</div> 5986</div> 5987</div> 5988 5989 </div> 5990 <div class="hours"> 5991 <div data-micro-template="office_hours"> 5992 <div class="row"><div class="day">Monday</div><div class="time">8:30 am - 5:00 pm</div></div> 5993 <div class="row"><div class="day">Tuesday</div><div class="time">8:30 am - 5:00 pm</div></div> 5994 <div class="row"><div class="day">Wednesday</div><div class="time">8:30 am - 5:00 pm</div></div> 5995 <div class="row"><div class="day">Thursday</div><div class="time">8:30 am - 5:00 pm</div></div> 5996 <div class="row"><div class="day">Friday</div><div class="time">8:30 am - 5:00 pm</div></div> 5997 <div class="row"><div class="day">Saturday</div><div class="time">Closed</div></div> 5998 <div class="row"><div class="day">Sunday</div><div class="time">Closed</div></div> 5999</div> 6000 </div> 6001 </div> 6002 <div class="map"> 6003 <div data-micro-template="map"> 6004 <iframe src="" allowfullscreen="" data-src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d188.91335563171376!2d-73.97732677988395!3d40.748525195819965!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25906a6b9e5fb%3A0x3483795b4d46e516!2sHeartwise%20Cardiology!5e0!3m2!1sen!2sus!4v1743625860145!
60045m2!1sen!2sus" aria-label="iframe"></iframe> 6005</div> 6006 </div> 6007</div> 6008 6009 </div> 6010 <div class="sidebar" data-sidebar="false"> 6011 6012 </div> 6013 </div> 6014</section><style>.section_13 { 6015 padding: 40px 40px; 6016} 6017.section_13 .content_container { 6018 max-width: 100%; 6019 justify-content: center; 6020 display: flex; 6021 margin-left: auto; 6022 margin-right: auto; 6023 box-sizing: border-box; 6024} 6025.section_13 .content_container .content { 6026 width: 100%; 6027} 6028.section_13 .content_container .content h2 { 6029 text-align: center; 6030} 6031.section_13 .content_container .content h3 { 6032 font-size: 1.5rem; 6033} 6034@media (max-width: 640px) { 6035 .section_13 { 6036 padding: 20px 20px; 6037 } 6038} 6039</style><style>.section_13 { 6040 padding: 0px; 6041 background-color: #333333; 6042 color: white; 6043} 6044.section_13 .content_container { 6045 max-width: initial; 6046} 6047.section_13 .content_container .content h3 { 6048 margin: 0px; 6049 font-size: 2.5rem; 6050} 6051.section_13 .copyright { 6052 margin: 40px 0; 6053 text-align: center; 6054 font-size: 0.75rem; 6055} 6056.section_13 .copyright div:not(:last-of-type) { 6057 margin-bottom: 10px; 6058} 6059.section_13 .copyright a { 6060 color: #ffffff; 6061} 6062.section_13 .copyright a:hover { 6063 color: #dac298; 6064} 6065.section_13 .more_services { 6066 display: flex; 6067 justify-content: space-between; 6068 align-items: center; 6069} 6070.section_13 .button { 6071 background-color: #f53457; 6072} 6073@media (max-width: 768px) { 6074 .section_13 { 6075 padding: 10px; 6076 } 6077 .section_13 .more_services { 6078 flex-direction: column; 6079 } 6080} 6081</style> 6082<section class="section_13" data-module="content" data-html="/custom/content/home_copyright/home_copyright.html" data-json="" data-page="" data-full-path="/"> 6083 <div class="content_container"> 6084 <div class="content"> 6085 <div class="copyright"> 6086 <div> 6087 © 2026 Heartwise Cardiology. All Rights Reserved. | <a href="/accessibility/" aria-label="Accessibility Policy">Accessibility Policy</a> | <a href="/privacy-policy/" aria-label="Privacy Policy">Privacy Policy</a> | <a href="/terms-conditions/" aria-label="Terms & Conditions">Terms & Conditions</a> 6088</div> 6089<div> 6090 <a href="https://doctorsinternet.com" aria-label="Medical Marketing" rel="noopener" target="_blank">Medical Marketing</a> 6091</div> 6092<div> 6093 <a href="/heart-specialist-near-me/" aria-label="Heart Specialist Near Me">Heart Specialist Near Me</a> | <a href="/cardiologist-near-me/" aria-label="Cardiologist Near Me">Cardiologist Near Me</a> | <a href="/cardiologist-in-midtown/" aria-label="Cardiologist in Midtown">Cardiologist in Midtown</a> 6094</div> 6095</div> 6096 6097 6098 6099 </div> 6100 </div> 6101</section><style>@media (max-width: 700px) { 6102 section[data-page="library"] .content_container .content .library_group_image { 6103 float: none; 6104 } 6105} 6106div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active .accordion_title_text { 6107 color: #333333; 6108} 6109.associations { 6110 display: flex; 6111 justify-content: center; 6112 flex-wrap: wrap; 6113 align-items: center; 6114} 6115.associations img { 6116 margin-bottom: 10px; 6117 padding: 30px; 6118} 6119section .content_container .content h2 { 6120 font-size: 36px; 6121 letter-spacing: 2px; 6122 color: #333333; 6123 font-weight: 300; 6124 text-transform: uppercase; 6125} 6126section .content_container .content h3 { 6127 font-size: 1.8rem; 6128 letter-spacing: 3px; 6129 font-weight: 300; 6130 color: #333333; 6131 text-transform: uppercase; 6132 line-height: 1.6em; 6133} 6134section .content_container .content h4 { 6135 font-size: 1.2rem; 6136 letter-spacing: 4px; 6137 font-weight: 300; 6138 color: #3c3c3c; 6139 text-transform: uppercase; 6140 line-height: 1.6em; 6141 font-family: "Lato"; 6142} 6143section[data-module="content"] .content_container { 6144 max-width: 1200px; 6145} 6146section[data-module="content"] .content_container .content h2 { 6147 font-size: 36px; 6148 letter-spacing: 2px; 6149 color: #333333; 6150 font-weight: 300; 6151 text-transform: uppercase; 6152} 6153section[data-module="content"] .content_container .content h3 { 6154 font-size: 1.8rem; 6155 letter-spacing: 3px; 6156 font-weight: 300; 6157 color: #333333; 6158 text-transform: uppercase; 6159 line-height: 1.6em; 6160} 6161section[data-module="content"] .content_container .content h4 { 6162 font-size: 1.2rem; 6163 letter-spacing: 4px; 6164 font-weight: 300; 6165 color: #3c3c3c; 6166 text-transform: uppercase; 6167 line-height: 1.6em; 6168 font-family: "Lato"; 6169} 6170section[data-module="content"] .content_container .content li, 6171section[data-module="content"] .content_container .content p { 6172 font-size: 1rem; 6173 line-height: 1.6em; 6174 word-spacing: 0.5px; 6175 letter-spacing: 0.25px; 6176} 6177</style> 6178 6179 <section data-type="system-lightbox-container"></section> 6180
6180<script src="/system/js/jquery-3.5.1.min.js"></script>
6180 6181
6181<script src="https://kit.fontawesome.com/10cd9403cd.js" async></script>
6181 6182
6182<script> 6183 var scroll_disabled = false; 6184 var extras_loaded = false; 6185 var form_button_lock = false; 6186 var click_lock = false; 6187 var _userway_config = { position: 5, color: "#053e67", language: "en", account: "72Ve6c8l9z" }; 6188 var timeout = false; 6189 var window_width = null; 6190 var window_height = null; 6191 var google_conversion = false; 6192 var facebook_conversion = false; 6193 var file_field_counter = 0; 6194 const api = 'https://referrals.di-api.com/'; 6195 var newSession = false; 6196 var newVisitor = false; 6197 let socket = null; 6198 const pageID = uuid(); 6199 6200 function gtag(arguments) { 6201 dataLayer.push(arguments); 6202 } 6203 6204 google_tracking = { 6205 gtag: function () { 6206 dataLayer.push(arguments); 6207 } 6208 }; 6209 6210 facebook_tracking = { 6211 fbq: function () { 6212 n.queue.push(arguments); 6213 } 6214 }; 6215 6216 function Socket(visitorId, sessionId, pageId) { 6217 const ws = "wss://socket.di-api.com/analytics" 6218 this.promise = new Promise((resolve, reject) => { 6219 this.visitorId = visitorId; 6220 this.sessionId = sessionId; 6221 this.pageId = pageId; 6222 this.connection = null; 6223 6224 this.attempts = 0; 6225 this.interval = 1000; 6226 this.has_reconnect = false; 6227 var multiplier = 1.25; 6228 6229 var connect = () => { 6230 this.connection = new WebSocket(`${ws}?visitor_id=${visitorId}&session_id=${sessionId}&page_id=${pageId}`); 6231 this.attempts++; 6232 6233 this.connection.onopen = (e) => { 6234 {/* console.log(this.connection); 6235 console.log(e); */} 6236 this.attempts = 0; 6237 this.interval = 1000; 6238 console.log('Connection established'); 6239 6240 resolve(1) 6241 } 6242 6243 this.connection.onclose = (e) => { 6244 console.log('Connection closed'); 6245 this.connection = null; 6246 6247 if (this.has_reconnect) { 6248 this.interval *= multiplier; 6249 setTimeout(function () { 6250 reconnect(); 6251 }, this.interval); 6252 } 6253 } 6254 6255 this.connection.onerror = (e) => { 6256 console.log('%cConnection error ', 'color: red; display: block; width: 100%;', e); 6257 this.connection.close(); 6258 resolve(-1) 6259 } 6260 6261 this.connection.onmessage = (e) => { 6262 if (e.data) { 6263 6264 } 6265 } 6266 } 6267 6268 var reconnect = () => { 6269 if (this.connection === null && this.id !== null) { 6270 console.log('Reconnecting...') 6271 connect(ws); 6272 return 1; 6273 } else { 6274 console.log('Needs to Reconnect...') 6275 return -1; 6276 } 6277 } 6278 6279 6280 if (this.id !== null) { 6281 connect() 6282 } 6283 }) 6284 } 6285 6286 Socket.prototype.kill = function () { 6287 if (this.connection !== null) { 6288 if (this.connection.readyState) { 6289 this.has_reconnect = false; 6290 this.connection.close(); 6291 return 1; 6292 } else { 6293 return -1; 6294 } 6295 } else { 6296 return -1; 6297 } 6298 } 6299 6300 Socket.prototype.get_state = function () { 6301 if (this.connection !== null) { 6302 return this.connection.readyState; 6303 } else { 6304 return null; 6305 } 6306 } 6307 6308 function get_visitor_id() { 6309 let visitorID = localStorage.getItem('visitorID'); 6310 if (!visitorID) { 6311 newVisitor = true; 6312 visitorID = uuid(); 6313 localStorage.setItem('visitorID', visitorID); 6314 } 6315 return visitorID; 6316 } 6317 6318 function get_session_id() { 6319 let sessionID = sessionStorage.getItem('sessionID'); 6320 if (!sessionID) { 6321 newSession = true; 6322 sessionID = uuid(); 6323 sessionStorage.setItem('sessionID', sessionID); 6324 } 6325 return sessionID; 6326 } 6327 6328 function get_tracking_permitted() { 6329 const consent = window.DiPrivacy.consent ?? null; 6330 if (consent === 'granted') { 6331 return 1; 6332 } else if (consent === 'denied') { 6333 return 0; 6334 } else { 6335 return null; 6336 } 6337 } 6338 6339 6340 function is_valid_interaction_type(type) { 6341 // Array of patterns (including static strings as patterns) 6342 const patterns = [ 6343 /^call$/, // Exact match of 'call' 6344 /^click$/, // Exact match of 'click' 6345 /^form_submission$/, // Exact match of 'form_submission' 6346 /^landing$/, // Exact match of 'landing' 6347 /^page$/, // Exact match of 'page' 6348 /^question_\d+$/, // Matches 'question_' followed by one or more digits 6349 /^tracking_permitted$/, // Exact match of 'tracking_permitted' 6350 ]; 6351 6352 // Iterate over the patterns and check if the type matches any of them 6353 for (let pattern of patterns) { 6354 if (pattern.test(type)) { 6355 return true; 6356 } 6357 } 6358 6359 return false; 6360 } 6361 6362 function track_submit(elem) { 6363 return new Promise((resolve, reject) => { 6364 6365 const visitorID = get_visitor_id(); 6366 const sessionID = get_session_id() 6367 6368 let aios_module = elem.closest('[data-mid]'); 6369 let aios_content = elem.closest('[data-cid]') 6370
6371 if (aios_module instanceof jQuery) { 6372 if (aios_module.length) { 6373 aios_module = aios_module[0] 6374 } else { 6375 aios_module = null; 6376 } 6377 } 6378 6379 if (aios_content instanceof jQuery) { 6380 if (aios_content.length) { 6381 aios_content = aios_content[0]; 6382 } else { 6383 aios_content = null; 6384 } 6385 } 6386 6387 6388 6389 let request = {}; 6390 request.action = 'page_interaction'; 6391 request.type = 'form_submission'; 6392 request.visitor_id = visitorID; 6393 request.session_id = sessionID; 6394 request.page_id = pageID; 6395 request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null; 6396 request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null; 6397 request.domain = window.location.hostname; 6398 request.page = window.location.pathname; 6399 request.href = null; 6400 request.source = (get_cookie('source') ? get_cookie('source') : null); 6401 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 6402 request.location = (get_cookie('location') ? get_cookie('location') : null); 6403 request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null; 6404 request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null; 6405 request.referrer = document.referrer; 6406 request.tracking_permitted = get_tracking_permitted(); 6407 6408 if (get_tracking_permitted() === 1) { } 6409 else { 6410 request.visitor_id = null; 6411 if (document.referrer) { 6412 request.referrer = (new URL(document.referrer)).hostname || null; 6413 } 6414 } 6415 6416 6417 6418 // console.log(request) 6419 6420 let xhr = new XMLHttpRequest(); 6421 xhr.open('POST', api); 6422 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 6423 xhr.onreadystatechange = function () { 6424 // console.log(xhr.readyState) 6425 if (xhr.readyState == 2) { 6426 resolve(true); 6427 } 6428 if (xhr.readyState == 4) { 6429 if (xhr.status == 200) { 6430 } else { 6431 } 6432 } 6433 } 6434 xhr.onerror = function () { 6435 reject(xhr.status); 6436 } 6437 xhr.send(encodeURI('action=' + JSON.stringify(request))); 6438 }); 6439 } 6440 6441 function track_click(elem) { 6442 return new Promise((resolve, reject) => { 6443 6444 const visitorID = get_visitor_id(); 6445 const sessionID = get_session_id() 6446 6447 let click_type = 'click'; 6448 let aios_module = elem.closest('[data-mid]'); 6449 let aios_content = elem.closest('[data-cid]') 6450 6451 if (aios_module instanceof jQuery) { 6452 if (aios_module.length) { 6453 aios_module = aios_module[0] 6454 } else { 6455 aios_module = null; 6456 } 6457 } 6458 6459 if (aios_content instanceof jQuery) { 6460 if (aios_content.length) { 6461 aios_content = aios_content[0]; 6462 } else { 6463 aios_content = null; 6464 } 6465 } 6466 6467 if (elem.hasAttribute('href')) { 6468 if (elem.getAttribute('href').indexOf('tel:') > -1) { 6469 click_type = 'call' 6470 } 6471 } 6472 6473 if (elem.tagName === 'BUTTON') { 6474 if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) { 6475 const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event'); 6476 if (elem_type === 'consent_accept' || elem_type === 'consent_reject') { 6477 click_type = 'tracking_permitted'; 6478 } else if (is_valid_interaction_type(elem_type)) { 6479 click_type = elem_type; 6480 } 6481 } 6482 } 6483 6484 if (elem.hasAttribute('data-click-tracking')) { 6485 if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) { 6486 const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event'); 6487 if (is_valid_interaction_type(elem_type)) { 6488 click_type = elem_type; 6489 } 6490 } 6491 } 6492 6493 let request = {}; 6494 request.action = 'page_interaction'; 6495 request.type = click_type; 6496 request.visitor_id = visitorID; 6497 request.session_id = sessionID; 6498 request.page_id = pageID; 6499 request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null; 6500 request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null; 6501 request.domain = window.location.hostname; 6502 request.page = window.location.pathname; 6503 request.href = elem.getAttribute('href'); 6504 request.source = (get_cookie('source') ? get_cookie('source') : null); 6505 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 6506 request.location = (get_cookie('location') ? get_cookie('location') : null); 6507 request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null; 6508 request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null; 6509 request.referrer = document.referrer; 6510 request.tracking_permitted = get_tracking_permitted(); 6511 6512 if (get_tracking_permitted() === 1) { } 6513 else { 6514 request.visitor_id = null; 6515 if (document.referrer) { 6516 request.referrer = (new URL(document.referrer)).hostname || null; 6517 } 6518 } 6519 6520 console.log(request); 6521 6522 let xhr = new XMLHttpRequest(); 6523 xhr.open('POST', api); 6524 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 6525 xhr.onreadystatechange = function () { 6526 // console.log(xhr.readyState) 6527 if (xhr.readyState == 2) { 6528 resolve(true); 6529 } 6530 if (xhr.readyState == 4) { 6531 if (xhr.status == 200) { 6532 } else { 6533 } 6534 } 6535 } 6536 xhr.onerror = function () { 6537 reject(xhr.status); 6538 } 6539 xhr.send(encodeURI('action=' + JSON.stringify(request))); 6540 }); 6541 } 6542 6543 function track_load() { 6544 return new Promise((resolve, reject) => { 6545 const visitorID = get_visitor_id(); 6546 const sessionID = get_session_id() 6547 {/* pageID = uuid(); */ } 6548 6549 let request = {}; 6550 request.action = 'page_interaction'; 6551 request.type = (newSession) ? 'landing' : 'page'; 6552 request.visitor_id = visitorID; 6553 request.session_id = sessionID; 6554 request.page_id = pageID; 6555 request.domain = window.location.hostname; 6556 request.page = window.location.pathname; 6557 request.source = (get_cookie('source') ? get_cookie('source') : null); 6558 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 6559 request.location = (get_cookie('location') ? get_cookie('location') : null); 6560 request.referrer = document.referrer; 6561 request.tracking_permitted = get_tracking_permitted(); 6562 6563 if (get_tracking_permitted() === 1) { } 6564 else { 6565 request.visitor_id = null; 6566 if (document.referrer) { 6567 request.referrer = (new URL(document.referrer)).hostname || null; 6568 } 6569 } 6570 6571 let xhr = new XMLHttpRequest(); 6572 xhr.open('POST', api); 6573 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 6574 xhr.onreadystatechange = function () { 6575 if (xhr.readyState == 2) { 6576 resolve(true); 6577 } 6578 if (xhr.readyState == 4) { 6579 if (xhr.status == 200) { 6580 } else { 6581 } 6582 } 6583 } 6584 xhr.onerror = function () { 6585 reject(xhr.status); 6586 } 6587 xhr.send(encodeURI('action=' + JSON.stringify(request))); 6588 }); 6589 } 6590 6591 function deferred_websocket() { 6592 return new Promise((resolve, reject) => { 6593 let visitorID = get_visitor_id(); 6594 const sessionID = get_session_id(); 6595 6596 if (get_tracking_permitted() !== 1) { 6597 visitorID = null; 6598 } 6599 6600 window.addEventListener('scroll', function () { 6601 if (socket === null) { 6602 socket = new Socket(visitorID, sessionID, pageID); 6603 resolve(true); 6604 } 6605 }); 6606 6607 window.addEventListener('mousemove', function () { 6608 if (socket === null) { 6609 socket = new Socket(visitorID, sessionID, pageID); 6610 resolve(true); 6611 } 6612 }); 6613 6614 window.addEventListener('click', function () { 6615 if (socket === null) { 6616 socket = new Socket(visitorID, sessionID, pageID); 6617 resolve(true); 6618 } 6619 }); 6620 }); 6621 } 6622 6623 function clone_lightbox(selected, dom, section, settings) { 6624 var counter = 0; 6625 clonedDom = dom.cloneNode(true); 6626 document.querySelector('section[data-type="system-lightbox-container"]').appendChild(clonedDom); 6627 document.querySelector('section[data-type="system-lightbox-container"] > [data-action="lightbox"]').setAttribute('data-origin', section); 6628 var lightboxItems = document.querySelectorAll('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]'); 6629 lightboxItems[selected].classList.add('selected'); 6630 6631 var closeLightboxElement = document.createElement('div'); 6632 closeLightboxElement.classList.add('close-icon'); 6633 closeLightboxElement.innerHTML = ` 6634 <i class="fal fa-times-circle"> 6635 `; 6636 closeLightboxElement.addEventListener('click', function (e) { 6637 e.preventDefault(); 6638 close_lightbox(); 6639 }); 6640 6641 var nextLightboxElement = document.createElement('div'); 6642 nextLightboxElement.classList.add('next-icon'); 6643 nextLightboxElement.innerHTML = ` 6644 <i class="fal fa-chevron-circle-right"> 6645 `; 6646 6647 var prevLightboxElement = document.createElement('div'); 6648 prevLightboxElement.classList.add('prev-icon'); 6649 prevLightboxElement.innerHTML = ` 6650 <i class="fal fa-chevron-circle-left"> 6651 `; 6652 6653 lightboxItems[selected].appendChild(closeLightboxElement); 6654 lightboxItems[selected].appendChild(nextLightboxElement); 6655 lightboxItems[selected].appendChild(prevLightboxElement); 6656 6657 $('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]').each(function () { 6658 $(this).attr('data-index', counter), 6659 counter++; 6660 }); 6661 6662 open_lightbox(); 6663 } 6664 6665 function open_lightbox() { 6666 $('section[data-type="system-lightbox-container"]').addClass('show'); 6667 setTimeout(function () { 6668 $('*[data-type="system-lightbox-close"]').click(close_lightbox); 6669 }, 400); 6670 6671 $('section[data-type="system-lightbox-container"] [data-lazy-picture="true"]').each(function () { 6672 var data_srcset = $(this).attr('data-srcset'); 6673 var srcset = $(this).attr('srcset'); 6674
6675 if (data_srcset !== '') { 6676 $(this).attr('srcset', data_srcset); 6677 } 6678 }); 6679 6680 $('section[data-type="system-lightbox-container"] [data-lazy-img="true"]').each(function () { 6681 var src = $(this).attr('data-src'); 6682 if (src) { 6683 $(this).attr('src', src); 6684 } 6685 }); 6686 } 6687 6688 function close_lightbox() { 6689 $('*[data-type="system-lightbox-close"]').unbind(); 6690 $('section[data-type="system-lightbox-container"]').removeClass('show'); 6691 setTimeout(function () { 6692 $('section[data-type="system-lightbox-container"]').empty(); 6693 }, 0); 6694 } 6695 6696 function reset_lightbox_container() { 6697 const $container = $('section[data-type="system-lightbox-container"]'); 6698 6699 // Remove only injected lightbox-content clones 6700 $container.find('section[data-type="system-lightbox-content"]').remove(); 6701 6702 // Remove container click handlers (or at least the ones you add via namespace) 6703 $container.off('click.autoOutsideClose'); 6704 } 6705 6706 (function wrapOpenLightbox() { 6707 if (window.__openLightboxWrapped2) return; 6708 window.__openLightboxWrapped2 = true; 6709 6710 function wait() { 6711 if (typeof window.open_lightbox !== 'function') { 6712 setTimeout(wait, 25); 6713 return; 6714 } 6715 6716 const originalOpen = window.open_lightbox; 6717 6718 // Global config 6719 window.override_lightbox = window.override_lightbox || false; 6720 window.lightbox_allowed_source = window.lightbox_allowed_source || null; 6721 window.lightbox_call_source = null; // ephemeral, set right before allowed opens 6722 6723 // Helper: run a function while temporarily marking the caller 6724 window.with_lightbox_source = function (sourceId, fn) { 6725 const prev = window.lightbox_call_source; 6726 window.lightbox_call_source = sourceId; 6727 try { 6728 return fn(); 6729 } finally { 6730 window.lightbox_call_source = prev; 6731 } 6732 }; 6733 6734 window.open_lightbox = function () { 6735 // If override is active, only allow calls tagged by the allowed source 6736 if (window.override_lightbox) { 6737 if (!window.lightbox_allowed_source) return; // locked down hard 6738 if (window.lightbox_call_source !== window.lightbox_allowed_source) { 6739 return; // ignore everyone else 6740 } 6741 } 6742 6743 return originalOpen.apply(this, arguments); 6744 }; 6745 } 6746 6747 wait(); 6748 })(); 6749 6750 function uuid(verbose = false) { 6751 let id = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => 6752 (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) 6753 ) 6754 if (verbose) { 6755 console.log(id); 6756 } 6757 return id 6758 } 6759 6760 function set_cookie(name, value, days, domain) { 6761 var expires = ''; 6762 if (domain == null) { 6763 var domain = window.location.hostname; 6764 domain = domain.split('.'); 6765 6766 if (domain.length == 2) { 6767 domain = domain.join('.'); 6768 } 6769 6770 if (domain.length == 3) { 6771 domain = domain.slice(Math.max(domain.length - 2, 1)); 6772 domain = domain.join('.'); 6773 } 6774 } 6775 if (days) { 6776 var date = new Date(); 6777 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 6778 expires = '; expires=' + date.toUTCString(); 6779 } 6780 document.cookie = name + '=' + (value || '') + expires + '; domain=' + domain + '; path=/'; 6781 } 6782 6783 function get_cookie(name) { 6784 var name_eq = name + '='; 6785 var ca = document.cookie.split(';'); 6786 for (var i = 0; i < ca.length; i++) { 6787 var c = ca[i]; 6788 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 6789 if (c.indexOf(name_eq) == 0) return c.substring(name_eq.length, c.length); 6790 } 6791 return null; 6792 } 6793 6794 function disable_scroll() { 6795 if (scroll_disabled) { 6796 return; 6797 } 6798 6799 scroll_disabled = true; 6800 scrollTop = $(window).scrollTop(); 6801 6802 $('body') 6803 .css({ 6804 'top': -1 * scrollTop, 6805 'position': 'fixed', 6806 'overflow': 'hidden', 6807 'pointer-events': 'none', 6808 }); 6809 } 6810 6811 function load_extras() { 6812 $.getScript('https://cdn.userway.org/widget.js'); 6813 javascript_deferred.load.forEach(function (v) { 6814 javascript_deferred.prototype[v](); 6815 }); 6816 6817 $('iframe[data-src]').each(function () { 6818 var src = $(this).attr('data-src'); 6819 if (!(src == null || src == '')) { 6820 $(this).attr('src', src); 6821 } 6822 }); 6823 6824 $('iframe[data-srcdoc]').each(function () { 6825 var srcdoc = atob($(this).attr('data-srcdoc')); 6826 if (!(srcdoc == null || srcdoc == '')) { 6827 $(this).attr('srcdoc', srcdoc); 6828 } 6829 }); 6830 } 6831 6832 function update_deferred_images() { 6833 $('[data-lazy-picture="false"]').each(function () { 6834 var data_srcset = $(this).attr('data-srcset'); 6835 var srcset = $(this).attr('srcset'); 6836
6837 if (data_srcset !== '') { 6838 $(this).attr('srcset', data_srcset); 6839 } 6840 }); 6841 6842 $('[data-lazy-img="false"]').each(function () { 6843 var src = $(this).attr('data-src'); 6844 if (src) { 6845 $(this).attr('src', src); 6846 } 6847 }); 6848 6849 /* $('source[data-srcset]').each(function() { 6850 if ($('body').attr('data-width') > 360) { 6851 var src = $(this).attr('data-srcset'); 6852 $(this).attr('srcset', src); 6853 } 6854 else { 6855 var src = $(this).attr('data-srcset-sm'); 6856 $(this).attr('srcset', src); 6857 } 6858 }); */ 6859 6860 6861 $('video source[data-src]').each(function () { 6862 if ($('body').attr('data-width') > 360) { 6863 var src = $(this).attr('data-src'); 6864 $(this).attr('src', src); 6865 $(this).closest('video')[0].load(); 6866 6867 if ($(this).closest('video')[0].hasAttribute('muted')) { 6868 $(this).closest('video')[0].play(); 6869 } 6870 } 6871 }); 6872 } 6873 6874 function lazy_load_deferred_images() { 6875 const lazySections = document.querySelectorAll('body > section') 6876 6877 lazySections.forEach(section => { 6878 // section.classList.add('lazying'); 6879 createObserver(section); 6880 }); 6881 6882 6883 function createObserver(el) { 6884 let observer; 6885 6886 let options = { 6887 root: null, 6888 rootMargin: "100px 0px", 6889 threshold: 0 6890 }; 6891 6892 observer = new window.IntersectionObserver(handleIntersect, options); 6893 observer.observe(el); 6894 } 6895 6896 function handleIntersect(entries, o) { 6897 entries.forEach((entry) => { 6898 if (entry.isIntersecting) { 6899 const lazyAssets = entry.target.querySelectorAll('[data-lazy-picture="true"], [data-lazy-img="true"]'); 6900 // console.log('Lazy Assets', lazyAssets); 6901 6902 lazyAssets.forEach((asset) => { 6903 load(asset); 6904 }); 6905 6906 o.unobserve(entry.target) 6907 6908 } else { 6909 } 6910 }); 6911 } 6912 6913 function load(asset) { 6914 6915 if (asset.tagName === 'IMG') { 6916 if (asset.hasAttribute('data-src')) { 6917 const source = asset.getAttribute('data-src'); 6918 if (source) { 6919 asset.setAttribute('src', source); 6920 asset.removeAttribute('data-src') 6921 } 6922 } else { 6923 } 6924 } 6925 6926 if (asset.tagName === 'SOURCE') { 6927 if (asset.hasAttribute('data-srcset')) { 6928 const source = asset.getAttribute('data-srcset'); 6929 if (source) { 6930 asset.setAttribute('srcset', source); 6931 asset.removeAttribute('data-srcset') 6932 } 6933 } else { 6934 } 6935 } 6936 } 6937 6938 // document.addEventListener('scroll', function () { 6939 6940 // }); 6941 } 6942 6943 6944 function set_resize_listeners() { 6945 window.addEventListener('resize', function () { 6946 if ($(window).width() == window_width) { 6947 return; 6948 } 6949 else { 6950 clearTimeout(timeout); 6951 timeout = setTimeout(get_viewport_size, 50); 6952 } 6953 window_width = $(window).width(); 6954 }); 6955 6956 window.addEventListener('resize', function () { 6957 if ($(window).height() == window_height) { 6958 return; 6959 } 6960 else { 6961 clearTimeout(timeout); 6962 timeout = setTimeout(get_viewport_size, 50); 6963 } 6964 window_height = $(window).height(); 6965 }); 6966 } 6967 6968 function set_scroll_listeners() { 6969 $(document).one('scroll', function () { 6970 if (!extras_loaded) { 6971 extras_loaded = true; 6972 load_extras(); 6973 } 6974 }); 6975 6976 $(document).one('mousemove', function () { 6977 if (!extras_loaded) { 6978 extras_loaded = true; 6979 load_extras(); 6980 } 6981 }); 6982 } 6983 6984 function set_accordion_listeners() { 6985 if ($('div[data-micro-template="accordion"]')) { 6986 $('div[data-accordion="title"').click(function () { 6987 var $container = $(this).closest($('div[data-micro-template="accordion_container"]')); 6988 var $toggles = $container.find('.accordion_toggle'); 6989 var $bodies = $container.find('.accordion_body'); 6990 var $titles = $container.find('.accordion_title'); 6991 6992 $titles.removeClass('active'); 6993 $toggles.text("+"); 6994 $bodies.slideUp(); 6995 6996 if (!$(this).next().is(":visible")) { 6997 $(this).addClass('active'); 6998 $(this).next().slideDown(); 6999 $(this).children('.accordion_toggle').text('-'); 7000 } 7001 }); 7002 } 7003 } 7004 7005 7006 function get_form_info(form) { 7007 const el = $(form)[0]; 7008 return { 7009 page: window.location.pathname, 7010 form: { 7011 id: el.getAttribute('data-form-id') || null, 7012 type: el.getAttribute('data-type') || null, 7013 category: el.getAttribute('data-category') || null, 7014 }, 7015 }; 7016 } 7017 7018 function dispatch_form_event(name, form, response) { 7019 const detail = get_form_info(form); 7020 detail.response = response; 7021 $(form)[0].dispatchEvent(new CustomEvent(name, { bubbles: true, detail: detail })); 7022 } 7023 7024 function form_actions() { 7025 if ($('form').length) { 7026 if ($('input[data-toggle="datepicker"]').length) { 7027 $.getScript('/system/js/datepicker/datepicker.js', function () { 7028 $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/system/js/datepicker/datepicker.css')); 7029 $('input[data-toggle="datepicker"]').each(function () { 7030 7031 let start_date; 7032 7033 if ($(this).attr('name') == 'dob' || $(this).attr('name') == 'birthdate' || $(this).attr('data-email-label').includes('Birth')) { 7034 start_date = '1907-03-04'; 7035 } 7036 7037 const data_start_date = $(this).attr('data-start-date'); 7038 7039 if (data_start_date) { 7040 start_date = data_start_date; 7041 } 7042 7043 if (start_date) { 7044 const match = /^([+-])(\d+)([dwy])$/.exec(start_date); 7045 if (match) { 7046 const [, sign, amountStr, unit] = match; 7047 const amount = parseInt(amountStr, 10) * (sign === '-' ? -1 : 1); 7048 start_date = new Date(); 7049 if (unit === 'd') start_date.setDate(start_date.getDate() + amount); 7050 else if (unit === 'w') start_date.setDate(start_date.getDate() + amount * 7); 7051 else if (unit === 'y') start_date.setFullYear(start_date.getFullYear() + amount); 7052 } else { 7053 start_date = new Date(start_date); 7054 } 7055 } else { 7056 start_date = new Date(); 7057 } 7058 7059 var disabled = { 7060 'mon': $(this).attr('data-mon'),
7061 'tue': $(this).attr('data-tue'), 7062 'wed': $(this).attr('data-wed'), 7063 'thu': $(this).attr('data-thu'), 7064 'fri': $(this).attr('data-fri'), 7065 'sat': $(this).attr('data-sat'), 7066 'sun': $(this).attr('data-sun'), 7067 }; 7068 7069 $(this).datepicker({ 7070 'autoHide': true, 7071 'startDate': start_date, 7072 'filter': function (date, view) { 7073 if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } } 7074 if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } } 7075 if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } } 7076 if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } } 7077 if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } } 7078 if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } } 7079 if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } } 7080 } 7081 }); 7082 }); 7083 }); 7084 } 7085 7086 $('form input[type="file"]').change(function () { 7087 var max_file_size = $(this).closest('[data-group="file"]').attr('data-max-size'); 7088 var current_label = $(this).closest('label').find('.label_name').text(); 7089 console.log(current_label); 7090 var current_form = $(this).closest('form'); 7091 var container = $(this).closest('[data-container="file"]'); 7092 var selected_file = $(this).val().split('/').pop().split('\\').pop(); 7093 7094 $(this).closest('label').find('.label_name').text(selected_file); 7095 $(this).closest('label').find('.label_name').append('<div class="remove_file"><i class="fal fa-times">'); 7096 7097 var total_file_size = 0; 7098 7099 $(current_form).find('input[type="file"]').each(function () { 7100 if ($(this).val().length > 0) { 7101 total_file_size += $(this).prop('files')[0].size; 7102 } 7103 }); 7104 7105 $(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2)); 7106 7107 if ($(container).next('[data-container="file"]').length < 1) { 7108 file_field_counter++; 7109 var current_name = $(container).attr('data-name'); 7110 var next_container = $(container).clone(true).insertAfter(container); 7111 $(next_container).find('input').attr('name', current_name + '_' + file_field_counter); 7112 $(next_container).find('input').val(''); 7113 $(next_container).find('label .label_name').text(current_label); 7114 } 7115 7116 if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) { 7117 $(current_form).find('.max_size_container').addClass('too_large'); 7118 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled'); 7119 $(current_form).find('[data-type="submit"]').addClass('disabled'); 7120 $(current_form).addClass('disabled'); 7121 } 7122 else { 7123 $(current_form).find('.max_size_container').removeClass('too_large'); 7124 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled'); 7125 $(current_form).find('[data-type="submit"]').removeClass('disabled'); 7126 $(current_form).removeClass('disabled'); 7127 } 7128 7129 $(container).find('.remove_file').click(function (e) { 7130 e.preventDefault(); 7131 $(container).remove(); 7132 7133 total_file_size = 0; 7134 7135 $(current_form).find('input[type="file"]').each(function () { 7136 if ($(this).val().length > 0) { 7137 total_file_size += $(this).prop('files')[0].size; 7138 } 7139 }); 7140 7141 if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) { 7142 $(current_form).find('.max_size_container').addClass('too_large'); 7143 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled'); 7144 $(current_form).find('[data-type="submit"]').addClass('disabled'); 7145 $(current_form).addClass('disabled'); 7146 } 7147 else { 7148 $(current_form).find('.max_size_container').removeClass('too_large'); 7149 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled'); 7150 $(current_form).find('[data-type="submit"]').removeClass('disabled'); 7151 $(current_form).removeClass('disabled'); 7152 } 7153 7154 if ($('form.disabled').length > 0) { 7155 $('form [data-type="submit_multi"]').addClass('disabled'); 7156 } 7157 else { 7158 $('form [data-type="submit_multi"]').removeClass('disabled'); 7159 } 7160
7161 $(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2)); 7162 }); 7163 }); 7164 7165 $('form *[data-required="true"], form *[data-required="1"]').each(function () { 7166 var placeholder = $(this).attr('placeholder'); 7167 $(this).attr('required', true); 7168 $(this).attr('placeholder', placeholder + ' *'); 7169 $(this).find('option[value=""]').text($(this).find('option[value=""]').text() + ' *'); 7170 }); 7171 7172 $('form fieldset').each(function () { 7173 var field_name = $(this).attr('name'); 7174 var default_value = $(this).attr('value'); 7175 7176 if (default_value !== '') { 7177 $(this).find('input[data-type="radio"][name="' + field_name + '"][value="' + default_value + '"]').attr('checked', true); 7178 $(this).find('input[data-type="radio"][id="' + field_name + '_' + default_value + '"]').attr('checked', true); 7179 $(this).find('input[data-type="checkbox"][name="' + default_value + '"]').attr('checked', true); 7180 $(this).find('input[data-type="checkbox"][id="' + field_name + '_' + default_value + '"]').attr('checked', true); 7181 } 7182 }); 7183 7184 $('form *[data-readonly="true"], form *[data-readonly="1"]').each(function () { 7185 $(this).attr('readonly', true); 7186 }); 7187 7188 $('form *[data-hidden="true"], form *[data-hidden="1"]').each(function () { 7189 $(this).css('display', 'none'); 7190 }); 7191 7192 $('form[data-dynamic="true"]').on('submit', function (e) { 7193 console.time('Click 2 Submit') 7194 e.preventDefault(); 7195 var submitted_form = $(this); 7196 var recaptcha_site_key = $(this).attr('data-recaptcha-site-key'); 7197 var recaptcha_secret_key = $(this).attr('data-recaptcha-secret-key'); 7198 var recaptcha_processor = $(this).attr('data-recaptcha-processor'); 7199 7200 if ( 7201 recaptcha_site_key !== '' && 7202 recaptcha_secret_key !== '' && 7203 recaptcha_processor !== '' 7204 ) { 7205 if (this.checkValidity()) { 7206 grecaptcha.ready(function () { 7207 grecaptcha.execute(recaptcha_site_key, { action: 'submit' }).then(function (token) { 7208 $.post(recaptcha_processor, { 7209 secret: recaptcha_secret_key, 7210 response: token 7211 }) 7212 .done(function (recaptcha) { 7213 prepare_submission(submitted_form, recaptcha).then((val) => { 7214 return submit_form(val.form_submit, val.recaptcha, val.form_data, val.db_only, val.recipients, val.recipients_add, val.ad_recipients, val.cc, val.cc_add, val.subject, val.category, val.is_hipaa, val.reply_to, val.pdf, val.ad_source, val.ad_campaign, val.ad_location, val.ad_source_key, val.ad_campaign_ke
7214y, val.ad_location_key, val.submission_url); 7215 }).then((val) => { 7216 // Done 7217 track_submit(submitted_form); 7218 7219 // Custom Event 7220 dispatch_form_event("tdi:form:success", submitted_form, val); 7221 7222 }); 7223 }) 7224 }); 7225 }); 7226 } 7227 } 7228 else { 7229 if (this.checkValidity()) { 7230 prepare_submission(submitted_form, null).then((val) => { 7231 return submit_form(val.form_submit, val.recaptcha, val.form_data, val.db_only, val.recipients, val.recipients_add, val.ad_recipients, val.cc, val.cc_add, val.subject, val.category, val.is_hipaa, val.reply_to, val.pdf, val.ad_source, val.ad_campaign, val.ad_location, val.ad_source_key, val.ad_campaign_key, val.ad_location_key, val.submission_url); 7232 }).then((val) => { 7233 // Done 7234 track_submit(submitted_form); 7235 7236 // Custom Event 7237 dispatch_form_event("tdi:form:success", submitted_form, val); 7238 7239 }); 7240 } 7241 } 7242 }); 7243 7244 $('form .button.submit[data-dynamic="true"]').click(function () { 7245 if (!form_button_lock && !click_lock) { 7246 click_lock = true; 7247 $(this).closest('form').find('input[type="submit"]')[0].click(); 7248 } 7249 setTimeout(function () { 7250 click_lock = false; 7251 }, 1000); 7252 }); 7253 7254 $('form select[name="location"]').change(function (e) { 7255 $(this).closest('form').find('input[name="date"').val(''); 7256 if ($(this).find(':selected').data('datesDisabled')) { 7257 var $selectedOption = $(this).find(':selected').data('datesDisabled'); 7258 $selectedOption = atob($selectedOption); 7259 7260 $(this).closest('form').find('input[data-toggle="datepicker"]').each(function () { 7261 var disabled = JSON.parse($selectedOption); 7262 $(this).datepicker('destroy'); 7263 $(this).datepicker({ 7264 'autoHide': true, 7265 'filter': function (date, view) { 7266 if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } } 7267 if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } } 7268 if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } } 7269 if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } } 7270 if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } } 7271 if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } } 7272 if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } } 7273 } 7274 }); 7275 $(this).datepicker('update'); 7276 }); 7277 } 7278 }); 7279 7280 7281 7282 $('form input[name^="phone"][data-type="text"]').on('input', function () { 7283 var el = this; 7284 var oldValue = el.value; 7285 var selStart = el.selectionStart; 7286 7287 // digits to the left of the caret in the OLD value 7288 var digitsLeft = oldValue.slice(0, selStart).replace(/\D/g, '').length; 7289 7290 var digits = oldValue.replace(/\D/g, ''); 7291 7292 7293 var intl = digits.length > 10; 7294 7295 var formatted; 7296 if (!intl) { 7297 var m = digits.slice(0, 10).match(/^(\d{0,3})(\d{0,3})(\d{0,4})$/); 7298 formatted = !m[2] ? m[1] : '(' + m[1] + ') ' + m[2] + (m[3] ? '-' + m[3] : ''); 7299 } else { 7300 formatted = '+' + digits.slice(0, 15); 7301 } 7302 7303 el.value = formatted; 7304 7305 if (el === document.activeElement) { 7306 var pos = 0, seen = 0; 7307 while (pos < formatted.length && seen < digitsLeft) { 7308 if (/\d/.test(formatted[pos])) seen++; 7309 pos++; 7310 } 7311 el.setSelectionRange(pos, pos); 7312 } 7313 }); 7314 } 7315 } 7316 7317 function prepare_submission(form_submit, recaptcha) { 7318 return new Promise((resolve, reject) => { 7319 console.time('prepare_submission()'); 7320 form_button_lock = true; 7321 $(form_submit).find('.button.submit[data-dynamic="true"]').text('Sending...'); 7322 7323 const appendLocation = $(form_submit).attr('data-append-location') === '1' ? true : false;
7324 const locationSelected = $(form_submit).find('select[name="location"] option:selected') ? $(form_submit).find('select[name="location"] option:selected').text() : null; 7325 7326 var form_data = {}; 7327 var recipients_add = []; 7328 var cc_add = []; 7329 var db_only = $(form_submit).attr('data-db-only'); 7330 var recipients = $(form_submit).attr('data-recipients'); 7331 var ad_recipients = $(form_submit).attr('data-ad-recipients'); 7332 var cc = $(form_submit).attr('data-cc'); 7333 var subject = $(form_submit).attr('data-subject'); 7334 var category = $(form_submit).attr('data-category') + (appendLocation && locationSelected ? ` (${locationSelected})` : ''); 7335 var is_hipaa = $(form_submit).attr('data-hipaa'); 7336 var reply_to = $(form_submit).attr('data-reply-to'); 7337 var pdf = $(form_submit).attr('data-pdf'); 7338 var submission_url = $(form_submit).attr('data-submission-url'); 7339 7340 var ad_source = $(form_submit).find('[data-ad-tracking="source"]').val(); 7341 var ad_campaign = $(form_submit).find('[data-ad-tracking="campaign"]').val(); 7342 var ad_location = $(form_submit).find('[data-ad-tracking="ad_location"]').val(); 7343 7344 var ad_source_key = (get_cookie('source') ? get_cookie('source') : null);
7345 var ad_campaign_key = (get_cookie('campaign') ? get_cookie('campaign') : null); 7346 var ad_location_key = (get_cookie('location') ? get_cookie('location') : null); 7347 7348 $(form_submit).find('input, textarea, select, fieldset').each(function () { 7349 if ( 7350 $(this).is('input:not([type="file"])') && 7351 $(this)[0].hasAttribute('name') && 7352 $(this)[0].hasAttribute('data-email-label') 7353 ) { 7354 value_obj = { 7355 'label': $(this).attr('data-email-label'), 7356 'name': $(this).attr('name'), 7357 'value': $(this).val(), 7358 'type': 'text' 7359 }; 7360 form_data[$(this).attr('name')] = value_obj; 7361 } 7362 7363 if ( 7364 $(this).is('textarea') && 7365 $(this)[0].hasAttribute('name') && 7366 $(this)[0].hasAttribute('data-email-label') 7367 ) { 7368 value_obj = { 7369 'label': $(this).attr('data-email-label'), 7370 'name': $(this).attr('name'), 7371 'value': $(this).val(), 7372 'type': 'textarea' 7373 }; 7374 form_data[$(this).attr('name')] = value_obj; 7375 } 7376 7377 if ( 7378 $(this).is('select') && 7379 $(this)[0].hasAttribute('name') && 7380 $(this)[0].hasAttribute('data-email-label') 7381 ) { 7382 value_obj = { 7383 'label': $(this).attr('data-email-label'), 7384 'name': $(this).attr('name'), 7385 'value': $(this).val(), 7386 'type': 'select' 7387 }; 7388 form_data[$(this).attr('name')] = value_obj; 7389 7390 if ( 7391 $(this).find(':selected').length > 0 && 7392 $(this).find(':selected')[0].hasAttribute('data-recipients') && 7393 $(this).find(':selected').attr('data-recipients').length 7394 ) { 7395 recipients_add.push($(this).find(':selected').attr('data-recipients')); 7396 } 7397 7398 if ( 7399 $(this).find(':selected').length > 0 && 7400 $(this).find(':selected')[0].hasAttribute('data-cc') && 7401 $(this).find(':selected').attr('data-cc').length 7402 ) { 7403 cc_add.push($(this).find(':selected').attr('data-cc')); 7404 } 7405 } 7406 7407 if ( 7408 $(this).is('fieldset') && 7409 $(this)[0].hasAttribute('name') && 7410 $(this)[0].hasAttribute('data-email-label') 7411 ) { 7412 var val = []; 7413 var keys = []; 7414 $(this).find('input:checked').each(function () { 7415 val.push($(this).attr('value')); 7416 keys.push($(this).attr('name')); 7417 }); 7418 value_obj = { 7419 'label': $(this).attr('data-email-label'), 7420 'name': $(this).attr('name'), 7421 'keys': keys.join('; '), 7422 'value': val.join('; '), 7423 'type': $(this).attr('type') 7424 }; 7425 form_data[$(this).attr('name')] = value_obj; 7426 } 7427 }); 7428 7429 console.timeEnd('prepare_submission()'); 7430 console.time('submit_form()'); 7431 resolve({ 7432 "form_submit": form_submit, 7433 "recaptcha": recaptcha, 7434 "form_data": form_data, 7435 "db_only": db_only, 7436 "recipients": recipients, 7437 "recipients_add": recipients_add, 7438 "ad_recipients": ad_recipients, 7439 "cc": cc, 7440 "cc_add": cc_add, 7441 "subject": subject, 7442 "category": category, 7443 "is_hipaa": is_hipaa, 7444 "reply_to": reply_to, 7445 "pdf": pdf, 7446 "ad_source": ad_source, 7447 "ad_campaign": ad_campaign, 7448 "ad_location": ad_location, 7449 "ad_source_key": ad_source_key,
7450 "ad_campaign_key": ad_campaign_key, 7451 "ad_location_key": ad_location_key, 7452 "submission_url": submission_url 7453 }) 7454 }); 7455 } 7456 7457 function submit_form(form_submit, recaptcha, form_data, db_only, recipients, recipients_add, ad_recipients, cc, cc_add, subject, category, is_hipaa, reply_to, pdf, ad_source, ad_campaign, ad_location, ad_source_key, ad_campaign_key, ad_location_key, submission_url) { 7458 return new Promise((resolve, reject) => { 7459 var email_list = []; 7460 var first_name = null; 7461 var last_name = null; 7462 7463 var file_size_total = 0; 7464 var files_uploaded = []; 7465 var files_selected = 0; 7466 7467 if ( 7468 form_submit[0].hasAttribute('data-google-conversion') && 7469 google_conversion 7470 ) { 7471 const conversion_code = $(form_submit[0]).attr('data-google-conversion'); 7472 if (conversion_code.length > 0) { 7473 google_tracking.gtag('event', 'conversion', { 'send_to': conversion_code }); 7474 } 7475 } 7476 7477 if ( 7478 form_submit[0].hasAttribute('data-facebook-conversion') && 7479 facebook_conversion 7480 ) { 7481 const conversion_type = $(form_submit[0]).attr('data-facebook-conversion'); 7482 if (conversion_type.length > 0) { 7483 facebook_tracking.fbq('track', conversion_type); 7484 } 7485 } 7486 7487 $(form_submit).find('input[type="file"]').each(function () { 7488 var file_selected = $(this).val(); 7489 if (file_selected.length > 0) { 7490 files_selected++; 7491 } 7492 }); 7493 7494 $(form_submit).find('input[type="file"]').each(function () { 7495 var file_to_upload = $(this).val(); 7496 var submit_promise = new Promise((res, rej) => { 7497 if (file_to_upload.length > 0) { 7498 var xhr = new XMLHttpRequest(); 7499 var file = $(this).prop('files')[0]; 7500 var formData = new FormData(); 7501 formData.append('file', file); 7502 7503 xhr.onreadystatechange = function () { 7504 if (xhr.readyState == 4) { 7505 files_uploaded.push(xhr.responseText); 7506 res(xhr.responseText); 7507 } 7508 } 7509 7510 xhr.open('POST', '/system/processors/file_upload/processor.php', true); 7511 xhr.send(formData); 7512 } else { 7513 res('') 7514 } 7515 }).then((file) => { 7516 if (file) { 7517 return file; 7518 } else { 7519 return ''; 7520 } 7521 }); 7522 files_uploaded.push(submit_promise); 7523 }); 7524 7525 $(form_submit).find('input[type="email"]').each(function () { 7526 email_list.push($(this).val()); 7527 }); 7528 7529 $(form_submit).find('input[type="text"][data-email-label="First Name"]').each(function () { 7530 first_name = $(this).val(); 7531 }); 7532 7533 $(form_submit).find('input[type="text"][data-email-label="Last Name"]').each(function () { 7534 last_name = $(this).val(); 7535 }); 7536 7537 7538 if ((first_name === null || first_name === '') && (last_name === null || last_name === '')) { 7539 $(form_submit).find('input[type="text"][data-email-label="Full Name"], input[type="text"][data-email-label="Name"]').each(function () { 7540 const full_name = $(this).val(); 7541 first_name = full_name; 7542 }); 7543 } 7544 7545 7546 console.time('POST to processor.php') 7547 $.post('/system/processors/validation/processor.php', { 7548 type: 'date_time', 7549 val: null 7550 }) 7551 .done(function (validation) { 7552 console.timeEnd('POST to processor.php') 7553 console.time('Wait For Files') 7554 7555 Promise.all(files_uploaded).then((value) => { 7556 console.timeEnd('Wait For Files') 7557 let uploaded_files = value.filter(file => file); 7558 console.log(JSON.stringify(uploaded_files)); 7559 console.log('Files Uploaded'); 7560 console.time('POST to submission_url') 7561 $.post(submission_url, { 7562 validation: validation, 7563 db_only: db_only, 7564 recipients: recipients, 7565 recipients_add: JSON.stringify(recipients_add), 7566 ad_recipients: ad_recipients, 7567 recaptcha: recaptcha, 7568 cc: cc, 7569 cc_add: JSON.stringify(cc_add), 7570 subject: subject, 7571 category: category, 7572 first_name: first_name, 7573 last_name: last_name, 7574 is_hipaa: is_hipaa, 7575 reply_to: reply_to, 7576 pdf: pdf, 7577 ad_source: ad_source, 7578 ad_campaign: ad_campaign, 7579 ad_location: ad_location, 7580 ad_source_key: ad_source_key,
7581 ad_campaign_key: ad_campaign_key, 7582 ad_location_key: ad_location_key, 7583 files: JSON.stringify(uploaded_files), 7584 data: JSON.stringify(form_data), 7585 email_list: JSON.stringify(email_list) 7586 }) 7587 .done(function (data) { 7588 console.timeEnd('POST to submission_url') 7589 7590 form_button_lock = false; 7591 form_submit[0].reset(); 7592 $(form_submit).find('.remove_file').click(); 7593 $('form .button.submit[data-dynamic="true"]').each(function () { 7594 var placeholder = $(this).attr('placeholder'); 7595 $(this).text(placeholder); 7596 }); 7597 7598 if ($(form_submit).attr('data-action') !== '') { 7599 var action = $(form_submit).attr('data-action'); 7600 7601 if (action == 'close_lightbox') { 7602 close_lightbox(); 7603 } 7604 7605 if (action == 'redirect') { 7606 var redirect = $(form_submit).attr('data-confirmation'); 7607 window.location.replace(redirect); 7608 } 7609 7610 if (action == 'function') { 7611 var form_complete_function = $(form_submit).attr('data-confirmation'); 7612 window[form_complete_function](form_data); 7613 } 7614 7615 if (action == 'none') { } 7616 } 7617 else { 7618 var confirmation = $(form_submit).children('section[data-type="system-lightbox-content"]'); 7619 $(confirmation).clone().appendTo('section[data-type="system-lightbox-container"]'); 7620 open_lightbox(); 7621 } 7622 resolve(false); 7623 }); 7624 }); 7625 }); 7626 }); 7627 } 7628 7629 function get_viewport_size() { 7630 viewport_size = viewport(); 7631 $('body').attr('data-width', viewport_size.width); 7632 $('body').attr('data-height', viewport_size.height); 7633 } 7634 7635 function viewport() { 7636 var e = window, a = 'inner'; 7637 if (!('innerWidth' in window)) { 7638 a = 'client'; 7639 e = document.documentElement || document.body; 7640 } 7641 return { width: e[a + 'Width'], height: e[a + 'Height'] }; 7642 } 7643 7644 function set_tracking() { 7645 const url_parameters = new URLSearchParams(window.location.search); 7646 const source = url_parameters.get('source'); 7647 const campaign = url_parameters.get('campaign'); 7648 const location = url_parameters.get('location'); 7649 7650 if (source) { 7651 set_cookie('source', source, 90, null); 7652 } 7653 7654 if (campaign) { 7655 set_cookie('campaign', campaign, 90, null); 7656 } 7657 7658 if (location) { 7659 set_cookie('location', location, 90, null); 7660 } 7661 } 7662 7663 function load_functions() { 7664 javascript.load.forEach(function (v) { 7665 javascript.prototype[v](); 7666 }); 7667 } 7668 7669 function load_fa() { 7670 /* $.getScript('https://kit.fontawesome.com/10cd9403cd.js'); */ 7671 } 7672 7673 function load_default_subs() { 7674 $('video:not(.no_subs)').each(function () { 7675 var found_video = $(this); 7676 7677 if ($(this).find('source').length) { 7678 var video_source = $(this).find('source').attr('src').split('/').pop(); 7679 } 7680 else { 7681 var video_source = $(this).attr('src').split('/').pop(); 7682 } 7683 7684 $.get('/custom/content/subs/' + video_source + '.vtt', function (data) { 7685 if (data === 'Error') { 7686 $('<track/>') 7687 .attr('label', 'English') 7688 .attr('kind', 'subtitles') 7689 .attr('srclang', 'en') 7690 .attr('src', '/system/content/subs/no_audio.vtt') 7691 .appendTo(found_video); 7692 } 7693 else { 7694 $('<track/>') 7695 .attr('label', 'English') 7696 .attr('kind', 'subtitles') 7697 .attr('srclang', 'en') 7698 .attr('src', '/custom/content/subs/' + video_source + '.vtt') 7699 .appendTo(found_video); 7700 } 7701 }) 7702 .fail(function (data) { 7703 $('<track/>') 7704 .attr('label', 'English') 7705 .attr('kind', 'subtitles') 7706 .attr('srclang', 'en') 7707 .attr('src', '/system/content/subs/no_audio.vtt') 7708 .appendTo(found_video); 7709 }); 7710 }); 7711 } 7712 7713 function stalling(ms) { 7714 return setTimeout(() => { 7715 }, ms); 7716 } 7717 7718 function initialize() { 7719 console.log('Initializing...'); 7720 window_width = $(window).width(); 7721 window_height = $(window).height(); 7722 get_viewport_size(); 7723 viewport_size = viewport(); 7724 update_deferred_images(); 7725 set_resize_listeners(); 7726 set_scroll_listeners(); 7727 set_accordion_listeners(); 7728 form_actions(); 7729 set_tracking(); 7730 load_functions(); 7731 load_fa(); 7732 load_default_subs(); 7733 7734 track_load(); 7735 deferred_websocket(); 7736 lazy_load_deferred_images(); 7737 7738 // Add Tracking to each button 7739 const selection = document.querySelectorAll('section[class^="section_"], #di-consent-banner, #di-cookie-pref-dialog'); 7740 for (var i = 0; i < selection.length; i++) { 7741 var found_buttons = selection[i].querySelectorAll("a[href], [data-click-tracking]:not(a[href]), button:not(a[href])"); 7742 found_buttons = Array.from(new Set(found_buttons)); 7743 found_buttons.forEach(element => { 7744 element.addEventListener('click', function (e) { 7745 var stall = false;
7746 if (this.tagName === 'A' && this.getAttribute('href') !== '#') { 7747 stall = stalling(500); 7748 } 7749 7750 track_click(this).then(() => { 7751 if (stall !== false) { 7752 clearTimeout(stall); 7753 } 7754 }) 7755 }) 7756 }); 7757 } 7758 } 7759 7760 $(document).ready(initialize); 7761</script>
7761 7762 7763
7763<script> 7764 // Override any default global variables from SYSTEM_JS 7765 (function() { 7766 var overrides = { 7767 }; 7768 7769 // Apply overrides to global scope 7770 for (var key in overrides) { 7771 if (overrides.hasOwnProperty(key)) { 7772 window[key] = overrides[key]; 7773 } 7774 } 7775 })(); 7776 </script>
7776 7777 7778
7778<script src="https://api.aleso.ai/aleso.js" async></script>
7778 7779 </body> 7780 </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.