{"version":3,"sources":["livechat.js"],"names":["floatingChatBtnHtml","chatContainerCss","profile","emailValue","arguments","length","undefined","domains","en","messenger","customText","formErrorInvalidEmail","systemMessages","transferredToParticipant","transferredToGroup","inputPlaceholder","captureFields","locationNotSupported","es","shareLocation","soundNotification","printTranscipt","prepopulatedFields","k","v","closeConfirmationMessage","domain","welcomeHeader","readCookie","languageCancel","afterHoursEmailHelpText","userEmail","afterHoursEmailSentSuccess","integrationId","soundNotificationEnabled","transcriptPrintingEnabled","menuItems","imageUpload","fileUpload","clearHistoryMessage","embedded","setViewportScale","containerId","isRequiredText","browserStorage","hideWidgetAfterBusinessHours","scheduleCallback","isCallbackEnabled","requestCallbackList","customConfirmationMessage","web2CampaignAPIHost","postChatSurveyInputPlaceHolderText","fixedHeader","displayStyle","carouselType","conversationCreated","clearMessagesTimeout","participantJoined","participantLeft","console","conversationTerminated","lang","collectEmail","defaultFields","l","concat","p","emailField","rawFormData","splice","chatProfiles","setTimeout","vivrIframe","preChatWrap","startChat","f9chat","document","validateOnBlur","field","chatScript","getElementById","userDetails","querySelector","preChatForm","useFloatingBtn","usePreChatForm","chatContainer","chatFloatingBtnContainer","chatInitialized","init","_f9chat$userDetails","_userDetails$match","isPreChatValid","theForm","dataset","floatingBtn","textContent","match","pop","fields","window","location","hostname","includes","replace","type","test","chatProfile","find","_profile$domains","x","closest","createElement","isFormValid","div","setAttribute","classList","remove","body","style","innerHTML","selectedRadio","appendChild","hideChatWindow","appendFloatingChatBtn","addEventListener","add","charAt","decodeURI","initChat","StartLiveChat","res","status","json","text","then","data","el","id","s","getElementsByTagName","parentNode","insertBefore","showChatWindow","F9","Chat","Wrapper","cdn","useBusinessHours","languages","enabled","backgroundColor","defaultToBrowserLocale","allowUnconfiguredLanguages","label","code","typeLang","default","l10n","_objectSpread","messagerCustomText","_toConsumableArray","customColors","brandColor","conversationColor","actionColor","catch","err","initVIVR","_step","_iterator","_createForOfIteratorHelper","FormData","n","done","_step$value","_slicedToArray","value","key","e","f","vivrURL","encodeURIComponent","email","navigator","userAgent","language","onload","display","src","_step2","_iterator2","querySelectorAll","_loop","trim","_step3","_iterator3","name","nameEQ","encodeURI","ca","cookie","split","i","c","substring","indexOf"],"mappings":"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","file":"livechat.js","sourcesContent":["// Advanced Five9 Chat\n\nconst floatingChatBtnHtml = `\n \n \n`;\n\nconst chatContainerCss = `\n .chat-container {\n height: 0;\n width: 0;\n position: fixed;\n bottom: 0;\n right: 0;\n z-index: 99999;\n border-radius: 30px;\n overflow: hidden;\n background-color: transparent;\n transition: height 200ms ease-in-out 0s;\n }\n .chat-container.is--visible {\n height: 600px;\n width: 100%;\n max-width: 400px;\n background-color: #fff;\n box-shadow: 0 0 15px rgba(0,0,0,.5);\n }\n .chat-container::after {\n display: block;\n height: 100px;\n width: 100px;\n position: absolute;\n content: url('data:image/svg+xml,');\n top: calc(50% - 50px);\n left: calc(50% - 50px);\n transform: scale(.5);\n opacity: 0.2;\n animation: chat-animate 1.5s infinite;\n }\n .chat-container::before {\n display: block;\n height: 100px;\n width: 100px;\n position: absolute;\n content: url('data:image/svg+xml,');\n top: calc(50% - 50px);\n left: calc(50% - 50px);\n transform: scale(.5);\n opacity: 0.2;\n animation: chat-animate 1.5s infinite;\n animation-delay: -0.75s;\n }\n @keyframes chat-animate {\n to {\n transform: scale(1.8);\n opacity: 0\n }\n }\n .chat-container .f9ChatEmbedded {\n height: 100%;\n top: 0;\n border: 0;\n border-top: 3px solid #65758E;\n box-shadow: none;\n }\n .chat-container .chat-toggle-btn {\n position: absolute;\n height: 45px;\n width: 45px;\n line-height: 45px;\n padding: 0;\n top: 10px;\n right: 10px;\n background-color: #4B5DFF;\n color: #fff;\n z-index: 99999;\n border: 0;\n border-radius: 50%;\n transition: background-color 200ms ease-in-out 0s, color 200ms ease-in-out 0s;\n }\n .chat-container .chat-toggle-btn:hover {\n background-color: #D8F793;\n color: #333;\n box-shadow: 0 0 15px rgba(0,0,0,.3);\n }\n .chat-container .chat-toggle-btn .svg-icon {\n margin-top: -3px;\n height: 18px;\n width: 18px;\n vertical-align: middle;\n box-sizing: content-box;\n }\n @media (min-width: 576px) {\n .chat-container {\n bottom: 20px;\n right: 20px;\n }\n }\n @media (max-height: 710px) {\n .chat-container {\n bottom: 0;\n right: 0;\n }\n .chat-container.is--visible {\n height: 100%;\n }\n .chat-container .f9ChatEmbedded {\n height: 100%;\n }\n }\n`;\n\n// html for the prechat box\nconst preChatFormHtml = (emailValue = '') => {\n return `\n \n
\n \n\n
\n

Welcome!

\n

Before we get started, please fill out the details below.

\n
\n
\n \n \n \n
\n
\n \n `;\n};\n\n// custom text/messaging and translation\nconst messagerCustomText = {\n en: {}, // enter English custom text if any\n es: {\n formErrorInvalidEmail: 'El correo electrónico no es válido',\n formErrorInvalidQuestion: 'La pregunta no es válida',\n formErrorInvalidName: 'El nombre no es válido',\n headerText: '¿Cómo podemos ayudar?',\n inputPlaceholder: 'Escriba un mensaje...',\n inputPlaceholderBlocked: 'Escriba un mensaje...',\n locationNotSupported:\n 'Su navegador no admite los servicios de ubicación o están desactivados. Por favor, escriba su ubicación.',\n locationServicesDenied:\n 'Este sitio web no puede acceder a su ubicación. Permita el acceso en la configuración o escriba su ubicación.',\n shareLocation: 'Compartir Ubicación',\n uploadDocument: 'Adjuntar Archivo',\n uploadPhoto: 'Agregar Imagen',\n soundNotification: 'Habilitar Sonido',\n printTranscipt: 'Imprimir Transcripción',\n startConversation: 'Iniciar Conversación',\n conversationTerminated: 'La conversación ha terminado.',\n cancelConversation: 'Cancelar',\n closeConfirmationMessage: '¿Está seguro de que quiere terminar la conservación?',\n closeConfirmationCancel: 'Cancelar',\n closeConfirmationEndChat: 'Terminar la Conversación',\n welcomeHeader: 'Bienvenido',\n welcomeDescription: 'Antes de comenzar, por favor complete los detalles que se encuentran más abajo.',\n languageContinue: 'Continuar',\n languageCancel: 'Cancelar',\n afterHoursHelpText: 'Fuera del horario laboral',\n emailContentLabel: 'Contenido',\n afterHoursEmailHelpText: 'Fuera del horario laboral, el formulario de correo electrónico está disponible',\n emailContentPlaceholder: 'Contenido...',\n outOfBusinessHoursMessageTitle: 'Fuera del horario laboral',\n afterHoursEmailSentSuccess: '¡Éxito!',\n afterHoursEmailSentMessage: 'El correo electrónico ha sido enviado.',\n afterHoursEmailModalClose: 'Cerrar',\n afterHoursStartNew: 'Iniciar Nuevo',\n afterHoursSendEmail: 'Enviar Correo Electrónico',\n afterHoursSendEmailCancel: 'Cancelar',\n chatEndedMessage: 'Su sesión de conversación ha terminado',\n downloadTranscript: 'Descargar Transcripción',\n clearHistory: 'Borrar Historial',\n clearHistoryMessage: 'Su historial se borrará en {minutos}',\n startNewChat: 'Iniciar Nueva Conversación',\n closeWindow: 'Cerrar Ventana',\n endChatconfirmationHeader: 'Terminar Conversación',\n isRequiredText: 'es obligatorio',\n isTypingText: 'está escribiendo',\n areTypingText: 'están escribiendo',\n unknownUser: 'Usuario Desconocido',\n startSurvey: 'Iniciar Encuesta',\n optionalText: 'Texto Opcional',\n postChatSurveyHeaderText: 'Texto de Encabezado de la Encuesta de Publicación Posterior a la Conversación',\n postChatSurveyLabelText: 'Texto de Etiqueta de la Encuesta Posterior a la Conversación',\n postChatSurveyInputPlaceHolderText: 'Texto de Marcador de Posición de Entrada de Encuesta Posterior a la Conversación',\n postChatSurveyCancelButtonText: 'Cancelar',\n postChatSurveySubmitButtonText: 'Enviar',\n },\n};\n\n// custom system messaging and translation\nconst systemMessages = {\n en: {}, // enter English custom text if any\n es: {\n conversationCreated: 'Gracias por contactarnos.',\n participantAccepted: 'Usted ha sido conectado con un agente.',\n participantJoined: 'Un participante se ha unido a la conversación.',\n participantLeft: 'Un participante ha abandonado la conversación.',\n transferredToParticipant: 'La conversación ha sido transferida a {name}.',\n transferredToGroup: 'Esa conversación ha sido transferida al grupo {group}.',\n conversationTerminated: 'La conversación ha terminado.',\n },\n};\n\n// return capture fields depending if email needs to be collected\nconst captureFields = (lang, collectEmail = true) => {\n const defaultFields = [\n { k: 'name', l: `${lang === 'es' ? 'Nombre' : 'Name'}`, p: '' },\n { k: 'Phone', l: `${lang === 'es' ? 'Teléfono' : 'Phone'}`, p: '' },\n { k: 'Question', l: `${lang === 'es' ? 'Pregunta' : 'Question'}`, p: '' },\n ];\n\n // collect only on marketing website\n const emailField = { k: 'email', l: `${lang === 'es' ? 'Correo Electrónico' : 'Email Address'}`, p: '' };\n\n if (collectEmail) {\n defaultFields.splice(1, 0, emailField);\n }\n\n return defaultFields;\n};\n\n// mapping chat profile and domains\nconst chatProfiles = [\n {\n profile: 'Chat_U', // default profile if domain is not listed\n domains: null,\n },\n {\n profile: 'VIVR',\n domains: [\n 'login.certus.com',\n 'americansafetycouncil.com',\n 'amersc.com',\n 'certus.com',\n 'course.uceusa.com',\n 'fusion.certus.com',\n 'home.uceusa.com',\n 'myaccount.uceusa.com',\n ],\n },\n {\n profile: 'Chat_AAA',\n domains: ['aaadriverprogram.com'],\n },\n {\n profile: 'Chat_DS',\n domains: [\n 'delawaredriver.com',\n 'help.americansafetycouncil.com',\n '123driving.com',\n 'adischool.com',\n 'californiadriveredcourse.com',\n 'trafficschooltogo.com',\n 'delawaredriver.com',\n 'dmvflorida.org',\n 'firsttimedriver.com',\n 'floridaboatingcourse.com',\n 'floridadrivingrecord.com',\n 'floridafuntrafficschool.com',\n 'floridaonlinetrafficschool.com',\n 'indianadriver.com',\n 'joshuaslaw.com',\n 'maturedrivercourse.com',\n 'michigandriverimprovement.com',\n 'missourionlinedriverimprovement.com',\n 'oklahomadriver.com',\n 'onlinedefensivedriving.com',\n 'onlinetraffic.com',\n 'safemotorist.com',\n 'stateofflorida.com',\n 'teendrivereducation.com',\n 'tennesseeonlinetrafficschool.com',\n 'texasadultdriver.com',\n 'texasdrivingschool.com',\n 'trafficschooltogo.com',\n 'virginiaonlinedriverimprovement.com',\n ],\n },\n {\n profile: 'Chat_NYSC',\n domains: ['newyorksafetycouncil.com'],\n },\n {\n profile: 'Chat_PS',\n domains: [\n 'floridaparentingclass.com',\n 'floridainsurancelicense.com',\n 'floridaonlinecosmetology.com',\n 'floridaonlinetattoolicense.com',\n 'ncinsurancelicense.com',\n ],\n },\n {\n profile: 'Chat_SS',\n domains: [\n 'bassetcertification.org',\n 'cannabiseducationcenter.com',\n 'efoodcard.com',\n 'efoodhandlers.com',\n 'foodhandlercardonline.com',\n 'illinoisbassetcertification.com',\n 'sellerserveronline.com',\n 'tabccertificationprogram.com',\n 'tabctraining.org',\n 'washingtonalcoholtraining.com',\n ],\n },\n {\n profile: 'Chat_WS',\n domains: [\n 'abcosha.com',\n 'agrilifeirrigation.com',\n 'iecoshatraining.com',\n 'oshacampusonline.com',\n 'oshaeducationcenter.com',\n 'usfosha.com',\n 'ustoperatortraining.com',\n 'verify.uceusa.com',\n ],\n },\n];\n\nconst f9chat = {\n chatScript: document.getElementById('five9_chat'),\n userDetails: document.querySelector('.user-bar .username'),\n userEmail: '',\n preChatForm: null,\n domain: 'certus.com', // default for localhost development\n profile: 'Chat_U', // default chat profile if domain is not mapped to a chat profile\n useFloatingBtn: false,\n usePreChatForm: false,\n collectEmail: true,\n chatContainer: null,\n chatFloatingBtnContainer: null,\n chatInitialized: false,\n\n init: () => {\n f9chat.collectEmail = f9chat.userDetails ? false : true;\n f9chat.useFloatingBtn = f9chat.chatScript && f9chat.chatScript.dataset.floatingBtn === 'true';\n\n const userDetails = f9chat.userDetails?.textContent; // contains the name and email text\n const userEmail = userDetails?.match(/\\((.*)\\)/)?.pop(); // grabs the actual email between the parenthesis\n\n f9chat.userEmail = userEmail;\n\n // set domain value and profile if not in locahost development\n if (!window.location.hostname.includes('localhost')) {\n // all subdomains we need to remove\n const removeSubdomain = /((dl|ml)?(www|www1|shop|cart|store))\\./;\n // all subdomains we need to remove the dl/ml prefix\n const removePrefix = /((dl|ml)?(login|course|fusion|home|myaccount|verify|help))\\./;\n\n // set domain value after cleaning it up\n f9chat.domain = window.location.hostname.replace(removeSubdomain, '');\n f9chat.domain = removePrefix.test(f9chat.domain) ? f9chat.domain.replace(/(dl|ml)/, '') : f9chat.domain;\n\n // set chat profile to use for initialization\n const chatProfile = chatProfiles.find((profile) => profile.domains?.includes(f9chat.domain));\n f9chat.profile = chatProfile ? chatProfile.profile : f9chat.profile;\n }\n\n // used for testing localhost, you can set the profile you want to test\n // comment out below code after testing\n // f9chat.domain = 'certus.com';\n // f9chat.profile = 'VIVR';\n // end code for testing\n\n // if profile is VIVR then use prechat form\n f9chat.usePreChatForm = f9chat.profile === 'VIVR';\n\n // creating chat container div and CSS\n (function () {\n const div = document.createElement('div');\n div.id = 'chatWidgetContainer';\n div.setAttribute('class', 'chat-container');\n div.innerHTML = f9chat.usePreChatForm\n ? preChatFormHtml(userEmail)\n : '';\n document.body.appendChild(div);\n // adding CSS for chat\n const style = document.createElement('style');\n style.innerHTML = chatContainerCss;\n document.body.appendChild(style);\n })();\n\n // setting prechat form element\n f9chat.preChatForm = document.getElementById('pre-chat-form');\n\n f9chat.chatContainer = document.getElementById('chatWidgetContainer');\n f9chat.chatContainer.querySelector('.chat-toggle-btn').addEventListener('click', f9chat.hideChatWindow, true);\n f9chat.appendFloatingChatBtn();\n\n if (f9chat.useFloatingBtn) {\n console.log('Using Floating Button');\n f9chat.hideChatWindow();\n }\n },\n\n // mounting floating livechat button\n appendFloatingChatBtn: () => {\n const div = document.createElement('div');\n div.setAttribute('class', 'chat-floating-btn-container');\n div.innerHTML = floatingChatBtnHtml;\n document.body.appendChild(div);\n\n f9chat.chatFloatingBtnContainer = document.querySelector('.chat-floating-btn-container');\n\n const floatingChatBtn = document.querySelector('.chat-floating-btn');\n // adding click event listeners for showing the prechat window\n floatingChatBtn.addEventListener('click', f9chat.startChat, true);\n },\n\n showChatWindow: () => {\n console.log('Showing Chat Window!');\n\n f9chat.chatContainer.classList.add('is--visible');\n f9chat.chatFloatingBtnContainer.classList.remove('is--visible');\n },\n\n hideChatWindow: () => {\n console.log('Hiding Chat Window!');\n\n f9chat.chatContainer.classList.remove('is--visible');\n f9chat.chatFloatingBtnContainer.classList.add('is--visible');\n },\n\n initChat: () => {\n // workaround for initializing the chat on demand\n // instead of loading the script via a script tag, we fetch the script and use the JS inside an inline script tag\n // this ensure that we only trigger the initialization when the base script is loaded/ready\n const chatScriptUrl = 'https://cdn.prod.us.five9.net/static/stable/chat/wrapper/index.js';\n\n fetch(chatScriptUrl)\n .then((res) => {\n if (res.status !== 200 && res.status < 500) {\n console.log('Cant fetch Five9 script, status code: ' + res.status);\n return res.json();\n }\n if (res.status >= 500) {\n console.log('Cant fetch Five9 script, status code: ' + res.status);\n return;\n }\n return res.text();\n })\n // only initialize the chat when the main chat script is fetched\n .then((data) => {\n (function () {\n const el = document.createElement('script');\n el.id = 'five9-chat';\n el.type = 'text/javascript';\n el.innerHTML = data;\n let s = document.getElementsByTagName('script');\n s = s[s.length - 1];\n s.parentNode.insertBefore(el, s);\n })();\n\n f9chat.showChatWindow();\n\n // this is the modified version of initialization config from Five9\n F9.Chat.Wrapper.init({\n cdn: 'prod',\n useBusinessHours: true,\n languages: {\n enabled: true,\n backgroundColor: '#65758e',\n defaultToBrowserLocale: true,\n allowUnconfiguredLanguages: false,\n languages: [\n { label: 'English', code: 'en', typeLang: 'preferred', default: true },\n { label: 'Spanish', code: 'es', typeLang: 'additional', default: false },\n ],\n },\n l10n: {\n en: {\n messenger: { customText: {} },\n systemMessages: {\n transferredToParticipant: 'The chat has been transferred to {name}.',\n transferredToGroup: 'That chat has been transferred to group {group}.',\n },\n captureFields: captureFields('en', f9chat.collectEmail),\n },\n es: {\n messenger: { customText: { ...messagerCustomText.es } },\n systemMessages: { ...systemMessages.es },\n captureFields: captureFields('es', f9chat.collectEmail),\n },\n },\n prepopulatedFields: [\n { k: 'campaign', v: f9chat.profile },\n { k: 'Chat.domain', v: f9chat.domain },\n { k: 'GroupId', v: f9chat.readCookie('_up4gid') },\n { k: 'CouponCode', v: f9chat.readCookie('_up4cc') },\n ...(!f9chat.collectEmail ? [{ k: 'email', v: f9chat.userEmail }] : []), // use email value from page\n ],\n messenger: {\n integrationId: '667f3a8d5d880336c8c69068',\n soundNotificationEnabled: true,\n transcriptPrintingEnabled: false,\n menuItems: { imageUpload: true, fileUpload: true, shareLocation: false },\n embedded: true,\n setViewportScale: false,\n containerId: 'chatWidgetContainer', // container div for embedded chat\n browserStorage: 'sessionStorage',\n hideWidgetAfterBusinessHours: false,\n scheduleCallback: {\n isCallbackEnabled: false,\n requestCallbackList: '',\n customConfirmationMessage: 'We will call you as soon as we can at [PHONE]',\n web2CampaignAPIHost: '',\n },\n fixedHeader: true,\n displayStyle: 'embedded',\n customColors: { brandColor: '65758e', conversationColor: '0099ff', actionColor: '0099ff' },\n carouselType: 'default',\n // customCssUrl: 'https://cdn.certus.com/global/css/five9.css', // if we need custom CSS\n },\n clearMessagesTimeout: 3,\n });\n })\n .catch(function (err) {\n console.error('Error: ' + err);\n });\n },\n\n initVIVR: () => {\n if (!f9chat.isPreChatValid(f9chat.preChatForm)) {\n // dont initializing chat if it has been initialized before\n console.log('Prechat form is missing information.');\n return;\n }\n\n // console.log('Prechat form is valid...');\n\n // get form data and create an object map\n const rawFormData = new FormData(f9chat.preChatForm);\n const preChatForm = {};\n for (let [key, value] of rawFormData) {\n preChatForm[key] = value;\n }\n\n // Construct the URL with query parameters\n const baseURL = 'https://api.five9.com/ivr/1/128193/campaigns/300000000000341/new_ivr_session';\n // this callbackUrl can be hosted in our CDN as well and is optional\n const callbackUrl =\n 'https://storage.googleapis.com/quickassist/customers/AmericanSafetyCouncil/realtimetranslation/errorpage.html';\n const vivrURL = `${baseURL}?form_domain=${f9chat.domain}&form_email=${encodeURIComponent(\n preChatForm.email\n )}&form_userAgent=${encodeURIComponent(navigator.userAgent)}&form_language=${encodeURIComponent(\n preChatForm.language\n )}&__CALLBACK_URL__=${callbackUrl}`;\n //&form_name=${encodeURIComponent(name)}&form_phone=${encodeURIComponent(phone)}&form_question=${encodeURIComponent(question)}\n\n // show VIVR iframe\n const vivrIframe = document.getElementById('vivr-iframe');\n const preChatWrap = document.getElementById('pre-chat-form-wrapper');\n vivrIframe.onload = function () {\n // Set a delay (e.g., 2000 milliseconds = 2 seconds)\n setTimeout(function () {\n vivrIframe.style.display = 'block';\n }, 2000);\n };\n preChatWrap.style.display = 'none';\n vivrIframe.src = vivrURL;\n\n // Show the iframe and hide the spinner after a delay once the iframe has loaded\n },\n\n startChat: () => {\n if (f9chat.chatInitialized) {\n f9chat.chatFloatingBtnContainer.classList.remove('is--visible');\n f9chat.chatContainer.classList.add('is--visible');\n\n // dont initializing chat if it has been initialized before\n return;\n }\n\n // use marketing website chat experience\n if (!f9chat.usePreChatForm) {\n // initialize and show chat widget\n f9chat.initChat();\n }\n // use VIVR experience and pre chat form\n else {\n f9chat.showChatWindow();\n\n // set eventListener for prechat submit button to initialize VIVR chat\n document.querySelector('.pre-chat-start-btn').addEventListener('click', f9chat.initVIVR, true);\n\n f9chat.validateOnBlur(f9chat.preChatForm);\n }\n\n f9chat.chatInitialized = true;\n },\n\n validateOnBlur: function (theForm) {\n if (!theForm) {\n return false;\n }\n // realtime form fields validation using blur event\n const fields = theForm.querySelectorAll('.required');\n for (let field of fields) {\n const type = field.type;\n if (type === 'email') {\n field.addEventListener(\n 'blur',\n function (e) {\n const x = field.value;\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!re.test(x)) {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n },\n true\n );\n } else if (type === 'tel') {\n field.addEventListener(\n 'blur',\n function (e) {\n const x = field.value;\n const re = /[(]?\\d{3}[)]?\\s?-?\\s?\\d{3}\\s?-?\\s?\\d{4}/;\n if (!re.test(x)) {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n },\n true\n );\n } else {\n field.addEventListener(\n 'blur',\n function (e) {\n const x = field.value;\n if (!x || x.trim() == '') {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n },\n true\n );\n }\n }\n },\n\n isPreChatValid: function (theForm) {\n if (!theForm) {\n return false;\n }\n // form fields validation during submission\n const fields = theForm.querySelectorAll('.required');\n let isFormValid = true;\n for (let field of fields) {\n const type = field.type;\n if (type === 'email') {\n const x = field.value;\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!re.test(x)) {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n isFormValid = false;\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n } else if (type === 'tel') {\n const x = field.value;\n const re = /[(]?\\d{3}[)]?\\s?-?\\s?\\d{3}\\s?-?\\s?\\d{4}/;\n if (!re.test(x)) {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n isFormValid = false;\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n } else if (type === 'radio') {\n const selectedRadio = document.querySelector(`input[name=${field.name}]:checked`);\n const x = selectedRadio?.value;\n if (!x || x.trim() == '') {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n isFormValid = false;\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n } else {\n const x = field.value;\n if (!x || x.trim() == '') {\n field.classList.add('is-invalid');\n field.closest('.pre-chat-label').classList.add('is-invalid');\n isFormValid = false;\n } else {\n field.classList.remove('is-invalid');\n field.closest('.pre-chat-label').classList.remove('is-invalid');\n }\n }\n }\n return isFormValid;\n },\n\n readCookie: (name) => {\n let nameEQ = encodeURI(name) + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return decodeURI(c.substring(nameEQ.length, c.length));\n }\n return null;\n },\n};\n\nf9chat.init();\n\n// need to call this after the main JS is loaded on the page\n// this function is what the website is calling\nconst StartLiveChat = () => {\n f9chat.startChat();\n};\n"]}