{"version":3,"file":"profile.js","mappings":";YAMA,SAASA,EAAuBC,GAC5B,MAAMC,EAAUC,SAASC,eAAeH,GACxC,QAAOC,GAA4B,SAAlBA,EAAQG,KAC7B,CAEA,SAASC,EAAgBL,GACrB,MAAMC,EAAUC,SAASC,eAAeH,GACxC,OAAIC,KAQSK,EARUL,aASFM,kBAAoBD,aAAcE,qBAAuBF,aAAcG,mBARjFR,EAAQG,MAEZ,GAKX,IAAiBE,CAJjB,CACA,SAASI,EAAeC,GACpB,OAAOA,EAAS,GAAK,IAAIA,IAAW,GAAGA,GAC3C,CAoBA,SAASC,EAAQC,GACb,MAAMC,EAAMZ,SAASa,cAAc,0BAA0BF,OAEzDC,GAE6B,IAAIE,UAAUC,IAAIH,GAG1BI,MAE7B,CAkEA,MAAMC,EAA0BpB,EAAuB,qBACjDqB,EAAuBrB,EAAuB,kBAC9CsB,EAA2BtB,EAAuB,sBAClDuB,EAAwBvB,EAAuB,mBAC/CwB,EAA8BxB,EAAuB,yBAErDyB,GADyBzB,EAAuB,oBACxBA,EAAuB,oBAC/C0B,EAA6B1B,EAAuB,wBAGpD2B,GAFwB3B,EAAuB,mBAC9BA,EAAuB,YAClB4B,OAAOC,SAASC,OAAOC,QAAQ,UAAa,GAElEC,EAAkB1B,EAAgB,cAClC2B,EAAgB3B,EAAgB,YAEhC4B,GADc5B,EAAgB,UACXA,EAAgB,gBACnC6B,EAAoB7B,EAAgB,gBACpC8B,EAAoB9B,EAAgB,gBACpC+B,EAAqB/B,EAAgB,iBACrCgC,EAA0BhC,EAAgB,sBAEhD,IAAIiC,EACAC,EACJ,GAAIrC,SAASC,eAAe,kBAAmB,CAC3C,IAAIqC,EAA0BnC,EAAgB,kBACvB,IAAnBmC,IAAuBA,EAAkB,MAC7CF,EAAcG,KAAKC,MAAMF,EAC7B,CAEA,GAAItC,SAASC,eAAe,wBAAyB,CACjD,MAAMwC,EAA+BtC,EAAgB,wBACrDkC,EAA8C,SAAzBI,CACzB,CAuHA,SAASC,EAAiBC,GACtB,IACI,IAAIC,EAAmBD,EAAUE,cACjCC,EAAEC,KAAK,CACHC,IAAK,mBACLC,KAAM,CAAEC,QAASrB,EAASsB,aAAcR,GACxCS,KAAM,MACNC,YAAa,mCACdC,MAAK,SAAUL,GACdH,EAAE,aAAeF,GAAkBW,WAAW,CAC1CC,eAAgB,CAAC,EAAG,GACpBC,kBAAkB,EAClBC,iBAAiB,EACjBC,cAAe,SAAUC,GACrB,IACIC,EADUD,EAAKE,cACOC,UAAU,EAAG,IAAM,YAG7C,OAAY,GAFFC,OAAOC,QAAQJ,EAAaZ,GAG3B,EAAC,EAAO,YAAa,aAErB,EAAC,EAAO,GAAI,GAE3B,GAER,GACJ,CAAE,MAAOiB,GACDA,aAAaC,MACbC,aAAaF,GAMbG,WAJyB,CACrBC,QAAS,+BACTC,OAAQ,qBAIpB,CACJ,CA1JAvE,SAASwE,iBAAiB,oBAAoB,WAC1C,GAAIxE,SAASC,eAAe,mBAAoB,CAC5C,MAAMwE,EAAkBzE,SAASC,eAAe,mBAChDwE,SAAAA,EAAiBD,iBAAiB,SAAS,WAClC/C,OAAOC,SAASC,OAAOC,QAAQ,UAChCH,OAAOC,SAASgD,KAAOxC,CAI/B,GACJ,CACJ,IAEyC,QAAzC,EAAAlC,SAASC,eAAe,yBAAiB,SAAEuE,iBAAiB,SAAS,KAC7D/C,OAAOC,SAASC,OAAOgD,SAAS,UAChClD,OAAOC,SAASgD,KAAO,mBAAmB7C,gBAE1CJ,OAAOC,SAASgD,KAAO,mBAAmB7C,GAC9C,IAkBY7B,SAAS4E,iBAAiB,oBAClCC,SAAQC,IAEdA,EAAON,iBAAiB,SAASO,UAC/B,IAEE,MAAMC,EAAQF,EAAOhF,GAAGkF,MAAM,oBAC9B,GAAIA,GAASA,EAAM,GAAI,CAErB,MAAMhC,EAAM,6CAA6CgC,EAAM,WAvBvED,eAAkCE,GAC9B,UACUC,UAAUC,UAAUC,UAAUH,EACxC,CAAE,MAAOI,GAEgB,iBAAVA,GAAgC,OAAVA,GAAkB,YAAaA,EAC5DC,QAAQD,MAAOA,EAA8BE,SAE7CD,QAAQD,MAAM,4BAEtB,CACJ,CAecG,CAAmBxC,GAGxB8B,EAAuBW,MAAMC,gBAAkB,QAChD,MAAMC,EAAsBb,EAAuBc,aAAgBd,EAAuBe,UACzFf,EAAuBc,YAAc,UAGtCE,YAAW,KACNhB,EAAuBW,MAAMC,gBAAkB,GAC/CZ,EAAuBc,YAAcD,CAAkB,GACvD,KACP,MACEL,QAAQD,MAAM,uCAElB,CAAE,MAAOA,GACPC,QAAQD,MAAM,sBAAuBA,EACvC,IACA,IA0FJrF,SAASwE,iBAAiB,oBAAoB,KAC1C,IACIuB,EAAyC,CAAC,QAAU,QAExD,IACIjD,EAAE,gBAAgBkD,GAAG,SAAS,SAAU9B,GACpCA,EAAE+B,iBAEF,IAAIlG,EAAUC,SAASC,eAAe,WAClCF,IAEAA,EAAQ0F,MAAMS,QAAU,IAI5BpD,EAAEqD,MAAMvF,IAAI,OAChB,IAEAkC,EAAE,cAAckD,GAAG,SAAS,SAAU9B,GAClCA,EAAE+B,iBACFnD,EAAEqD,MAAMvF,IAAI,OAChB,IAEAkC,EAAE,mBAAmBkD,GAAG,SAAS,SAAU9B,GACvCA,EAAE+B,iBACFnD,EAAEqD,MAAMvF,IAAI,OAChB,IAEA,IAAIwF,EAAmB,CAAC,EACpBC,EAAWC,WAAW,cAC1B,IACQD,UAA6CD,EAAc7D,KAAKC,MAAM6D,GAC9E,CAAE,MAAOE,GACLC,YAAY,aAChB,CAEA,IAAIC,EAAiB,qBACjBnF,GAAgBC,EACZ6E,EAAYzD,WACiB,cAAzByD,EAAYzD,YAA2B8D,EAAiB,2BAG5DlF,IAAmBkF,EAAiB,2BAE5C,MAAMC,EAAc1G,SAASa,cAAc,yBAA2B4F,EAAiB,MACjFE,EAAW3G,SAASC,eAAe,aACrC0G,GACAA,EAASnC,iBAAiB,SAAS,SAAUN,GACzCA,EAAE+B,iBACES,GAE6B,IAAI5F,UAAUC,IAAI2F,GAC1B1F,MAE7B,IAIJ,MAAM4F,EAAkB5G,SAASC,eAAe,oBAC1C4G,EAAoB7G,SAASC,eAAe,sBAC5C6G,EAA6B9G,SAASC,eAAe,iCACrD8G,EAA2B/G,SAASC,eAAe,+BACnD+G,EAAoBhH,SAASC,eAAe,wBAC5CgH,EAAyBjH,SAASC,eAAe,6BAGnD2G,GACAA,EAAgBpC,iBAAiB,SAAS,SAAUN,GAChDA,EAAE+B,iBACFvF,EAAQ,eACZ,IAGAmG,GACAA,EAAkBrC,iBAAiB,SAAS,SAAUN,GAClDA,EAAE+B,iBACFvF,EAAQ,iBACZ,IAGAoG,GACAA,EAA2BtC,iBAAiB,SAAS,SAAUN,GAC3DA,EAAE+B,iBACFvF,EAAQ,UACZ,IAGAqG,GACAA,EAAyBvC,iBAAiB,SAAS,SAAUN,GACzDA,EAAE+B,iBACFvF,EAAQ,UACZ,IAGAsG,GACAA,EAAkBxC,iBAAiB,SAAS,SAAUN,GAClDA,EAAE+B,iBACFvF,EAAQ,UACZ,IAGAuG,GACAA,EAAuBzC,iBAAiB,SAAS,SAAUN,GACvDA,EAAE+B,iBACFvF,EAAQ,UACZ,IAGa,WAAbuB,GACAa,EAAE,0BAA4Bb,EAAY,MAAMrB,IAAI,QAGpDU,GAAcoB,EAAiB,SAE/BnB,GAAmBmB,EAAiB,cACxCI,EAAE,yBAAyBoE,MAAM,QACjCpE,EAAE,eAAeqE,QAAQC,SAAS,UAElCtE,EAAE,gBAAgB9B,OAElB,MAAMqG,EAAarH,SAAS4E,iBAAiB,eACvC0C,EAAsBtH,SAASC,eAAe,iBAChDqH,GACAD,EAAWxC,SAAQ0C,IACfA,EAAU/C,iBAAiB,SAAS,KAChC,IAEI,MAAMgD,EAAcD,EAAUE,aAAa,aAEvCD,GAEAF,EAAoBI,aAAa,MAAO,GAAGF,OAAiBG,KAAKC,SAGjEP,EAAWxC,SAAQgD,GAASA,EAAMC,UAAUC,OAAO,YAGnDR,EAAUO,UAAUE,IAAI,WAExB1C,QAAQ2C,KAAK,0CAA0CV,IAE/D,CAAE,MAAOrD,GAEL,MADAoB,QAAQD,MAAM,6BAA8BnB,GACtCA,CACV,IACF,IAGd,MAAMgE,EAAsBlI,SAASC,eAAe,iBAG9CkI,EAAgBC,MAAMC,KAAKrI,SAAS4E,iBAAiB,gBAkC3D,GAhCAuD,EAActD,SAAS9E,IACnBA,EAAQyE,iBAAiB,SAAS,KAC9B,IACI,MAAMgD,EAAczH,EAAQ0H,aAAa,aAEzC,IAAKD,EAED,YADAlC,QAAQ2C,KAAK,uCAAwClI,GAIrDmI,GACAA,EAAoBR,aAChB,MACA,GAAGF,OAAiBG,KAAKC,SAKjCO,EAActD,SAASgD,IACnBA,EAAMC,UAAUC,OAAO,SAAS,IAIpChI,EAAQ+H,UAAUE,IAAI,SAE1B,CAAE,MAAO9D,GAEL,MADAoB,QAAQD,MAAM,6BAA8BnB,GACvC,CACT,IACF,IAGFlE,SAASC,eAAe,OAAQ,CAChC,IAAIqI,EAAe,EACnB,MAAMC,GAAKzG,EACPyG,EAAI,IAAGD,EAAO,IACdC,EAAI,IAAGD,EAAO,IACdC,EAAI,IAAGD,EAAO,IACdC,EAAI,KAAID,EAAO,GACfC,EAAI,KAAID,EAAO,GACfC,EAAI,KAAID,EAAO,GACfC,EAAI,KAAID,EAAO,GACfC,EAAI,MAAKD,EAAO,GAChBC,EAAI,MAAKD,EAAO,GACX,GAALC,IAAQD,EAAO,GAEI,MAAnBnG,GAA2BmG,EAAO,IAClCA,EAAO,GAGc,iBAArBlG,EAAYgB,OAAyBkF,EAAO,GAGhD,MAEME,GAAezG,EACf0G,GAAezG,EAEf0G,EAAa,CACfC,OAAQC,EAAEC,OAAOL,EAAKC,GACtBH,KAAMA,EACNQ,aAAa,EACbC,SAAS,EACTC,iBAAiB,EACjBC,UAAU,EACVC,WAAW,EACXC,iBAAiB,GAGfC,EAAM,IAAIR,EAAES,IAAI,MAAOX,GAQ7B,GANAE,EAAEU,UAAU,8CAA+C,CACvDC,YAAa,8FACbC,QAAS,GACT1J,GAAI,mBACL2J,MAAML,GAELlI,GAAeD,GAAkBE,GAAmBC,GAAgBC,EAAoB,CACxF+H,EAAIM,QAAQ3D,EAAsB,GAClCqD,EAAIO,MAAM5D,GAEV,IAAI6D,EAAWhB,EAAEiB,aAAQC,EAAW,CAChCrE,MAAO,SAAUsE,GACb,MAAO,CACHC,MAAO,UACPC,UAAW,UACXC,YAAa,GACbC,OAAQ,EACRC,WAAW,EAEnB,EACAC,OAAQ,SAAUC,GACd,OAA0C,GAAtCA,EAAeC,WAAWC,SAAsBnJ,EACV,GAAtCiJ,EAAeC,WAAWC,SAAsBrJ,EACV,GAAtCmJ,EAAeC,WAAWC,SAAsBtJ,EACV,GAAtCoJ,EAAeC,WAAWC,SAAsBvJ,EACV,GAAtCqJ,EAAeC,WAAWC,UAAsBpJ,CAExD,IACDqI,MAAML,GAETtG,EAAE2H,QAAQ,iCAAiC,SAAUxH,GACjD2G,EAASc,QAAQzH,EACrB,GACJ,MACI,IAA0B,IAAtBZ,EACa,IAAIuG,EAAE+B,OAAO,EAAE5I,GAAWC,GAAY,CAC/CgI,MAAO,UACPC,UAAW,UACXC,YAAa,GACbU,OAAiB,SAAR9I,EACTqI,OAAQ,IACTV,MAAML,OACN,CACH,IAGIyB,EAHejC,EAAEiB,QAAQzH,GAGH0I,YAG1B1B,EAAI2B,UAAUF,GAEdjC,EAAEiB,QAAQzH,EAAa,CACnBqD,MAAO,CACHuE,MAAO,UACPC,UAAW,UACXC,YAAa,GACbC,OAAQ,KAEbV,MAAML,EAEb,CAER,CAEAtG,EAAE,gBAAgB9B,OAClB8B,EAAE,cAAckD,GAAG,mBAAmB,WAClCgF,iBACJ,IACA,IAAIC,GAAkB,EACtB,GAAI7E,EAAY8E,kBAAmB,CAC/B,IAAIC,EAAiB,IAAIxD,KAAKA,KAAKnF,MAAM4D,EAAY8E,oBACjDE,EAAa,IAAIzD,KAAKA,KAAKnF,MAAM4D,EAAY8E,oBACjDE,EAAWC,QAAQF,EAAeG,UAAY,GAC5B,IAAI3D,KACJyD,IACdH,GAAkB,EAE1B,MACQ7E,EAAYmF,WAAanF,EAAYoF,aACrCP,GAAkB,GAG1B,IAAwB,IAApBA,IAA6BzJ,EAAU,CACvC,IAAIgK,EAAmB,IAAI7D,KAAKvB,EAAYoF,YAC5C,IAAIC,EAEAA,EACID,EAAWE,cACXlL,EAAegL,EAAWG,WAAa,GACvCnL,EAAegL,EAAWF,WAtjB1C,SAAyBC,EAAmBE,GACtB,UAAdF,GAIJK,MAFY,4BAA4BL,KAAaE,KAGhDnI,MAAKuI,IACF,IAAKA,EAASC,GACV,MAAM,IAAI3H,MAAM,+BAEpB,OAAO0H,EAASE,MAAM,IAEzBzI,MAAK0I,IACF,MAAMC,EAASD,EAAgBA,gBACzBE,EAAsBD,EAAO,GAC7BE,EAAmBF,EAAO,GAGhC,IAAIG,EAAuBpM,SAASC,eAAe,mBAC/CoM,EAA6BrM,SAASC,eAAe,yBACrDqM,EAAkBtM,SAASC,eAAe,aAE9C,GAAIiM,EAAsB,GAAKC,EAAmB,EAAG,CAWjD,GATIC,IAC4B,IAAxBF,EACAE,EAAqBG,UAAY,iEAAiEhB,KAAaE,sCACxGS,EAAsB,IAC7BE,EAAqBG,UAAY,6DAA6DhB,KAAaE,MAAcS,4BAK7HE,EACA,GAA4B,IAAxBF,GACA,GAAIG,EAA4B,CAC5B,MAAMG,EAAgC,IAArBL,EACX,sDAAsDV,MAAcU,0DACpE,uDAAuDV,MAAcU,4DAC3EE,EAA2BE,UAAYC,CAC3C,OACG,GAAIL,EAAmB,GACtBE,EAA4B,CAC5B,MAAMG,EAAgC,IAArBL,EACX,2DAA2DV,MAAcU,0DACzE,4DAA4DV,MAAcU,4DAChFE,EAA2BE,UAAYC,CAC3C,CAKJF,IAAiBA,EAAgB7G,MAAMS,QAAU,QACzD,MAEQoG,IAAiBA,EAAgB7G,MAAMS,QAAU,OACzD,IAEHuG,OAAMpH,IACHC,QAAQD,MAAM,gDAAiDA,EAAM,GAEjF,CA2fQqH,CAAgBtG,EAAYmF,UAAWE,EAC3C,CACJ,CAAC,MAAOvH,GACJ,GAAIA,aAAaC,MACbC,aAAaF,OACV,CACH,MAAMyI,EAAU,CACZrI,QAAS/B,KAAKqK,UAAU1I,IAE5BG,WAAWsI,EACf,CACJ","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 © <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":""}