/* 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 = 2211101190; 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 = "e3e185a1306bef74b9f5530a77dee6e65d1142ac58a783d0"; var widgetApiVersion = 2; var bNum = 146300421387258; var update = 0; var isMicroSite = false; var frmMicrosite = false; var isWidgetAlignLeft = false; var mFullView = false; var activationStatus = false; var source = false; var bizDataResp = {"businessId":146300421387258,"chatTheme":"floating","chatIcon":"twocolored","chatIconValue":null,"bannerColor":"#F8F8F8","bannerTextColor":"#000000","btnColor":"#003c71","btnTxtColor":"#FFFFFF","enableReplyInBusinessHr":1,"enableReplyPostBusinessHr":1,"autoReplyTxt":"Thank you for contacting Classic Cleaners! 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":"We will text you!","headerDescription":"Hello! Our team is here to help. Enter your message below and one of our reps will text you shortly.","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":20,"microsite":0,"userProfile":[{"userProfileName":"","userProfileImage":""}],"businessLocations":[{"businessId":146307469199453,"location":"Carmel, IN - 12730 Meeting House Road","businessSMSPhoneNumber":"(317) 576-3892","countryCode":"US","zipcode":"46032","address1":"12730 Meeting House Road","address2":"","chatEnabled":true,"shortBusinessId":87920,"businessAlias":"Classic Cleaners - Store #15","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Carmel","state":"IN","locationName":"Classic Cleaners","latitude":39.9721062,"longitude":-86.1970961,"emailId":"info@classiccleaners.com","phone":"(317) 571-0144"},{"businessId":150835385294149,"location":"Carmel, IN - 1438 W Main St Suite 105, Ste. 105","businessSMSPhoneNumber":"(317) 830-3186","countryCode":"US","zipcode":"46032","address1":"1438 W Main St Suite 105","address2":"Ste. 105","chatEnabled":true,"shortBusinessId":374961,"businessAlias":"Classic Cleaners - Store #21","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Carmel","state":"IN","locationName":"Classic Cleaners","latitude":39.9784543,"longitude":-86.1547871,"emailId":"info@classiccleaners.com","phone":"(317) 969-8344"},{"businessId":146307669495679,"location":"Carmel, IN - 14635 North Gray Road","businessSMSPhoneNumber":"(317) 576-3890","countryCode":"US","zipcode":"46033","address1":"14635 North Gray Road","address2":"","chatEnabled":true,"shortBusinessId":87932,"businessAlias":"Classic Cleaners - Store #14","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Carmel","state":"IN","locationName":"Classic Cleaners","latitude":40.0014315,"longitude":-86.0916417,"emailId":"info@classiccleaners.com","phone":"(317) 846-5644"},{"businessId":146307337170922,"location":"Carmel, IN - 5790 E Main St, Ste 130","businessSMSPhoneNumber":"(317) 576-3811","countryCode":"US","zipcode":"46033","address1":"5790 E Main St","address2":"Ste 130","chatEnabled":true,"shortBusinessId":87912,"businessAlias":"Classic Cleaners - Store #1","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Carmel","state":"IN","locationName":"Classic Cleaners","latitude":39.9790383,"longitude":-86.071316,"emailId":"info@classiccleaners.com","phone":"(317) 571-8844"},{"businessId":146307190470061,"location":"Fishers, IN","businessSMSPhoneNumber":"(317) 576-3845","countryCode":"US","zipcode":"46037","address1":"11501 Geist Pavilion Dr","address2":"Ste 110","chatEnabled":true,"shortBusinessId":87903,"businessAlias":"Classic Cleaners - Store #7","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Fishers","state":"IN","locationName":"Classic Cleaners","latitude":39.9562466,"longitude":-85.9164989,"emailId":"info@classiccleaners.com","phone":"(317) 576-1644"},{"businessId":146550431183320,"location":"Indianapolis, IN - 350 E New York St, (E. New York & N. New Jersey)","businessSMSPhoneNumber":"(317) 576-3287","countryCode":"US","zipcode":"46204","address1":"350 E New York St","address2":"(E. New York & N. New Jersey)","chatEnabled":true,"shortBusinessId":93639,"businessAlias":"Classic Cleaners - Store #18","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.771149,"longitude":-86.1506819,"emailId":"info@classiccleaners.com","phone":"(317) 352-6244"},{"businessId":146300669363581,"location":"Indianapolis, IN - 4216 E 62nd St, (at Allisonville Rd)","businessSMSPhoneNumber":"(317) 434-1388","countryCode":"US","zipcode":"46220","address1":"4216 E 62nd St","address2":"(at Allisonville Rd)","chatEnabled":true,"shortBusinessId":87804,"businessAlias":"Classic Cleaners - Store #4","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.8686133,"longitude":-86.0977331,"emailId":"info@classiccleaners.com","phone":"(317) 253-6544"},{"businessId":146300711015191,"location":"Indianapolis, IN - 4923 N College Ave","businessSMSPhoneNumber":"(317) 434-1436","countryCode":"US","zipcode":"46205","address1":"4923 N College Ave","address2":"","chatEnabled":true,"shortBusinessId":87806,"businessAlias":"Classic Cleaners - Store #17","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.8434587,"longitude":-86.1452373,"emailId":"info@classiccleaners.com","phone":"(317) 829-0044"},{"businessId":146300534961241,"location":"Indianapolis, IN - 5650 West 86th Street, Suite 138","businessSMSPhoneNumber":"(317) 344-8710","countryCode":"US","zipcode":"46278","address1":"5650 West 86th Street","address2":"Suite 138","chatEnabled":true,"shortBusinessId":87794,"businessAlias":"Classic Cleaners - Store #16","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.9122322,"longitude":-86.261315,"emailId":"info@classiccleaners.com","phone":"(317) 824-1144"},{"businessId":146342537069663,"location":"Indianapolis, IN - 8071 Knue Road","businessSMSPhoneNumber":"(317) 434-1505","countryCode":"US","zipcode":"46250","address1":"8071 Knue Road","address2":"","chatEnabled":true,"shortBusinessId":88639,"businessAlias":"Classic Cleaners - Store #5","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.90212229,"longitude":-86.0590871,"emailId":"info@classiccleaners.com","phone":"(317) 845-5244"},{"businessId":146307065372365,"location":"Indianapolis, IN - 8150 Oaklandon Rd, #108","businessSMSPhoneNumber":"(317) 434-1364","countryCode":"US","zipcode":"46236","address1":"8150 Oaklandon Rd","address2":"#108","chatEnabled":true,"shortBusinessId":87901,"businessAlias":"Classic Cleaners - Store #6","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.9038361,"longitude":-85.958389,"emailId":"info@classiccleaners.com","phone":"(317) 823-9328"},{"businessId":146300441383351,"location":"Indianapolis, IN - 8515 Westfield Blvd.","businessSMSPhoneNumber":"(317) 622-6505","countryCode":"US","zipcode":"46240","address1":"8515 Westfield Blvd.","address2":"","chatEnabled":true,"shortBusinessId":87783,"businessAlias":"Classic Cleaners - Store #8","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Indianapolis","state":"IN","locationName":"Classic Cleaners","latitude":39.91122089,"longitude":-86.1333325,"emailId":"info@classiccleaners.net","phone":"(317) 254-8844"},{"businessId":146723901468739,"location":"Westfield, IN","businessSMSPhoneNumber":"(317) 648-5348","countryCode":"US","zipcode":"46074","address1":"16072 Spring Mill Station","address2":"Suite 102","chatEnabled":true,"shortBusinessId":97461,"businessAlias":"Classic Cleaners - Store #9 - New","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Westfield","state":"IN","locationName":"Classic Cleaners","latitude":40.0205737,"longitude":-86.1633907,"emailId":"info@classiccleaners.com","phone":"(317) 569-1944"},{"businessId":166991158519495,"location":"Zionsville, IN - 3199 S. US-421","businessSMSPhoneNumber":"(463) 888-6647","countryCode":"US","zipcode":"46077","address1":"3199 S. US-421","chatEnabled":true,"shortBusinessId":1008950,"businessAlias":"Classic Cleaners - Store #10 - New","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Zionsville","state":"IN","locationName":"Classic Cleaners","latitude":39.9966377,"longitude":-86.2637342,"emailId":"info@classiccleaners.com","phone":"(317) 659-5644"},{"businessId":147576932864741,"location":"Zionsville, IN - 6846 Whitestown Pkwy","businessSMSPhoneNumber":"(317) 342-1250","countryCode":"US","zipcode":"46077","address1":"6846 Whitestown Pkwy","address2":"","chatEnabled":true,"shortBusinessId":137814,"businessAlias":"Classic Cleaners - Store #20","businessName":"Classic Cleaners","name":"Classic Cleaners","city":"Zionsville","state":"IN","locationName":"Classic Cleaners","latitude":39.94993729,"longitude":-86.3391614,"emailId":"info@classiccleaners.com","phone":"(317) 942-0844"}],"chatBubble":"Have a question? We are here to help!","enableChatBubble":1,"enableChatBubbleSound":1,"chatIconColor":"#003c71","chatIconForeColor":"#FFFFFF","supportedCountryCodes":["US","PR","VI","MX","CA"],"businessName":"Classic Cleaners","widgetName":null,"enabled":1,"widgetConfigId":1086,"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":"We'll text you!","liveChatOfflineClosingMessageBody":"We'll follow up with you soon. You can always text us at [Business Texting Number].","liveChatOnlineClosingMessageHeader":"Text us!","liveChatOnlineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOfflineWelcomeMessage":"We're closed right now but we got your message. We'll text you on your number when we're back!","liveChatOnlineWelcomeMessage":"Give us a moment while we look for someone available to help you.","installed":1,"websites":["https%3A//classiccleaners-com.translate.goog","https%3A//classiccleaners.com"],"statusUpdateOn":"2026-04-18T03:01:08.000+00:00","liveChatOnlineTextMessage":"Thank you for contacting Classic Cleaners! Someone from our team will reach out shortly.","liveChatOfflineTextMessage":"Thank you for contacting Classic Cleaners! We are currently closed, but we'll text you when we're back!","locationHierarchy":null,"externalId":146300421387258,"allLocationDisabled":0,"emailMandatory":false,"customFields":null,"disclaimer":"By sending this message, you expressly consent to receive communications from us. You may opt out at any time.","disclaimerLinks":[],"autoDetectLocationEnabled":true,"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":"#F8F8F8"}; var locale = "en"; var draftSessionId = null;