{"version":3,"file":"profile.js","mappings":"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","sources":["webpack://doulamatch/./Scripts/profile/profile.ts"],"sourcesContent":["/// <reference path=\"../../node_modules/@types/jqueryui/index.d.ts\"/>\r\n/// <reference path=\"../../node_modules/@types/leaflet/index.d.ts\"/>\r\n/// <reference path=\"../../node_modules/@types/bootstrap/index.d.ts\"/>\r\n/// <reference path=\"../master/master.d.ts\"/>\r\n/// <reference path=\"../../static/ts/kpec.d.ts\"/>\r\n\r\nfunction getBooleanElementValue(id: string): boolean {\r\n    const element = document.getElementById(id) as HTMLInputElement | null;\r\n    return element ? element.value === 'true' : false;\r\n}\r\n\r\nfunction getElementValue(id: string): string {\r\n    const element = document.getElementById(id);\r\n    if (element && isInput(element)) {\r\n        return element.value;\r\n    }\r\n    return '';\r\n}\r\nfunction padToTwoDigits(number: number): string {\r\n    return number < 10 ? `0${number}` : `${number}`;\r\n}\r\nfunction isInput(el: Element): el is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement {\r\n    return el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement || el instanceof HTMLSelectElement;\r\n}\r\n// Function to show a specific tab\r\nfunction showTabx(tabId: string) {\r\n    const tabs = document.querySelectorAll('#profile-tabs a');\r\n    tabs.forEach(tab => {\r\n        if (tab.getAttribute('href') === `#${tabId}`) {\r\n            // Create and dispatch a new click event\r\n            const event = new MouseEvent('click', {\r\n                view: window,\r\n                bubbles: true,\r\n                cancelable: true\r\n            });\r\n            tab.dispatchEvent(event);\r\n        }\r\n    });\r\n}\r\n\r\nfunction showTab(tabId: string) {\r\n    const tab = document.querySelector(`#profile-tabs a[href=\"#${tabId}\"]`);\r\n\r\n    if (tab) {\r\n        // Create a new Bootstrap Tab instance for the target tab\r\n        const bootstrapTabInstance = new bootstrap.Tab(tab);\r\n        \r\n        // Show the selected tab using the Bootstrap API\r\n        bootstrapTabInstance.show();\r\n    }\r\n}\r\n\r\n// Function to fetch data and update HTML content based on response\r\nfunction updateClassInfo(searchZip: string, shortDate: string) {\r\n    if (searchZip === \"12345\") return;\r\n\r\n    const url = `/api/cbe/getbyzipanddate/${searchZip}/${shortDate}`;\r\n\r\n    fetch(url)\r\n        .then(response => {\r\n            if (!response.ok) {\r\n                throw new Error('Network response was not ok');\r\n            }\r\n            return response.json();\r\n        })\r\n        .then(numberOfClasses => {\r\n            const counts = numberOfClasses.numberOfClasses;\r\n            const classroomClassCount = counts[0];\r\n            const onlineClassCount = counts[1];\r\n\r\n            // Select elements and update content based on class counts\r\n            var cbeTeaserLinkElement = document.getElementById(\"cbe-teaser-link\");\r\n            var onlineCBEteaserLinkElement = document.getElementById(\"onlinecbe-teaser-link\");\r\n            var cbeCheckElement = document.getElementById(\"cbe-check\");\r\n\r\n            if (classroomClassCount > 0 || onlineClassCount > 0) {\r\n                // Update classroom class count link\r\n                if (cbeTeaserLinkElement) {\r\n                    if (classroomClassCount === 1) {\r\n                        cbeTeaserLinkElement.innerHTML = `There is <a class='strongLink' href='/class/list/byzipanddate/${searchZip}/${shortDate}'> a class available near you</a>.`;\r\n                    } else if (classroomClassCount > 1) {\r\n                        cbeTeaserLinkElement.innerHTML = `There are <a class='strongLink' href='/class/list/nearzip/${searchZip}/${shortDate}'>${classroomClassCount} classes near you</a>.`;\r\n                    }\r\n                }\r\n\r\n                // Update online class count link\r\n                if (cbeTeaserLinkElement) {\r\n                    if (classroomClassCount === 0) {\r\n                        if (onlineCBEteaserLinkElement) {\r\n                            const linkText = onlineClassCount === 1 \r\n                                ? `There is <a class='strongLink' href='/class/remote/${shortDate}'>${onlineClassCount} live, virtual class currently enrolling families</a>.`\r\n                                : `There are <a class='strongLink' href='/class/remote/${shortDate}'>${onlineClassCount} live, virtual classes currently enrolling families</a>.`;\r\n                            onlineCBEteaserLinkElement.innerHTML = linkText;\r\n                        }\r\n                    } else if (onlineClassCount > 0) {\r\n                        if (onlineCBEteaserLinkElement) {\r\n                            const linkText = onlineClassCount === 1 \r\n                                ? `There is also <a class='strongLink' href='/class/remote/${shortDate}'>${onlineClassCount} live, virtual class currently enrolling families</a>.`\r\n                                : `There are also <a class='strongLink' href='/class/remote/${shortDate}'>${onlineClassCount} live, virtual classes currently enrolling families</a>.`;\r\n                            onlineCBEteaserLinkElement.innerHTML = linkText;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                // Show the CBE check element if there are any classes\r\n                if (cbeCheckElement) cbeCheckElement.style.display = \"block\";\r\n            } else {\r\n                // Hide the CBE check element if no classes are available\r\n                if (cbeCheckElement) cbeCheckElement.style.display = \"none\";\r\n            }\r\n        })\r\n        .catch(error => {\r\n            console.error('There was a problem with the fetch operation:', error);\r\n        });\r\n}\r\n\r\nconst servesBrooklyn: boolean = getBooleanElementValue('HdnServesBrooklyn');\r\nconst servesBronx: boolean = getBooleanElementValue('HdnServesBronx');\r\nconst servesManhattan: boolean = getBooleanElementValue('HdnServesManhattan');\r\nconst servesQueens: boolean = getBooleanElementValue('HdnServesQueens');\r\nconst servesStatenIsland: boolean = getBooleanElementValue('HdnServesStatenIsland');\r\nconst hasCertImages: boolean = getBooleanElementValue('HdnHasCertImages');\r\nconst isBirthDoula: boolean = getBooleanElementValue('HdnIsBirthDoula');\r\nconst isPostpartumDoula: boolean = getBooleanElementValue('HdnIsPostpartumDoula');\r\nconst ownsThisPage: boolean = getBooleanElementValue('HdnOwnsThisPage');\r\nconst isBot: boolean = getBooleanElementValue('HdnIsBot');\r\nconst isIframe: boolean = ((window.location.search.indexOf('iframe')) > 0);\r\n\r\nconst doulaId: string = getElementValue('HdnDoulaId');\r\nconst range: string = getElementValue('HdnRange');\r\nconst zip: string = getElementValue('HdnZip');\r\nconst latitude: string = getElementValue('HdnLatitude');\r\nconst longitude: string = getElementValue('HdnLongitude');\r\nconst activeTab: string = getElementValue('HdnActiveTab');\r\nconst contactUrl: string = getElementValue('HdnContactUrl');\r\nconst stateOrProvince: string = getElementValue('HdnStateOrProvince');\r\n\r\nlet serviceArea: any;\r\nlet circleServiceArea: boolean;\r\nif (document.getElementById('HdnServiceArea')) {\r\n    let serviceAreaJson: string = getElementValue('HdnServiceArea');\r\n    if (serviceAreaJson == '') serviceAreaJson = \"{}\";\r\n    serviceArea = JSON.parse(serviceAreaJson);\r\n}\r\n\r\nif (document.getElementById('HdnCircleServiceArea')) {\r\n    const hdnCircleServiceArea: string = getElementValue('HdnCircleServiceArea');\r\n    circleServiceArea = (hdnCircleServiceArea === 'True');\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n    if (document.getElementById('btnContactDoula')) {\r\n        const btnContactDoula = document.getElementById('btnContactDoula');\r\n        btnContactDoula?.addEventListener('click', function contactDoula() {\r\n            if ((window.location.search.indexOf('iframe')) > 0) {\r\n                window.location.href = contactUrl;\r\n            } else {\r\n                window.location.href = contactUrl;\r\n            }\r\n        });\r\n    }\r\n});\r\n\r\ndocument.getElementById('btnSearchGroup')?.addEventListener('click', () => {\r\n    if (window.location.search.includes('iframe')) {\r\n        window.location.href = `/search/bygroup/${doulaId}?iframe=true`;\r\n    } else {\r\n        window.location.href = `/search/bygroup/${doulaId}`;\r\n    }\r\n});\r\n\r\n\r\nasync function writeClipboardText(text: string) {\r\n    try {\r\n        await navigator.clipboard.writeText(text);\r\n    } catch (error) {\r\n        // Check if error is an instance of Error, which means it should have a message property.\r\n        if (typeof error === 'object' && error !== null && 'message' in error) {\r\n            console.error((error as { message: string }).message);\r\n        } else {\r\n            console.error('An unknown error occurred');\r\n        }\r\n    }\r\n}\r\n\r\n// Select all elements with the class 'btn-testimonial'\r\nconst buttons = document.querySelectorAll('.btn-testimonial');\r\nbuttons.forEach(button => {\r\n  // Add a click event listener to each button\r\n  button.addEventListener(\"click\", async () => {\r\n    try {\r\n      // Extract the CommentID from the button's ID using a regular expression\r\n      const match = button.id.match(/CopyButton-(\\d+)/);\r\n      if (match && match[1]) {\r\n        // Construct the URL by appending the extracted CommentID to the base string\r\n        const url = `https://doulamatch.net/testimonial/detail/${match[1]}`;\r\n        \r\n        // Call the function to write the constructed URL to the clipboard\r\n        await writeClipboardText(url);\r\n\r\n        // Change button background and label for a 5-second duration\r\n        (button as HTMLElement).style.backgroundColor = 'green';\r\n        const originalButtonText = (button as HTMLElement).textContent || (button as HTMLElement).innerText;\r\n        (button as HTMLElement).textContent = 'Copied!';\r\n\r\n        // Revert changes after 5 seconds\r\n        setTimeout(() => {\r\n            (button as HTMLElement).style.backgroundColor = ''; // Reset to default or specify a color if needed\r\n            (button as HTMLElement).textContent = originalButtonText; \r\n          }, 3500);\r\n      } else {\r\n        console.error(\"Comment ID not found in button's ID.\");\r\n      }\r\n    } catch (error) {\r\n      console.error('Error copying text:', error);\r\n    }\r\n  });\r\n});\r\n\r\ninterface CalendarData {\r\n    [key: string]: boolean;\r\n}\r\n\r\nfunction initializeCalendar(doulaId: number, doulaType: string): void {\r\n    const xhr = new XMLHttpRequest();\r\n    xhr.open('GET', '/api/calendarapi', true);\r\n    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');\r\n\r\n    xhr.onreadystatechange = function () {\r\n        if (xhr.readyState === 4) {\r\n            if (xhr.status >= 200 && xhr.status < 300) {\r\n                const data: CalendarData = JSON.parse(xhr.responseText);\r\n\r\n                const loweredDoulaType = doulaType.toLowerCase();\r\n                const datepickerElement = document.getElementById(`calendar-${loweredDoulaType}`);\r\n\r\n                if (datepickerElement && datepickerElement instanceof HTMLInputElement) {\r\n                    datepickerElement.type = 'text';\r\n\r\n                    datepickerElement.addEventListener('click', function () {\r\n                        $(this).datepicker({\r\n                            numberOfMonths: [4, 3],\r\n                            hideIfNoPrevNext: false,\r\n                            showButtonPanel: false,\r\n                            beforeShowDay: (date: Date): [boolean, string, string] => {\r\n                                const strDate = date.toISOString();\r\n                                const patchedDate = `${strDate.substring(0, 10)}T00:00:00`;\r\n                                const idx = Object.keys(data).indexOf(patchedDate);\r\n                                if (idx !== -1) {\r\n                                    return [false, 'available', 'available'];\r\n                                } else {\r\n                                    return [true, '', '']; // Allow selection for non-available dates\r\n                                }\r\n                            }\r\n                        });\r\n                    });\r\n                } else {\r\n                    console.error('Network response was not ok:', xhr.status);\r\n                }\r\n            }\r\n        };\r\n\r\n        xhr.send(JSON.stringify({ DoulaId: doulaId, CalendarType: doulaType }));\r\n    }\r\n}\r\n\r\n\r\nfunction LoadAvailability(doulaType: string) {\r\n    try {\r\n        var loweredDoulaType = doulaType.toLowerCase();\r\n        $.ajax({\r\n            url: \"/api/calendarapi\",\r\n            data: { DoulaId: doulaId, CalendarType: doulaType },\r\n            type: \"GET\",\r\n            contentType: \"application/json;charset=utf-8\"\r\n        }).then(function (data) {\r\n            $(\"#calendar-\" + loweredDoulaType).datepicker({\r\n                numberOfMonths: [4, 3],\r\n                hideIfNoPrevNext: false,\r\n                showButtonPanel: false,\r\n                beforeShowDay: function (date) {\r\n                    var strDate = date.toISOString();\r\n                    var patchedDate = strDate.substring(0, 10) + \"T00:00:00\";\r\n                    var idx = jQuery.inArray(patchedDate, data);\r\n                    //var idx = data.indexOf(patchedDate);\r\n                    if (idx != -1) {\r\n                        return [false, 'available', 'available'];\r\n                    } else {\r\n                        return [false, '', ''];\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    } catch (e: unknown) {\r\n        if (e instanceof Error) {\r\n            LogException(e);\r\n        } else {\r\n            const logData: LogData = {\r\n                Message: \"An unexpected error occurred\",\r\n                Source: \"Load Availability\"\r\n            }\r\n            LogJSError(logData);\r\n        }\r\n    }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n    var defaultMapCenter = [43, -100];\r\n    var NYCBoroughsMapCenter: [number, number] = [40.7470, -73.9860];\r\n\r\n    try {\r\n        $('#nav-summary').on('click', function (e) {\r\n            e.preventDefault();\r\n\r\n            var element = document.getElementById('summary');\r\n            if (element) {\r\n                // Reset the display property by setting it to an empty string\r\n                element.style.display = '';\r\n            }\r\n\r\n            // Ensure you're using Bootstrap's tab functionality correctly\r\n            $(this).tab('show');\r\n        });\r\n\r\n        $('#nav-birth').on('click', function (e) {\r\n            e.preventDefault()\r\n            $(this).tab('show')\r\n        })\r\n\r\n        $('#nav-postpartum').on('click', function (e) {\r\n            e.preventDefault()\r\n            $(this).tab('show')\r\n        })\r\n\r\n        var dmCookieObj: any = {};\r\n        var dmCookie = readCookie('doulamatch');\r\n        try {\r\n            if (dmCookie !== undefined && dmCookie !== null) dmCookieObj = JSON.parse(dmCookie);\r\n        } catch (ex) {\r\n            eraseCookie('doulamatch');\r\n        }\r\n\r\n        var availTargetTab = \"#birthavailability\";\r\n        if (isBirthDoula && isPostpartumDoula) {\r\n            if (dmCookieObj.doulaType) {\r\n                if (dmCookieObj.doulaType == \"Postpartum\") availTargetTab = \"#postpartumavailability\";\r\n            }\r\n        } else {\r\n            if (isPostpartumDoula) availTargetTab = \"#postpartumavailability\";\r\n        }\r\n        const availTarget = document.querySelector('#profile-tabs a[href=\"' + availTargetTab + '\"]');\r\n        const btnAvail = document.getElementById(\"btn-avail\");\r\n        if (btnAvail) {\r\n            btnAvail.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                if (availTarget) {\r\n                   // $(availTarget).tab('show');\r\n                    const bootstrapTabInstance = new bootstrap.Tab(availTarget);\r\n                    bootstrapTabInstance.show();\r\n                }\r\n            });\r\n        } \r\n\r\n        // Declare constants for all elements\r\n        const btnTestimonials = document.getElementById(\"btn-testimonials\");\r\n        const btnCertifications = document.getElementById(\"btn-certifications\");\r\n        const btnCertificationsToSummary = document.getElementById(\"btn-certifications-to-summary\");\r\n        const btnTestimonialsToSummary = document.getElementById(\"btn-testimonials-to-summary\");\r\n        const btnBirthToSummary = document.getElementById(\"btn-birth-to-summary\");\r\n        const btnPostpartumToSummary = document.getElementById(\"btn-postpartum-to-summary\");\r\n\r\n        // Check for truthiness and add event listeners\r\n        if (btnTestimonials) {\r\n            btnTestimonials.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"testimonials\");\r\n            });\r\n        }\r\n\r\n        if (btnCertifications) {\r\n            btnCertifications.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"certifications\");\r\n            });\r\n        }\r\n\r\n        if (btnCertificationsToSummary) {\r\n            btnCertificationsToSummary.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"summary\");\r\n            });\r\n        }\r\n\r\n        if (btnTestimonialsToSummary) {\r\n            btnTestimonialsToSummary.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"summary\");\r\n            });\r\n        }\r\n\r\n        if (btnBirthToSummary) {\r\n            btnBirthToSummary.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"summary\");\r\n            });\r\n        }\r\n\r\n        if (btnPostpartumToSummary) {\r\n            btnPostpartumToSummary.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                showTab(\"summary\");\r\n            });\r\n        }\r\n\r\n        if (activeTab != \"summary\") {\r\n            $('#profile-tabs a[href=\"#' + activeTab + '\"]').tab('show');\r\n        }\r\n\r\n        if (isBirthDoula) LoadAvailability('Birth');\r\n\r\n        if (isPostpartumDoula) LoadAvailability('Postpartum');\r\n        $(\".ui-datepicker-inline\").width(\"20em\");\r\n        $('.cert-thumb').first().addClass(\"active\");\r\n\r\n        $(\"#panewrapper\").show();\r\n\r\n        const certThumbs = document.querySelectorAll('.cert-thumb');\r\n        const certFullSizeElement = document.getElementById('cert-fullsize');\r\n        if (certFullSizeElement) {\r\n            certThumbs.forEach(certThumb => {\r\n                certThumb.addEventListener('click', () => {\r\n                    try {\r\n                        // Get the fullsize image source from data attribute\r\n                        const fullsizeSrc = certThumb.getAttribute('data-cert');\r\n\r\n                        if (fullsizeSrc) {\r\n                            // Update the `src` of the full-size image element with a cache-busting query parameter\r\n                            certFullSizeElement.setAttribute('src', `${fullsizeSrc}?t=${Date.now()}`);\r\n\r\n                            // Remove 'active' class from all thumbnails\r\n                            certThumbs.forEach(thumb => thumb.classList.remove('active'));\r\n\r\n                            // Add 'active' class to the clicked thumbnail\r\n                            certThumb.classList.add('active');\r\n                        } else {\r\n                            console.warn(`Thumbnail without data-cert attribute: ${certThumb}`);\r\n                        }\r\n                    } catch (e) {\r\n                        console.error('Error handling cert click:', e);\r\n                        throw e;\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    const moreFullSizeElement = document.getElementById('more-fullsize');\r\n\r\n    // Cache all .more-thumb elements to avoid repeated queries\r\n    const thumbElements = Array.from(document.querySelectorAll('.more-thumb'));\r\n\r\n    thumbElements.forEach((element) => {\r\n        element.addEventListener('click', () => {\r\n            try {\r\n                const fullsizeSrc = element.getAttribute('data-cert');\r\n                \r\n                if (!fullsizeSrc) {\r\n                    console.warn('Element missing data-cert attribute:', element);\r\n                    return;\r\n                }\r\n\r\n                if (moreFullSizeElement) {\r\n                    moreFullSizeElement.setAttribute(\r\n                        'src',\r\n                        `${fullsizeSrc}?t=${Date.now()}`\r\n                    );\r\n                }\r\n\r\n                // Remove 'active' class from all .more-thumb elements\r\n                thumbElements.forEach((thumb) => {\r\n                    thumb.classList.remove('active');\r\n                });\r\n\r\n                // Add 'active' class to the clicked element\r\n                element.classList.add('active');\r\n\r\n            } catch (e) {\r\n                console.error('Error handling more click:', e);\r\n                throw(e);\r\n            }\r\n        });\r\n    });\r\n\r\n    if (document.getElementById(\"map\")) {\r\n        let zoom: number = 6;\r\n        const r = +range;\r\n        if (r > 0) zoom = 12;\r\n        if (r > 2) zoom = 11;\r\n        if (r > 5) zoom = 10;\r\n        if (r > 10) zoom = 9;\r\n        if (r > 21) zoom = 8;\r\n        if (r > 40) zoom = 7;\r\n        if (r > 74) zoom = 6;\r\n        if (r > 100) zoom = 5;\r\n        if (r > 300) zoom = 4;\r\n        if (r == 0) zoom = 6;\r\n\r\n        if (stateOrProvince == \"AB\" && zoom < 9) {\r\n            zoom = 9; // 10 shows calgary no small towns.  9 shows calgary and chestermere.  8 bad! 7 bad 6 bad, no Calgary label\r\n        }\r\n\r\n        if (serviceArea.type === \"MultiPolygon\") zoom = 9;\r\n\r\n        // Strings and URLs\r\n        const apiUrl = \"/api/cbe/getbyzipanddate/\";\r\n        const boroughsUrl = \"/static/geojson/boroughs.json\";\r\n        const lat: number = +latitude;\r\n        const lng: number = +longitude;\r\n        // Configuration objects\r\n        const mapOptions = {\r\n            center: L.latLng(lat, lng),\r\n            zoom: zoom,\r\n            zoomControl: false,\r\n            boxZoom: false,\r\n            doubleClickZoom: false,\r\n            dragging: false,\r\n            touchZoom: false,\r\n            scrollWheelZoom: false\r\n        };\r\n\r\n        const map = new L.Map('map', mapOptions);\r\n\r\n        L.tileLayer('http://m.doulamatch.net/osm/{z}/{x}/{y}.png', {\r\n            attribution: 'Map data &copy; <a href=\"https://www.openstreetmap.org/\">OpenStreetMap</a> contributors</a>',\r\n            maxZoom: 13,\r\n            id: 'mapbox.streets'\r\n        }).addTo(map);\r\n\r\n        if (servesBronx || servesBrooklyn || servesManhattan || servesQueens || servesStatenIsland) {\r\n            map.setView(NYCBoroughsMapCenter, 9);\r\n            map.panTo(NYCBoroughsMapCenter);\r\n\r\n            var boroughs = L.geoJSON(undefined, { // Use an empty object instead of null\r\n                style: function (feature) {\r\n                    return {\r\n                        color: '#2798D4',\r\n                        fillColor: '#54C3F0',\r\n                        fillOpacity: 0.2,\r\n                        weight: 2,\r\n                        clickable: false\r\n                    };\r\n                },\r\n                filter: function (geoJsonFeature) {\r\n                    if (geoJsonFeature.properties.BoroCode == 5) return servesStatenIsland;\r\n                    if (geoJsonFeature.properties.BoroCode == 1) return servesManhattan;\r\n                    if (geoJsonFeature.properties.BoroCode == 2) return servesBronx;\r\n                    if (geoJsonFeature.properties.BoroCode == 3) return servesBrooklyn;\r\n                    if (geoJsonFeature.properties.BoroCode == 4) return servesQueens;\r\n                    return false;\r\n                }\r\n            }).addTo(map);\r\n\r\n            $.getJSON(\"/static/geojson/boroughs.json\", function (data) {\r\n                boroughs.addData(data);\r\n            });\r\n        } else {\r\n            if (circleServiceArea === true) {\r\n                var circle = new L.Circle([+latitude, +longitude], {\r\n                    color: '#2798D4',\r\n                    fillColor: '#54C3F0',\r\n                    fillOpacity: 0.2,\r\n                    radius: +range * 1609.34,\r\n                    weight: 2\r\n                }).addTo(map);\r\n            } else {\r\n                var geoJsonLayer = L.geoJSON(serviceArea);\r\n\r\n                // Get the bounds of the GeoJSON object\r\n                var bounds = geoJsonLayer.getBounds();\r\n\r\n                // Fit the map to the bounds\r\n                map.fitBounds(bounds);\r\n\r\n                L.geoJSON(serviceArea, {\r\n                    style: {\r\n                        color: '#2798D4',\r\n                        fillColor: '#54C3F0',\r\n                        fillOpacity: 0.2,\r\n                        weight: 2\r\n                    }\r\n                }).addTo(map);\r\n\r\n            }\r\n        }\r\n    }\r\n\r\n    $(\"#panewrapper\").show();\r\n    $('.alert-cbe').on('closed.bs.alert', function () {\r\n        dismissCBECheck();\r\n    })\r\n    var pollCBEListings = false;\r\n    if (dmCookieObj.cbeCheckDismissed) {\r\n        var priorDismissal = new Date(Date.parse(dmCookieObj.cbeCheckDismissed));\r\n        var nextTeaser = new Date(Date.parse(dmCookieObj.cbeCheckDismissed));\r\n        nextTeaser.setDate(priorDismissal.getDate() + 1);\r\n        var currentDate = new Date();\r\n        if (currentDate > nextTeaser) {\r\n            pollCBEListings = true;\r\n        }\r\n    } else {\r\n        if (dmCookieObj.searchZip && dmCookieObj.searchDate) {\r\n            pollCBEListings = true;\r\n        }\r\n    }\r\n    if (pollCBEListings === true && !isIframe) {\r\n        let searchDate: Date = new Date(dmCookieObj.searchDate);\r\n        var shortDate: string = \"\";\r\n\r\n            shortDate = \r\n                searchDate.getFullYear() + \r\n                padToTwoDigits(searchDate.getMonth() + 1) + \r\n                padToTwoDigits(searchDate.getDate());\r\n\r\n        updateClassInfo(dmCookieObj.searchZip, shortDate);\r\n    }\r\n}catch (e) {\r\n    if (e instanceof Error) {\r\n        LogException(e);\r\n    } else {\r\n        const logData = {\r\n            Message: JSON.stringify(e)\r\n        }\r\n        LogJSError(logData)\r\n    }\r\n}});\r\n"],"names":["getBooleanElementValue","id","element","document","getElementById","value","getElementValue","el","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","padToTwoDigits","number","showTab","tabId","tab","querySelector","bootstrap","Tab","show","servesBrooklyn","servesBronx","servesManhattan","servesQueens","servesStatenIsland","isBirthDoula","isPostpartumDoula","isIframe","window","location","search","indexOf","doulaId","range","latitude","longitude","activeTab","contactUrl","stateOrProvince","serviceArea","circleServiceArea","serviceAreaJson","JSON","parse","hdnCircleServiceArea","LoadAvailability","doulaType","loweredDoulaType","toLowerCase","$","ajax","url","data","DoulaId","CalendarType","type","contentType","then","datepicker","numberOfMonths","hideIfNoPrevNext","showButtonPanel","beforeShowDay","date","patchedDate","toISOString","substring","jQuery","inArray","e","Error","LogException","LogJSError","Message","Source","addEventListener","btnContactDoula","href","includes","querySelectorAll","forEach","button","async","match","text","navigator","clipboard","writeText","error","console","message","writeClipboardText","style","backgroundColor","originalButtonText","textContent","innerText","setTimeout","NYCBoroughsMapCenter","on","preventDefault","display","this","dmCookieObj","dmCookie","readCookie","ex","eraseCookie","availTargetTab","availTarget","btnAvail","btnTestimonials","btnCertifications","btnCertificationsToSummary","btnTestimonialsToSummary","btnBirthToSummary","btnPostpartumToSummary","width","first","addClass","certThumbs","certFullSizeElement","certThumb","fullsizeSrc","getAttribute","setAttribute","Date","now","thumb","classList","remove","add","warn","moreFullSizeElement","thumbElements","Array","from","zoom","r","lat","lng","mapOptions","center","L","latLng","zoomControl","boxZoom","doubleClickZoom","dragging","touchZoom","scrollWheelZoom","map","Map","tileLayer","attribution","maxZoom","addTo","setView","panTo","boroughs","geoJSON","undefined","feature","color","fillColor","fillOpacity","weight","clickable","filter","geoJsonFeature","properties","BoroCode","getJSON","addData","Circle","radius","bounds","getBounds","fitBounds","dismissCBECheck","pollCBEListings","cbeCheckDismissed","priorDismissal","nextTeaser","setDate","getDate","searchZip","searchDate","shortDate","getFullYear","getMonth","fetch","response","ok","json","numberOfClasses","counts","classroomClassCount","onlineClassCount","cbeTeaserLinkElement","onlineCBEteaserLinkElement","cbeCheckElement","innerHTML","linkText","catch","updateClassInfo","logData","stringify"],"sourceRoot":""}