/* eslint-disable */ (function () { let source, isMicroSite, activationStatus, enterpriseNumber; let secondIframeLoaded = false, onceClickedOnSecFrame = false, windowIframeBody; try { if ( window && window.parent && window.parent.__INITIAL_STATE__ && window.parent.__INITIAL_STATE__.homeReducer && window.parent.__INITIAL_STATE__.homeReducer.data ) { let homeReducerData = window.parent.__INITIAL_STATE__.homeReducer.data; isMicroSite = true; //ask microsite enterpriseNumber = homeReducerData.enterpriseInfo ? homeReducerData.enterpriseInfo.businessNumber : homeReducerData.businessNumber; source = 6; activationStatus = homeReducerData.activationStatus; //var businessName = homeReducerData.name; } } catch (e) { log(e); } if (!document.getElementsByClassName) { document.getElementsByClassName = function (className) { return this.querySelectorAll("." + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } const CONSIDER_MIN_WIDTH = { "https://grabercustomstructures.com" : true } let bfi; let totalWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; if (CONSIDER_MIN_WIDTH[window?.origin]) { let widths = [ window.innerWidth, document.documentElement?.clientWidth, document.body?.clientWidth ].filter(Boolean); // Removes undefined or falsy values totalWidth = Math.min(...widths); } let totalHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; let tries = 1; let extensionInterval; let env; let windowIframe; window.be_webchat = null; function playBubbleSound() { let context, source = "https://d3cnqzq0ivprch.cloudfront.net/prod/media/notification-sound.mp3"; try { window.AudioContext = window.AudioContext || window.webkitAudioContext; context = new AudioContext(); let request = new XMLHttpRequest(); request.open("GET", source, true); request.responseType = "arraybuffer"; request.onload = function () { context.decodeAudioData( request.response, function (buffer) { let source = context.createBufferSource(); source.buffer = buffer; source.connect(context.destination); source.start(0); context.resume(); }, function (e) { console.log("error", e); } ); }; request.send(); } catch (e) { if (/Edge\/|Trident\/|MSIE /.test(navigator.userAgent)) { let audio = document.createElement("audio"); audio.autoplay = true; audio.src = source; audio.play(); } } } function checkIsAgentPreview (isPreview, widgetAgent) { return (isPreview === 1 || isPreview === "1") && widgetAgent.length > 0; }; function getGoodBot(type) { const goodBots = [ "facebookexternalhit", "Facebot", "Googlebot", "Google", "LinkedInBot", ]; const ua = navigator.userAgent; let isGoodBots = false; let botName = ""; for (let i = 0; i < goodBots.length; i++) { const bot = goodBots[i]; if (ua.indexOf(bot) > -1) { isGoodBots = true; botName = bot.toLowerCase(); break; } } if (type == "isGoodBot") { return isGoodBots; } else { botName = botName != "" ? botName : "facebook"; botName = botName.indexOf("face") > -1 ? "facebook" : botName; botName = botName.indexOf("linked") > -1 ? "linked-in" : botName; return botName; } } function initIframe() { let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid); if (!bfdiv) { tries++; if (tries > 50) { return false; } setTimeout(initIframe, 500); return; } if (!bfdiv.firstChild) { bfdiv.appendChild(bfi); } else if (bfdiv.firstChild && bfdiv.firstChild.nodeName != "IFRAME") { bfdiv.insertBefore(bfi, bfdiv.firstChild); } } let winHeight = 100; let winWidth = "431px"; if (window.innerHeight < 100) { winHeight = window.innerHeight; } if (CONSIDER_MIN_WIDTH[window?.origin]) { if (totalWidth < 500) { winWidth = "100%"; } } else { if (window.innerWidth < 500) { winWidth = "100%"; } } window.addEventListener("resize", function () { if (window.innerHeight < 727) { winHeight = window.innerHeight; } else { winHeight = 773; } }); const openWebchatFromOutside = (objFromClient) => { const firstIframe = document.getElementById("bewebchat"); const secondIframe = document.getElementById("window-iframe"); firstIframe.contentWindow.postMessage( { type: "post-message-from-outside", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft, mFullView: window.mFullView, isPreview: window.isPreview, widgetAgent: JSON.stringify(window.widgetAgent), draftSessionId: window.draftSessionId }, "*" ); secondIframe.contentWindow.postMessage( { type: "post-message-from-outside-chat", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft, locale: window.locale, mFullView: window.mFullView, isPreview: window.isPreview, widgetAgent: JSON.stringify(window.widgetAgent), draftSessionId: window.draftSessionId }, "*" ); }; window.onmessage = function (e) { if (e.data && e.data.split) { const isAgentPreview = checkIsAgentPreview(window.isPreview, window.widgetAgent); let dataReceivedSplit = e.data.split("***"); let dataReceived = dataReceivedSplit[0]; let widthReceived = dataReceivedSplit[1]; if (totalWidth < 960) { widthReceived = "drawer"; } if (dataReceived == "icon-clicked") { if (!secondIframeLoaded) { if (!onceClickedOnSecFrame) { loadNewIframe(); } } document.getElementById("bewebchat").style.height = isAgentPreview ? "70px" : "80px"; document.getElementById("bewebchat").style.width = isAgentPreview ? "200px" : "70px"; if (widthReceived == "floating") { document .getElementById("window-iframe") .setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:${isAgentPreview ? "0" : "20px"}; position:fixed; overflow:hidden; width:${winWidth}; z-index:9999998; border: 0; height: ${(isAgentPreview ? 90 : winHeight) + "%"}; ` ); } else { document .getElementById("window-iframe") .setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:0px" : "right:0px"}; bottom:0px; position:fixed; overflow:hidden; width:${winWidth}; height: 100%; border: 0;` ); } window.be_webchat = { ...window.be_webchat, windowOpened: true, }; if(isAgentPreview) { window.dispatchEvent(new CustomEvent("webchat:opened", { detail: true })); } } else if (dataReceived == "icon-closed") { let wid = "20px"; if (totalWidth < 960) { wid = "20px"; } let element = document.getElementById("window-iframe"); element.style.height = 0; secondIframeLoaded = false; window.be_webchat = { ...window.be_webchat, windowOpened: false, }; if(isAgentPreview){ window.dispatchEvent(new CustomEvent("webchat:closed", { detail: false })); } } else if (dataReceived == "getwidth") { e.source.postMessage( { width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update, }, "*" ); } else if (dataReceived == "show-bubble") { bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:340px"}; ${isAgentPreview ? "height:70px" : "height:227px"}; border: 0;` ); } else if (dataReceived == "hide-bubble") { bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:70px"}; ${isAgentPreview ? "height:70px" : "height:80px"}; border: 0;` ); } else if (dataReceived == "get-parent-url") { if (!window.be_webchat) { window.be_webchat = { open: openWebchatFromOutside, }; } e.source.postMessage( { type: "put-parent-url", url: document.location.href, hostname: document.location.hostname, href: document.location.origin, src: "birdeye", isMicroSite: isMicroSite ? isMicroSite : false, frmMicrosite: frmMicrosite ? frmMicrosite : false, isWidgetAlignLeft: window.isWidgetAlignLeft ? window.isWidgetAlignLeft : false, mFullView: window.mFullView ? window.mFullView : false, enterpriseNumber: isMicroSite ? enterpriseNumber : null, width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update, bizDataResp: window.bizDataResp, beWebchatWindowObj: JSON.stringify(window.be_webchat), updatedBizData: true, locale: window.locale, isPreview: window.isPreview ? window.isPreview : 0, widgetAgent: window.widgetAgent ? window.widgetAgent : "", draftSessionId: window.draftSessionId }, "*" ); } else if ( dataReceived == "push-datalayer" && window && typeof window.dataLayer !== "undefined" ) { window.dataLayer.push(JSON.parse(dataReceivedSplit[1])); } else if ( dataReceived == "push-avbDatalayer" && window && typeof window.avbData !== "undefined" ) { window.avbData.push(JSON.parse(dataReceivedSplit[1])); } else if (dataReceived == "push-analytics") { try { try { const config = JSON.parse(dataReceivedSplit[1]); switch (config.googleAnalyticsVersion) { case "UA": if (ga && typeof ga == "function") { const nonInteractionObj = config.nonInteraction ? { nonInteraction: 1 } : null; ga( "send", "event", "webchat", config.action, config.actionLabel, nonInteractionObj ); } else { console.warn( "Webchat Analytics ReferenceError: ga is not defined" ); } break; case "GST": if (gtag && typeof gtag == "function") { const nonInteractionObj = config.nonInteraction ? { non_interaction: true } : {}; gtag("event", config.action, { event_category: "webchat", event_label: config.actionLabel.trim(), value: 1, ...nonInteractionObj, }); } else { console.warn( "Webchat Analytics ReferenceError: gtag is not defined" ); } break; } } catch (e) { console.warn("Webchat Analytics", e); } } catch (e) { console.warn("Webchat Analytics", e); } } else if (dataReceived == "be-custom-event-fire") { const customEventData = JSON.parse(dataReceivedSplit[1]); const be_event = new CustomEvent("beWebchatCustomEvent", { detail: customEventData, }); window.parent.document.dispatchEvent(be_event); } else if (dataReceived == "bubble-icon-sound") { playBubbleSound(); } } }; if (document.readyState === "complete") { extensionInterval = setInterval(function () { env = window.envObj ? window.envObj : {}; const bizResp = window.bizDataResp ? window.bizDataResp : {}; const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0; if (Object.keys(env).length && locationListLen > 0) { getFirstIframeAndInit(env); } }, 100); } else { if (window.addEventListener) { // DOM2 standard window.addEventListener("load", windowOnloadHandler, false); } else if (window.attachEvent) { // Microsoft's precursor to it, IE8 and earlier window.attachEvent("onload", windowOnloadHandler); } else { // Some pre-1999 browser window.onload = windowOnloadHandler; } function windowOnloadHandler() { env = window.envObj ? window.envObj : {}; const bizResp = window.bizDataResp ? window.bizDataResp : {}; const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0; if (locationListLen > 0) { getFirstIframeAndInit(env); } } } function getFirstIframeAndInit(env) { extensionInterval && clearInterval(extensionInterval); const isAgentPreview = checkIsAgentPreview(window.isPreview, window.widgetAgent); bfi = document.createElement("iframe"); bfi.name = "bfiframe"; bfi.id = "bewebchat"; bfi.loading = "lazy"; bfi.title = "Webchat widget"; bfi.src = env.protocol + env.domain + `/getBubbleContent?update=${window.update}&source=${window.source}&bNum=${window.bNum}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}&isWidgetAlignLeft=${window.isWidgetAlignLeft}&mFullView=${window.mFullView}&isPreview=${window.isPreview}&widgetAgent=${window.widgetAgent}&draftSessionId=${draftSessionId}`; bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:70px"}; ${isAgentPreview ? "height:70px" : "height:80px"}; border:0` ); initIframe(); bfi.onload = loadNewIframe.bind(this); const firstIframeEl = document.getElementById("bewebchat"); firstIframeEl.style.colorScheme = "light"; } function appendSecondIframe() { secondIframeLoaded = true; onceClickedOnSecFrame = true; let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid); bfdiv.appendChild(windowIframe); const bodyEl = document.querySelector("#window-iframe").parentElement .parentElement; windowIframeBody = document.querySelector("#window-iframe") .contentDocument ? document.querySelector("#window-iframe").contentDocument.body : null; bodyEl.addEventListener("click", function (e) { let emojiEl = windowIframeBody && windowIframeBody.querySelector(".emoji-wrap"); if ( emojiEl && e.target !== document.querySelector("#window-iframe") ) { emojiEl.classList.add("hide-emoji"); emojiEl.style.display = "none"; } }); const secondIframeEl = document.getElementById("window-iframe"); secondIframeEl.style.colorScheme = "light"; } function loadNewIframe() { windowIframe = document.createElement("iframe"); windowIframe.name = "wciframe"; windowIframe.id = "window-iframe"; windowIframe.loading = "lazy"; windowIframe.title = "Webchat widget"; windowIframe.src = env.protocol + env.domain + `/getChatWindowContent?emailRequired=${window.emailRequired}&bNum=${window.bNum}&mobileRequired=${window.mobileRequired}&defaultCountryCode=${window.defaultCountryCode}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}&isMicroSite=${window.isMicroSite}&activationStatus=${window.activationStatus}&isWidgetAlignLeft=${window.isWidgetAlignLeft}&mFullView=${window.mFullView}&isPreview=${window.isPreview}&widgetAgent=${window.widgetAgent}&draftSessionId=${draftSessionId}`; windowIframe.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; width:346px; z-index:9999998; border: 0; height: 0px;` ); appendSecondIframe(); } })(); var wid = 1630226147; var update = 0; var soundOff = 1; var envObj = {"domain":"webchat.birdeye.com","protocol":"https://","isWidgetAlignLeft":false,"mFullView":false,"isPreview":0,"widgetAgent":""}; var emailRequired = 0; var isPreview = 0; var widgetAgent = ""; var defaultCountryCode = 0; var mobileRequired = 1; var apikey = "bb82a77d56e513105a288d8a3b443c5b4cea995ca000c7e8"; var widgetApiVersion = 2; var bNum = 96938; var update = 0; var isMicroSite = false; var frmMicrosite = false; var isWidgetAlignLeft = false; var mFullView = false; var activationStatus = false; var source = false; var bizDataResp = {"businessId":165774735504649,"chatTheme":"floating","chatIcon":"twocolored","chatIconValue":null,"bannerColor":"#420a5b","bannerTextColor":"#FFFFFF","btnColor":"#420a5b","btnTxtColor":"#FFFFFF","enableReplyInBusinessHr":1,"enableReplyPostBusinessHr":1,"autoReplyTxt":"Thank you for contacting CureMD Demo! Someone from our team will reach out shortly.","replyTextPostBusinessHr":"Thank you for contacting us! We are currently out of business hours, but we’ll get back to you as soon as we can.","headerHeadline":"Let's Chat!","headerDescription":"We streamline the process for connecting providers and patients. Where should we start?","thankyouMsgHeadline":null,"thankyouMsgDescription":null,"webChatOnlineClosingMessageHeader":"We will text you !","webChatOnlineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Texting Number] ","apiKey":null,"businessDomain":null,"onlineClosingMessageBody":null,"onlineWelcomeMessageHeader":null,"smb":false,"popupInterval":10,"microsite":0,"userProfile":[{"userProfileName":"Philip","userProfileImage":""}],"businessLocations":[{"businessId":165774735504649,"location":"New York, NY","businessSMSPhoneNumber":"(973) 846-1454","countryCode":"US","zipcode":"10005","address1":"80 Pine Street","address2":"21st Floor","chatEnabled":true,"shortBusinessId":935372,"businessAlias":"NovelHealth","businessName":"NovelHealth","name":"NovelHealth","city":"New York","state":"NY","locationName":"NovelHealth","latitude":40.7061589,"longitude":-74.0068304,"emailId":"sales@novelhealth.ai","phone":"(516) 696-8340"}],"chatBubble":"How can we help your practice today?","enableChatBubble":1,"enableChatBubbleSound":1,"chatIconColor":"#420a5b","chatIconForeColor":"#ffffff","supportedCountryCodes":["US","PR","VI","MX","CA"],"businessName":"NovelHealth","widgetName":null,"enabled":1,"widgetConfigId":96938,"businessSMSPhoneNumber":null,"teams":null,"isLiveChatEnabled":true,"isChatbotEnabled":true,"enableGoogleAnalytics":false,"googleAnalyticsVersion":"","googleTrackingId":"","webChatOfflineClosingMessageHeader":"We will text you !","webChatOfflineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Texting Number].","liveChatOfflineClosingMessageHeader":"Text us!","liveChatOfflineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOnlineClosingMessageHeader":"Text us!","liveChatOnlineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOfflineWelcomeMessage":"Hey [Contact first name] , thanks for the message - looks like you caught us after hours. We will text you as soon as we're back. \n\nNOTICE: If you are a patient attempting to contact your provider, please visit their website or call your provider directly. NovelHealth has partnerships with thousands of caregivers who use our services to connect and engage with their patients. We are not a medical practice and do not forward patient communication.","liveChatOnlineWelcomeMessage":"Hey [Contact first name] thanks for chatting! Give us a moment to get you connected with the right person.\n\nNOTICE: If you are a patient attempting to contact your provider, please visit their website or call your provider directly. NovelHealth has partnerships with thousands of caregivers who use our services to connect and engage with their patients. We are not a medical practice and do not forward patient communication.","installed":1,"websites":["https%3A//app.leaphealth.ai","https%3A//dev.leap.health","https%3A//dev.leap.health%3A4200","https%3A//dev.leap.health%3A444","https%3A//sandbox.leaphealth.ai","https%3A//staging.leap.health"],"statusUpdateOn":"2026-05-13T03:01:08.000+00:00","liveChatOnlineTextMessage":"Hey [Contact first name] thank you for contacting [Business Name]! No need to wait in front of a web browser to chat with us. We will send you a text as soon as we are available.\n\n\nNOTICE: If you are a patient attempting to contact your provider, please visit their website or call your provider directly. NovelHealth has partnerships with thousands of caregivers who use our services to connect and engage with their patients. We are not a medical practice and do not forward patient communication.","liveChatOfflineTextMessage":"Hey [Contact first name] thanks for contacting [Business Name]! We are currently closed, but we'll send you a text as soon as we're back!
\n
NOTICE: If you are a patient attempting to contact your provider, please visit their website or call your provider directly. NovelHealth has partnerships with thousands of caregivers who use our services to connect and engage with their patients. We are not a medical practice and do not forward patient communication.
","locationHierarchy":null,"externalId":96938,"allLocationDisabled":0,"emailMandatory":true,"customFields":null,"disclaimer":"By sending this message, you expressly consent to receive communications from us. You may opt out at any time.","disclaimerLinks":[],"autoDetectLocationEnabled":false,"disclaimerSelectionStatus":0,"robinInsideBusinessHours":null,"robinOutsideBusinessHours":null,"enablePrechatForm":1,"prechatFormInsideBusinessHours":1,"prechatFormOutsideBusinessHours":1,"chatbotHours":null,"timerDisplay":1,"timerSeconds":180,"mobileView":"fullView","widgetAgent":[],"fallbackMessage":null,"accountType":3,"businessOpen":false,"locale":null,"fields":null,"bubbleBGColor":"rgba(66, 10, 91, 0.1)"}; var locale = "en"; var draftSessionId = null;