{"version":3,"file":"1327.8031bbbfc894bf6a9607.js","mappings":"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","sources":["webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/cw.pages.application.js","webpack://shipley-du-lib/./node_modules/rangeslider.js/dist/rangeslider.js","webpack://shipley-du-lib/./node_modules/responsive-toolkit/src/bootstrap-toolkit.js","webpack://shipley-du-lib/./node_modules/sticky-kit/dist/sticky-kit.js","webpack://shipley-du-lib/./common/js/du/appEnum/AuthenticationType.ts","webpack://shipley-du-lib/./common/js/du/appEnum/S1CustomerType.ts","webpack://shipley-du-lib/./common/js/du/utility/analytics/GoogleAnalytics/interfaces/Ga4AnalyticsApplicationProduct.ts","webpack://shipley-du-lib/./common/js/du/utility/analytics/GoogleAnalytics/interfaces/Ga4EnrollmentProduct.ts","webpack://shipley-du-lib/./common/js/du/utility/analytics/GoogleAnalytics/composables/AnalyticState.ts","webpack://shipley-du-lib/./common/js/du/utility/analytics/GoogleAnalytics/interfaces/Ga4AnalyticServiceProduct.ts","webpack://shipley-du-lib/./common/js/du/utility/signalRUtils.ts"],"sourcesContent":["import moment from \"moment\";\r\nimport ResponsiveBootstrapToolkit from \"responsive-toolkit\";\r\nimport Mustache from \"mustache\";\r\nimport * as rangeslider from \"rangeslider.js\";\r\nimport \"bootstrap/dist/js/bootstrap\";\r\nimport \"../lib/bootstrap-datetimepicker/bootstrap-datetime-4.7.14\";\r\nimport * as $ from \"jquery\";\r\nimport * as BootstrapDialog from \"bootstrap3-dialog\";\r\nimport \"sticky-kit/dist/sticky-kit\";\r\nimport { Alert } from \"bootstrap\";\r\nimport { HubConnectionBuilder, getDefaultSignalRConnectionOptions } from \"@utility/signalRUtils\";\r\nimport { createNonRoutedApp } from \"@du/AppStartup\";\r\nimport { GetHtmlContents } from \"@interfaces/attributes/MarketingAttribute\";\r\nimport attributeListingBadge from \"@components/pricing/attributeListingBadge.vue\";\r\nimport { tryMountWidgetContent } from \"@compUtility/content/helper\";\r\nimport { useAnalyticState } from \"@du/utility/analytics/GoogleAnalytics/composables/AnalyticState\";\r\nimport { WorryFreeRenewalOption } from \"@components/pricing/enums/WorryFreeRenewalOption\";\r\nimport { AuthenticationType } from \"@appEnum/AuthenticationType\";\r\nimport { GetProductFullName } from \"@appEnum/ProductCode\";\r\nimport { getMaskedPricePlans } from \"@interfaces/pricing/guidedPricing/pricing\";\r\n\r\nconst analytics = useAnalyticState();\r\n\r\nconst TANKSIZE_NOTSURE = 1;\r\n\r\n(function (cw, $, undefined) {\r\n \"use strict\";\r\n $.extend(true, cw, {\r\n pages: {\r\n application: {\r\n $wrapperEl: null,\r\n args: null,\r\n PropanePriceCapFee: 4.97,\r\n embeddedContentApp: [],\r\n analyticListName: \"ExpressApp\",\r\n promoCodeValidationResponse: {\r\n Unknown: 0,\r\n Valid: 1,\r\n PromoExpired: 2,\r\n PromoNotFound: 3,\r\n },\r\n equipmentTypeId: {\r\n AirConditioner: 24,\r\n HeatPump: 30,\r\n HeatingUnit: 42,\r\n },\r\n applicationPaymentResponse: {\r\n Unknown: 0,\r\n Success: 1,\r\n PaymentFailed: 2,\r\n NoBalanceOnFile: 3,\r\n NoApplicationFound: 4,\r\n NoCCOnFile: 5,\r\n ApplicationAlreadyHasCharge: 6,\r\n ApplicationHasValidationErrors: 7,\r\n },\r\n serviceContractState: {\r\n contractPanelsDisplay: 1,\r\n contractModalDisplay: 2,\r\n contractModalUpgradePlanDisplay: 3,\r\n },\r\n ldcAccountStatuses: {\r\n Unknown: 0,\r\n ExistingApplication: 1,\r\n ExistingActiveAccount: 2,\r\n ExistingSuspendedAccount: 3,\r\n NotFound: 4,\r\n ExistingLitigationAccount: 5,\r\n PendingReinstateExists: 6,\r\n ExistingAccountPendingFinal: 7,\r\n },\r\n oilAutoPayRequired: false,\r\n propaneAutoPayRequired: false,\r\n CONTACT_INTERACTION_ID: 7,\r\n LIFETIME_VALUE_ATTRIBUTE_ID: 33,\r\n validatedPhoneNumbers: {},\r\n applicationEquipment: [],\r\n contractPlanArgs: {},\r\n CC_NOT_SAVED_ERR_TEXT: \"Credit card has not been saved.\",\r\n propaneWasManualInput: false,\r\n monthlyScheduleSelectors: [\r\n \"sch-jan\",\r\n \"sch-feb\",\r\n \"sch-mar\",\r\n \"sch-apr\",\r\n \"sch-may\",\r\n \"sch-jun\",\r\n \"sch-jul\",\r\n \"sch-aug\",\r\n \"sch-sep\",\r\n \"sch-oct\",\r\n \"sch-nov\",\r\n \"sch-dec\",\r\n ],\r\n winterBlendPrice: 0.2,\r\n badUtils: [\"not-listed\", \"not-interested\"],\r\n acctConfigSaveTimer: null,\r\n budgetItemTmpl: null,\r\n marketPriceBudgetBuffer: null,\r\n defaultStatusSelections: null,\r\n defaultDeliveryNowDeliveryFee: null,\r\n liquidFuelDeliveryDefaults: null,\r\n zipRegex: null,\r\n budgetCutOffDate: null,\r\n requiresCreditCheck: false,\r\n $acctConfigActivePnlFwdBtn: null,\r\n $acctConfigStepForwardBtn: null,\r\n $acctConfigStepForwardBtnInterior: null,\r\n $confirmationPanel: null,\r\n planDetailCache: [],\r\n propaneDisclaimerVApp: null,\r\n winterBlendPricePlanAttributeId: 27,\r\n worryFreeRenewalAttributeId: 29,\r\n heatingOilWinterBlendHtml: `<div class=\"row\">\r\n <div class=\"col-xs-12 text-center\">\r\n <div class=\"winter-blend-wrapper\" title=\"Includes an additive oil treatment that will help ensure that your heating system produces ample heat and maintains its efficiency throughout the winter.\">\r\n <input type=\"checkbox\" id=\"add-winter-blend\" class=\"add-winter-blend\" value= \"1\" {{#isAddWinterBlend}} checked{{/isAddWinterBlend}} />\r\n <label for=\"add-winter-blend\">\r\n Add winter blend to my delivery <span class=\"winter-blend-offset\"></span> <i class=\"fa fa-info-circle shipley-green\"></i>\r\n </label>\r\n </div>\r\n </div>\r\n </div>`,\r\n allConfiguredEquipment: undefined,\r\n offerWorriedFreeRenewalOption: [\r\n WorryFreeRenewalOption.RequireRenewal,\r\n WorryFreeRenewalOption.OptionalRenewal,\r\n ],\r\n ngWorryFreeOptionComponent: null,\r\n elWorryFreeOptionComponent: null,\r\n viewedReinstateWarning: false,\r\n mountedMaskedComponent: null,\r\n init: function (args) {\r\n const self = this;\r\n self.budgetCutOffDate = moment(args.budgetCutOffDate);\r\n self.budgetItemTmpl = args.budgetItemTmpl;\r\n self.marketPriceBudgetBuffer = args.marketPriceBudgetBuffer;\r\n self.defaultStatusSelections = args.defaultStatusSelections;\r\n self.defaultDeliveryNowDeliveryFee = args.defaultDeliveryNowDeliveryFee;\r\n self.liquidFuelDeliveryDefaults = args.liquidFuelDeliveryDefaults;\r\n self.zipRegEx = new RegExp(\"^\\\\d{5}(-\\\\d{4})?$\");\r\n self.$wrapperEl = $(\".cw-application\").parent();\r\n self.requiresCreditCheck = args.requiresCreditCheck;\r\n self.args = args;\r\n\r\n self.bindInteractions();\r\n self.setAnalyticStateData();\r\n\r\n if (args.setAnalyticsZip && args.AppSource === \"ExpressApp\") {\r\n analytics.addZipCode(args.setAnalyticsZip, \"set express zipcode\");\r\n }\r\n },\r\n setAnalyticStateData: function () {\r\n const self = this;\r\n self.analyticListName = self.args.AppSource;\r\n\r\n let analyticState = { ListName: self.analyticListName };\r\n if (self.args.setAnalyticsZip) {\r\n analyticState.ZipCode = self.args.setAnalyticsZip;\r\n }\r\n\r\n analytics.setAnalyticState(analyticState);\r\n },\r\n bindInteractions: function () {\r\n const self = this;\r\n\r\n $(document).off(\"click\", \".remove-cart-item\");\r\n $(document).on(\"click\", \".remove-cart-item\", function () {\r\n const $this = $(this);\r\n self.removeItemFromCart($this.data(\"productCode\"), $this.data(\"cartProductItemId\"));\r\n });\r\n\r\n $(document).find(\"#page-footer\").first().empty();\r\n $(document)\r\n .find(\".mobile-cta\")\r\n .first()\r\n .text(\"Need Help?\")\r\n .attr(\"href\", $(\".phone-no\").attr(\"href\"));\r\n $(document).find(\".need-help\").attr(\"href\", $(\".phone-no\").attr(\"href\"));\r\n\r\n $(document).on(\"click\", \".mobile-cart-checkout\", function (e) {\r\n e.preventDefault();\r\n $(this).closest(\".row\").addClass(\"hidden\").removeClass(\"visible-xs\").removeClass(\"visible-sm\");\r\n $(\".remove-cart-item\").addClass(\"hidden\");\r\n $(\".panel-1\").slideToggle();\r\n $(\".panel-2\").slideToggle();\r\n $(\".mobile-cart-expand i\").removeClass(\"hidden\");\r\n });\r\n\r\n $(document).on(\"click\", \".mobile-cart-expand\", function () {\r\n if ($(\".mobile-cart-expand i\").hasClass(\"fa-chevron-down\")) {\r\n $(\".mobile-cart-expand i\").removeClass(\"fa-chevron-down\").addClass(\"fa-chevron-up\");\r\n } else {\r\n $(\".mobile-cart-expand i\").addClass(\"fa-chevron-down\").removeClass(\"fa-chevron-up\");\r\n }\r\n $(\".panel-1\").slideToggle();\r\n $(\".panel-2\").slideToggle();\r\n });\r\n\r\n switch (self.args.Step) {\r\n case 1:\r\n self.bindStep1();\r\n break;\r\n case 2:\r\n self.bindPlanSelection();\r\n break;\r\n case 3:\r\n self.bindAcctConfig(true);\r\n break;\r\n case 4:\r\n self.bindAcctVerify();\r\n break;\r\n case 5:\r\n break;\r\n default: //step6\r\n return;\r\n }\r\n\r\n const poopOverTmpl =\r\n '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content container\"></div></div>';\r\n self.$wrapperEl.find(\".bonus-rewards-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content:\r\n '<div class=\"ml10 mr10\">Redeem for gift cards towards ' +\r\n self.args.brandObj.BrandName +\r\n \" products and your favorite retailers such as Amazon, Lowes, Target, and Walmart.<br /><br />See shipleyenergy.com/rewards for more details.</div>\",\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n self.$wrapperEl.find(\".green-plan-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content: '<div class=\"ml10 mr10\">Every kWh Matched by Regional Green Purchases</div>',\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n self.$wrapperEl.find(\".guaranteed-savings-plan-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content: '<div class=\"ml10 mr10\">Always Lower than Utility Price to Compare</div>',\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n self.$wrapperEl.find(\".attrTip\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n $(\"body\").on(\"click\", \".toggle-plan-details\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $parent = $this.parents(\".price-plan-box\");\r\n const $details = $parent.find(\".plan-highlights-wrapper\");\r\n if (!$details.hasClass(\"hidden\")) {\r\n $details.addClass(\"hidden\");\r\n $this.html('<i class=\"fa fa-plus fa-fw\"></i> View Plan Details');\r\n return;\r\n }\r\n\r\n $details.removeClass(\"hidden\");\r\n $this.html('<i class=\"fa fa-minus fa-fw\"></i> View Plan Details');\r\n\r\n const selectBox = $parent.find(\"input\");\r\n const pricePlanId = parseInt(selectBox.val());\r\n const priceSheetLineId = selectBox.data(\"priceSheetLineId\");\r\n const productId = selectBox.data(\"productCode\");\r\n const hasWinterBlendSelected = $(\"#add-winter-blend\").is(\":checked\");\r\n\r\n const pricePlanMatch = self.getPriceByPricePlanPriceSheetLine({\r\n productPricePlans: self.getPricesByProductCode(productId),\r\n pricePlanCode: pricePlanId,\r\n pricePlanSheetLineId: priceSheetLineId,\r\n });\r\n\r\n if (pricePlanMatch) {\r\n const vApp = self.planDetailCache.find((x) => x.priceSheetLineId === priceSheetLineId);\r\n if (vApp?.app) {\r\n vApp.app.unmount();\r\n }\r\n\r\n let attributeList = [...pricePlanMatch.MarketingAttributes];\r\n let filteredAttributes = self.filterMarketingAttributesForWinterBlend(\r\n attributeList,\r\n hasWinterBlendSelected\r\n );\r\n filteredAttributes = self.filterMarketingAttributesForWorryFree(\r\n attributeList,\r\n self.hasWorryFreeOptionSelected()\r\n );\r\n\r\n self.mountPricePlanAttributes(\r\n pricePlanMatch,\r\n priceSheetLineId,\r\n pricePlanId,\r\n filteredAttributes\r\n );\r\n\r\n analytics.productDetails(\r\n new analytics.Ga4EnrollmentProduct(pricePlanMatch, self.analyticListName).GetAnalyticProduct()\r\n );\r\n }\r\n });\r\n\r\n //#region SignalR config\r\n const sigrConn = new HubConnectionBuilder()\r\n .withUrl(\r\n `/sigr/cwApplication?appId=${self.args.Application.ApplicationId}`,\r\n getDefaultSignalRConnectionOptions()\r\n )\r\n .withAutomaticReconnect()\r\n .build();\r\n\r\n sigrConn.on(\"sigr.applicationStatusUpdate\", (data) => {\r\n if (\r\n (data?.CsrUser?.BackingAuthSystem ?? AuthenticationType.Unknown) ===\r\n AuthenticationType.AuthenticateViaActiveDirectory\r\n ) {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/release-application/\" + self.args.Application.ApplicationId,\r\n null,\r\n function () {},\r\n function () {}\r\n );\r\n cw.modal.Open({\r\n title: \"\",\r\n closable: false,\r\n modalBody: $(\r\n '<div><p class=\"text-center\"><em>' +\r\n (data.CsrUser.DisplayName ?? \"Customer Service\") +\r\n '</em> is now completing your application.</p> <p class=\"text-center\">You can close this browser window/tab, or go to our <a href=\"/\">home page</a>.</p></div>'\r\n ),\r\n buttons: [],\r\n });\r\n }\r\n });\r\n\r\n sigrConn\r\n .start()\r\n .then(() => {\r\n console.info(\"Application sigr connection started, connectionId:\", sigrConn.connectionId);\r\n })\r\n .catch((err) => {\r\n return console.error(`Error starting Application sigr connection: ${err}`);\r\n });\r\n //#endregion SignalR config\r\n },\r\n setPageHeader: function (msg) {\r\n const $header = $(\".container h1\");\r\n const existing = $header.html();\r\n if (existing !== msg) {\r\n $header.html(msg);\r\n }\r\n },\r\n getPricesByProductCode: function (productCode) {\r\n const self = this;\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n return self.args.prices.HeatingOilPrices;\r\n case cw.appEnum.ProductCode.Propane:\r\n return self.args.prices.PropanePrices;\r\n case cw.appEnum.ProductCode.Electricity:\r\n return self.args.prices.ElectricityPrices;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n return self.args.prices.NatGasPrices;\r\n case cw.appEnum.ProductCode.ServiceProduct:\r\n default:\r\n return;\r\n }\r\n },\r\n getPriceByPricePlanPriceSheetLine: function ({\r\n productPricePlans,\r\n pricePlanCode,\r\n pricePlanSheetLineId,\r\n }) {\r\n if (!productPricePlans || !pricePlanCode || !pricePlanSheetLineId) return;\r\n return productPricePlans.find(\r\n (x) => x.PricePlanCode === pricePlanCode && x.PriceSheetLineId === pricePlanSheetLineId\r\n );\r\n },\r\n mountPricePlanAttributes: function (pricePlan, priceSheetLineId, pricePlanId, marketingAttributes) {\r\n const self = this;\r\n const mount = document.querySelector(\r\n \"[data-vue-component=attributeListingBadge-\" + pricePlanId + \"]\"\r\n );\r\n\r\n const selectedPricePlan = { ...pricePlan };\r\n selectedPricePlan.MarketingAttributes = GetHtmlContents(\r\n marketingAttributes,\r\n self.args.HtmlContents\r\n );\r\n\r\n const vApp = createNonRoutedApp(attributeListingBadge, {\r\n pricePlan: selectedPricePlan,\r\n hideIcons: false,\r\n badge: true,\r\n showInternal: false,\r\n });\r\n\r\n vApp.mount(mount);\r\n\r\n self.planDetailCache = self.planDetailCache.filter((x) => x.priceSheetLineId !== priceSheetLineId);\r\n self.planDetailCache.push({ priceSheetLineId: priceSheetLineId, app: vApp, mount: mount });\r\n },\r\n getAcceptJsNewCcResp: function (resp) {\r\n const self = cw.pages.application;\r\n const $errPnl = self.$wrapperEl.find(\".payment-panel .pnl-err\");\r\n cw.alert.ClearAlert($errPnl);\r\n cw.webservices.getJson(\r\n \"CustomerApplication/process-auth-net-accept-js-response-and-set-payment-profile\",\r\n {\r\n authNetData: JSON.stringify(resp),\r\n applicationId: self.args.Application.ApplicationId,\r\n zipCode: self.args.Application.DeliveryPoints[0].ZipCode,\r\n },\r\n function (resp) {\r\n if (resp.WasSuccess) {\r\n self.args.Application.hasCcConfigured = true;\r\n self.args.Application.CreditCardLast4 = resp.ccLast4Digits;\r\n self.args.Application.CreditCardExpiration = resp.expirationDate;\r\n self.args.Application.AuthNetPaymentProfileId = resp.paymentProfileId;\r\n\r\n const $nextBtn = self.$wrapperEl.find(\".btn-payment-process-next\");\r\n self.$wrapperEl.find(\".credit-card-configured-form\").removeClass(\"hidden\");\r\n self.$wrapperEl\r\n .find(\".cc-add-target\")\r\n .append(\r\n '<div class=\"pl15 credit-card-item\">' +\r\n \"<label>Credit Card</label>\" +\r\n '<i class=\"fa fa-credit-card shipley-blue\"></i> ' +\r\n resp.ccLast4Digits +\r\n \" \" +\r\n (resp.expirationDate ? \" - exp. \" + resp.expirationDate : \"\") +\r\n ' <a href=\"#\" data-payment-profile-id=\"' +\r\n resp.paymentProfileId +\r\n '\" class=\"remove-credit-card shipley-blue fs-xs-14\" title=\"Change Credit Card?\"><i class=\"fa fa-trash\"></i></a>' +\r\n \"</div>\"\r\n );\r\n self.$wrapperEl.find(\".credit-card-configure-form\").addClass(\"hidden\");\r\n self.$wrapperEl.find(\".payment-wrapper .step-done\").addClass(\"completed\");\r\n $nextBtn.find(\".btn-text\").html('Next <i class=\"fa fa-arrow-right btn-icon\"></i>');\r\n\r\n const $paymentPnlInner = $nextBtn.closest(\".payment-panel\");\r\n $paymentPnlInner.closest(\".panel\").addClass(\"hidden\");\r\n\r\n self.recalcValidationPanelContents(true);\r\n return;\r\n } else {\r\n const msg = [];\r\n for (const element of resp.Errors) {\r\n msg.push(element.message);\r\n }\r\n\r\n const $btn = self.$wrapperEl.find(\".btn-forward\");\r\n const $cartIcon = $btn.find(\".btn-icon\");\r\n const $loadingInd = $btn.find(\".loading-ind\");\r\n\r\n $loadingInd.addClass(\"hidden\");\r\n $cartIcon.removeClass(\"hidden\");\r\n $btn.removeClass(\"disabled\");\r\n\r\n cw.alert.Alert(msg, $errPnl);\r\n return;\r\n }\r\n }\r\n );\r\n },\r\n bindAcctVerify: function () {\r\n const self = cw.pages.application;\r\n\r\n const $btnEnroll = self.$wrapperEl.find(\".confirm-and-order\");\r\n const $addressValidation = self.$wrapperEl.find(\"input[name=address-validation]\");\r\n const $errMsgPnl = self.$wrapperEl.find(\".err-message\");\r\n\r\n $(\".attrTip\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n $(\".price-plan-box\").each(function () {\r\n const $me = $(this);\r\n const $planHighlights = $me.find(\".plan-highlights\");\r\n const pricePlanId = $planHighlights.data(\"pricePlan\");\r\n const priceSheetLineId = $planHighlights.data(\"priceSheetLineId\");\r\n const productId = $planHighlights.data(\"productCode\");\r\n const hoProd = self.args.Application.DeliveryPoints[0].HeatingOilProducts;\r\n const hasWinterBlendSelected = hoProd && hoProd.length > 0 && hoProd[0].isWinterBlend;\r\n\r\n if (pricePlanId && priceSheetLineId) {\r\n const pricePlanMatch = self.getPriceByPricePlanPriceSheetLine({\r\n productPricePlans: self.getPricesByProductCode(productId),\r\n pricePlanCode: pricePlanId,\r\n pricePlanSheetLineId: priceSheetLineId,\r\n });\r\n\r\n if (pricePlanMatch) {\r\n let attributeList = [...pricePlanMatch.MarketingAttributes];\r\n\r\n let filteredAttributes = self.filterMarketingAttributesForWinterBlend(\r\n attributeList,\r\n hasWinterBlendSelected\r\n );\r\n filteredAttributes = self.filterMarketingAttributesForWorryFree(\r\n attributeList,\r\n self.hasWorryFreeOptionSelected()\r\n );\r\n\r\n self.mountPricePlanAttributes(\r\n pricePlanMatch,\r\n priceSheetLineId,\r\n pricePlanId,\r\n filteredAttributes\r\n );\r\n }\r\n }\r\n });\r\n\r\n $btnEnroll.removeClass(\"disabled\");\r\n $btnEnroll.off(\"click\");\r\n $btnEnroll.on(\"click\", function (e) {\r\n e.preventDefault();\r\n\r\n const $selectedValidatedAddress = self.$wrapperEl.find(\"input[name=address-validation]:checked\");\r\n\r\n if (!$errMsgPnl.hasClass(\"is-default\")) {\r\n cw.alert.ClearAlert($errMsgPnl);\r\n }\r\n\r\n if (\r\n $addressValidation.length === 0 ||\r\n ($addressValidation.length > 0 && $selectedValidatedAddress.length > 0)\r\n ) {\r\n const $loadingInd = $btnEnroll.find(\".loading-ind\");\r\n const $btnEnrollText = $btnEnroll.find(\".btn-text\");\r\n\r\n // #region finalizeApplication\r\n const finalizeApplication = function () {\r\n //keep on file if the credit check policy box was checked by customer web user for auditing\r\n if (\r\n self.requiresCreditCheck.IsRequired &&\r\n self.$wrapperEl.find(\"#credit-report\").is(\":checked\")\r\n ) {\r\n cw.webservices.getJson(\r\n \"Common/witness/\" +\r\n self.requiresCreditCheck.CreditCheckLoggingActionTypeId +\r\n \"/null/null/\" +\r\n self.args.Application.ApplicationId +\r\n \"/\"\r\n );\r\n }\r\n // #region setFinalizeTemplate\r\n const setFinalizeTemplate = function (tmplData, tmplKey) {\r\n self.$wrapperEl.parent().find(\".side-bar-container\").remove();\r\n self.$wrapperEl.removeClass().addClass(\"sf_colsOut\").addClass(\"col-xs-12\");\r\n\r\n cw.webservices.getJson(\r\n \"ContentApi/GetContentByPageId\",\r\n {\r\n BrandTypeId: self.args.brandObj.BrandTypeId,\r\n PageId: self.args.PageId,\r\n LimitToKeys: [tmplKey],\r\n },\r\n function (content) {\r\n let templateData = {};\r\n let newHtml = \"\";\r\n content.forEach(function (x) {\r\n newHtml += Mustache.to_html(x.HtmlContent, tmplData);\r\n });\r\n let obj = {};\r\n obj[tmplKey] = newHtml;\r\n $.extend(templateData, tmplData, obj); //set region we are looking for from content api\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationStep6.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateData,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Thanks!\");\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n $(window).scrollTop(0);\r\n }\r\n );\r\n }\r\n );\r\n };\r\n // #endregion setFinalizeTemplate\r\n\r\n clearTimeout(self.acctConfigSaveTimer);\r\n self.acctConfigSaveTimer = null;\r\n //one last save before finalize\r\n self.saveFullApplication(function () {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/finalize-application/\" + self.args.Application.ApplicationId,\r\n null,\r\n function (finalizeResp) {\r\n if (finalizeResp) {\r\n self.setLifetimeValues();\r\n if (finalizeResp.WasSuccess) {\r\n analytics.purchaseEvent({\r\n Id: self.args.Application.ApplicationId,\r\n Products: self.getAnalyticCheckoutProducts(),\r\n List: self.analyticListName,\r\n Affiliation: \"Completed\",\r\n Revenue: self.getAnalyticCheckoutRevenue(),\r\n Tax: \"0.00\",\r\n Shipping: \"0.00\",\r\n PromoCode: self.specialOfferPromoObj,\r\n });\r\n\r\n const myObj = { wasSuccess: true };\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].DeliveryRequested\r\n ) {\r\n myObj.OilDeliveryRequested = true;\r\n }\r\n\r\n setFinalizeTemplate(myObj, \"ApplicationThankYouHtml\");\r\n } else if (finalizeResp.RequiresCustomerServiceReview) {\r\n analytics.purchaseEvent({\r\n Id: self.args.Application.ApplicationId,\r\n Products: self.getAnalyticCheckoutProducts(),\r\n List: self.analyticListName,\r\n Affiliation: \"Completed needs Review\",\r\n Revenue: self.getAnalyticCheckoutRevenue(),\r\n Tax: \"0.00\",\r\n Shipping: \"0.00\",\r\n PromoCode: self.specialOfferPromoObj,\r\n });\r\n\r\n setFinalizeTemplate(\r\n { requiresCustomerServiceReview: true },\r\n \"ApplicationRequiresCustomerServiceReview\"\r\n );\r\n } else if (finalizeResp?.CreditCardProcessResult?.ResultCode) {\r\n switch (finalizeResp.CreditCardProcessResult.ResultCode) {\r\n case self.applicationPaymentResponse.PaymentFailed:\r\n ///TODO: handle payment failed\r\n cw.modal.Open({\r\n title: \"Payment Failed\",\r\n closable: false,\r\n modalBody: $(\r\n \"<div><p>Your bank or credit card provider rejected payment.</p><p>Please review your payment configuration before continuing.</p></div>\"\r\n ),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-arrow-left\"></i> Review Payment',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n autospin: false,\r\n action: function (mr) {\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n\r\n //rebind acctConfig\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationCart.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (sideBarHtml) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationAccountConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Enter Your Information\");\r\n\r\n self.$wrapperEl.removeClass(\"col-xs-12\");\r\n self.$wrapperEl.addClass(\r\n \"col-xs-12 col-md-7 col-md-pull-5 col-lg-8 col-lg-pull-4\"\r\n );\r\n\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n\r\n $(\".sidebar-wrapper\").replaceWith(sideBarHtml);\r\n self.$confirmationPanel =\r\n self.$wrapperEl.find(\".confirmation-panel\");\r\n\r\n self.bindAcctConfig(true);\r\n self.acctConfigJumpPanel(\r\n self.$wrapperEl.find(\".payment-panel\")\r\n );\r\n mr.close();\r\n }\r\n );\r\n }\r\n );\r\n },\r\n },\r\n ],\r\n });\r\n break;\r\n default:\r\n cw.modal.Open({\r\n title: \"Unknown Error\",\r\n closable: false,\r\n modalBody: $(\r\n \"<div><p>An unknown error occured while trying to process your application.</p><p>Please contract customer service to continue.</p></div>\"\r\n ),\r\n buttons: [],\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n function () {\r\n //err\r\n $loadingInd.addClass(\"hidden\");\r\n $btnEnroll.removeClass(\"disabled\");\r\n $btnEnrollText.html(\"Enroll\");\r\n cw.modal.Alert({\r\n title: \"Error\",\r\n text: \"An unknown error occurred processing your application.\",\r\n });\r\n }\r\n );\r\n });\r\n };\r\n // #endregion finalizeApplication\r\n\r\n $btnEnroll.addClass(\"disabled\");\r\n $loadingInd.removeClass(\"hidden\");\r\n $btnEnroll.html('Processing... <i class=\"fa fa-solid fa-circle-notch fa-spin fa-fw\"></i>');\r\n\r\n if (\r\n $addressValidation.length > 0 &&\r\n $selectedValidatedAddress.length > 0 &&\r\n $selectedValidatedAddress.val() === \"use-usps-addr\"\r\n ) {\r\n const $uspsAddr1 = self.$wrapperEl.find(\".usps-address-1\");\r\n const $uspsAddr2 = self.$wrapperEl.find(\".usps-address-2\");\r\n const $uspsCity = self.$wrapperEl.find(\".usps-city\");\r\n const $uspsState = self.$wrapperEl.find(\".usps-state\");\r\n const $uspsZip = self.$wrapperEl.find(\".usps-zip\");\r\n self.args.Application.DeliveryPoints[0].AddressLine1 =\r\n ($uspsAddr1.html() ?? \"\").trim() === \"\" ? \"\" : ($uspsAddr1.html() ?? \"\").trim();\r\n self.args.Application.DeliveryPoints[0].AddressLine2 =\r\n ($uspsAddr2.html() ?? \"\").trim() === \"\" ? \"\" : ($uspsAddr2.html() ?? \"\").trim();\r\n self.args.Application.DeliveryPoints[0].City =\r\n ($uspsCity.html() ?? \"\").trim() === \"\" ? \"\" : ($uspsCity.html() ?? \"\").trim();\r\n self.args.Application.DeliveryPoints[0].State =\r\n ($uspsState.html() ?? \"\").trim() === \"\" ? \"\" : ($uspsState.html() ?? \"\").trim();\r\n self.args.Application.DeliveryPoints[0].ZipCode =\r\n ($uspsZip.html() ?? \"\").trim() === \"\" ? \"\" : ($uspsZip.html() ?? \"\").trim();\r\n self.saveDeliveryPoint(false, function (dp) {\r\n finalizeApplication();\r\n });\r\n } else {\r\n finalizeApplication();\r\n }\r\n } else if ($addressValidation.length > 0 && $selectedValidatedAddress.length < 1) {\r\n $errMsgPnl.removeClass(\"is-default well\");\r\n cw.alert.Alert(\r\n { text: \"Please selected the correct version of your service address.\", $el: null },\r\n $errMsgPnl\r\n );\r\n } else {\r\n $errMsgPnl.removeClass(\"is-default well\");\r\n cw.alert.Alert(\r\n { text: \"Please accept the terms and conditions before continuing.\", $el: null },\r\n $errMsgPnl\r\n );\r\n }\r\n });\r\n },\r\n hasWorryFreeOptionSelected: function () {\r\n const self = this;\r\n\r\n return (\r\n (self.args.Application.DeliveryPoints[0]?.ElectricProducts[0]?.FixedRenewal ?? false) ||\r\n (self.args.Application.DeliveryPoints[0]?.NatGasProducts[0]?.FixedRenewal ?? false)\r\n );\r\n },\r\n acctConfigPostPayment: function ($target) {\r\n const self = cw.pages.application;\r\n\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n templateArgs.verifyColumnSize = 6;\r\n\r\n const templateBindFunc = function (tmpl) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationStep5.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmpl,\r\n function (renderedHtml) {\r\n $target.empty().append(renderedHtml);\r\n self.bindAcctVerify();\r\n }\r\n );\r\n };\r\n\r\n ///TODO: remove the harcoded 0 when (if) this application supports more than 1 delivery point\r\n cw.webservices.getJson(\r\n \"CustomerApplication/usps-validate-service-address/\" + self.args.Application.ApplicationId + \"/0\",\r\n null,\r\n function (uspsVerifyResp) {\r\n if (uspsVerifyResp && !uspsVerifyResp.HasError) {\r\n var dp = self.args.Application.DeliveryPoints[0];\r\n if (\r\n (!uspsVerifyResp.Address1 && dp.AddressLine1) ||\r\n (uspsVerifyResp.Address1 && !dp.AddressLine1) ||\r\n (uspsVerifyResp.Address1 &&\r\n dp.AddressLine1 &&\r\n uspsVerifyResp.Address1.toLowerCase() !== dp.AddressLine1.toLowerCase()) ||\r\n (!uspsVerifyResp.Address2 && dp.AddressLine2) ||\r\n (uspsVerifyResp.Address2 && !dp.AddressLine2) ||\r\n (uspsVerifyResp.Address2 &&\r\n dp.AddressLine2 &&\r\n uspsVerifyResp.Address2 &&\r\n uspsVerifyResp.Address2.toLowerCase() !== dp.AddressLine2.toLowerCase()) ||\r\n (!uspsVerifyResp.City && dp.City) ||\r\n (uspsVerifyResp.City && !dp.City) ||\r\n (uspsVerifyResp.City &&\r\n dp.City &&\r\n uspsVerifyResp.City.toLowerCase() !== dp.City.toLowerCase()) ||\r\n (!uspsVerifyResp.State && dp.State) ||\r\n (uspsVerifyResp.State && !dp.State) ||\r\n (uspsVerifyResp.State && dp.State && uspsVerifyResp.State !== dp.State) ||\r\n (!uspsVerifyResp.Zip5 && dp.ZipCode) ||\r\n (uspsVerifyResp.Zip5 && !dp.ZipCode) ||\r\n (uspsVerifyResp.Zip5 && dp.ZipCode && uspsVerifyResp.Zip5 !== dp.ZipCode)\r\n ) {\r\n templateArgs.hasUspsAddress = true;\r\n templateArgs.UspsAddressLine1 = uspsVerifyResp.Address1;\r\n templateArgs.UspsAddressLine2 = uspsVerifyResp.Address2;\r\n templateArgs.UspsCity = uspsVerifyResp.City;\r\n templateArgs.UspsState = uspsVerifyResp.State;\r\n templateArgs.UspsZipCode = uspsVerifyResp.Zip5;\r\n }\r\n } else {\r\n templateArgs.hasUspsAddress = false;\r\n }\r\n templateBindFunc(templateArgs);\r\n }\r\n );\r\n },\r\n acctConfigExpressAddToCart: async function (productCode) {\r\n cw.loadingIndicator.start();\r\n const self = this;\r\n let title = \"\";\r\n let btnText = '<i class=\"fa fa-check\"></i> Select Plan';\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n let isNextBtnDisabled = true;\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n templateArgs.renderHeatingOilProducts = true;\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n templateArgs.renderPropaneProducts = true;\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n templateArgs.renderElectricProducts = true;\r\n templateArgs.showElectric = true;\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n templateArgs.renderNatGasProducts = true;\r\n templateArgs.showNatGas = true;\r\n break;\r\n case cw.appEnum.ProductCode.ServiceProduct:\r\n btnText = '<i class=\"fa fa-check\"></i> Done';\r\n break;\r\n default:\r\n return; // Unknown product; bail before we open the modal\r\n }\r\n\r\n templateArgs.maxPricePlansPerRow = 3;\r\n\r\n const pickProduct = function () {\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n title = '<span class=\"icon-heating-oil\"></span> Add Heating Oil service';\r\n templateArgs.ProductName = \"Heating Oil\";\r\n if (templateArgs.heatingOilPlans) {\r\n templateArgs.miniAddProducts = templateArgs.heatingOilPlans;\r\n templateArgs.productExtra = Mustache.to_html(self.heatingOilWinterBlendHtml, templateArgs);\r\n if (templateArgs.miniAddProducts && templateArgs.hasOilSelection) {\r\n isNextBtnDisabled = false;\r\n }\r\n } else if (templateArgs.DeliveryZipCode) {\r\n templateArgs.zipError =\r\n \"Unfortunately \" +\r\n self.args.brandObj.BrandName +\r\n \" does not currently service heating oil in <em>\" +\r\n templateArgs.DeliveryZipCode +\r\n \"</em>\";\r\n templateArgs.DeliveryZipCode = null;\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n title = '<span class=\"icon-propane\"></span> Add Propane service';\r\n templateArgs.ProductName = \"Propane\";\r\n templateArgs.miniAddProducts = templateArgs.propanePlans;\r\n if (templateArgs.miniAddProducts && templateArgs.hasSelectedPropaneProduct) {\r\n isNextBtnDisabled = false;\r\n }\r\n if (\r\n templateArgs.DeliveryZipCode &&\r\n self.args.prices?.PropanePrices?.length < 1 &&\r\n !templateArgs.propanePlans\r\n ) {\r\n templateArgs.zipError =\r\n \"Unfortunately \" +\r\n self.args.brandObj.BrandName +\r\n \" does not currently service propane in <em>\" +\r\n templateArgs.DeliveryZipCode +\r\n \"</em>\";\r\n templateArgs.DeliveryZipCode = null;\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n templateArgs.ProductName = \"Electricity\";\r\n title = '<span class=\"icon-electricity\"></span> Add Electricity service';\r\n if (\r\n self.args.Application.DeliveryPoints &&\r\n self.args.Application.DeliveryPoints.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ZipCode !== \"\" &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts &&\r\n ((self.args.Application.DeliveryPoints[0].ElectricProducts.length === 0 &&\r\n self.args.prices &&\r\n self.args.prices.ElectricUtilities.length > 1) ||\r\n (self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n (!self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode ||\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode.trim() ===\r\n \"\")))\r\n ) {\r\n templateArgs.showUtilitySelector = true;\r\n } else if (templateArgs.SelectedElectricUtilityName) {\r\n title += \" - \" + templateArgs.SelectedElectricUtilityName;\r\n }\r\n templateArgs.miniAddProducts = !templateArgs.showUtilitySelector\r\n ? templateArgs.electricPlans\r\n : null;\r\n if (templateArgs.miniAddProducts && templateArgs.hasSelectedElectricProduct) {\r\n isNextBtnDisabled = false;\r\n }\r\n if (templateArgs.showUtilitySelector) {\r\n btnText = 'Next <i class=\"fa fa-arrow-right\"></i>';\r\n }\r\n if (templateArgs.DeliveryZipCode && (self.args.prices?.ElectricityPrices?.length ?? 0) < 1) {\r\n templateArgs.zipError =\r\n \"Unfortunately \" +\r\n self.args.brandObj.BrandName +\r\n \" does not currently service electricity in <em>\" +\r\n templateArgs.DeliveryZipCode +\r\n \"</em>\";\r\n templateArgs.DeliveryZipCode = null;\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n templateArgs.ProductName = \"Natural Gas\";\r\n title = '<span class=\"icon-natural-gas\"></span> Add Natural Gas service';\r\n if (\r\n self.args.Application.DeliveryPoints &&\r\n self.args.Application.DeliveryPoints.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ZipCode !== \"\" &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts &&\r\n ((self.args.Application.DeliveryPoints[0].NatGasProducts.length === 0 &&\r\n self.args.prices &&\r\n self.args.prices.NatGasUtilities.length > 1) ||\r\n (self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n (!self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode ||\r\n (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode ?? \"\"\r\n ).trim() === \"\")))\r\n ) {\r\n templateArgs.showUtilitySelector = true;\r\n } else if (templateArgs.SelectedNatGasUtilityName) {\r\n title += \" - \" + templateArgs.SelectedNatGasUtilityName;\r\n }\r\n templateArgs.miniAddProducts = !templateArgs.showUtilitySelector\r\n ? templateArgs.natGasPlans\r\n : null;\r\n if (templateArgs.miniAddProducts && templateArgs.hasSelectedNatGasProduct) {\r\n isNextBtnDisabled = false;\r\n }\r\n if (templateArgs.showUtilitySelector) {\r\n btnText = 'Next <i class=\"fa fa-arrow-right\"></i>';\r\n }\r\n if (\r\n templateArgs.DeliveryZipCode &&\r\n (!self.args.prices ||\r\n !self.args.prices.NatGasPrices ||\r\n self.args.prices.NatGasPrices.length < 1)\r\n ) {\r\n templateArgs.zipError =\r\n \"Unfortunately \" +\r\n self.args.brandObj.BrandName +\r\n \" does not currently service natural gas in <em>\" +\r\n templateArgs.DeliveryZipCode +\r\n \"</em>\";\r\n templateArgs.DeliveryZipCode = null;\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.ServiceProduct:\r\n title = '<span class=\"icon-installation\"></span> Add Service Contract';\r\n templateArgs.ProductName = \"Service Contract\";\r\n if (templateArgs.prices && templateArgs.prices.ZipSupportsServiceContract) {\r\n // Nothing\r\n } else if (templateArgs.DeliveryZipCode) {\r\n templateArgs.zipError = `Unfortunately ${self.args.brandObj.BrandName} does not currently offer service contracts in <em>${templateArgs.DeliveryZipCode}</em>`;\r\n }\r\n break;\r\n default:\r\n return; // Unknown product; bail before we open the modal\r\n }\r\n };\r\n\r\n if (templateArgs.isGuidedExperience) {\r\n await cw.webservices\r\n .getJson(\"CustomerApplication/get-prices-by-zip-county\", {\r\n zip: templateArgs.Application.DeliveryPoints[0].ZipCode,\r\n countyFips: templateArgs.Application.DeliveryPoints[0].CountyId,\r\n customerClassificationType: templateArgs.Application.CustomerClassification,\r\n existingApplication: templateArgs.Application.ApplicationId,\r\n existingAccount: false,\r\n brandTypeFilter: [templateArgs.brandObj.BrandTypeId],\r\n isSelfService: true,\r\n })\r\n .then(function (zipPricing) {\r\n if (zipPricing) {\r\n self.args.isExpressCheckout = false;\r\n templateArgs.prices = zipPricing;\r\n self.args.prices = zipPricing;\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n pickProduct();\r\n }\r\n });\r\n } else {\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n pickProduct();\r\n }\r\n\r\n const renderModal = function (modalHtml, buttonText, productCode) {\r\n cw.modal.Open({\r\n data: { selectedProductCode: productCode },\r\n title: title,\r\n modalBody: $(modalHtml),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n autospin: false,\r\n action: function (mr) {\r\n mr.close();\r\n },\r\n },\r\n {\r\n label: buttonText,\r\n cssClass:\r\n \"btn-primary btn-mini-add-modal-forward btn-xs-block\" +\r\n (isNextBtnDisabled ? \" disabled\" : \"\"),\r\n autospin: false,\r\n action: function (mr) {\r\n //success or next depending on which pane is showing\r\n const self = cw.pages.application;\r\n\r\n var $thisBtn = $(this);\r\n var orignalBtnText = $thisBtn.html();\r\n $thisBtn.addClass(\"disabled\");\r\n $thisBtn.html('<i class=\"fa fa-solid fa-circle-notch fa-spin fa-fw\"></i>');\r\n\r\n var productCode = mr.getData(\"selectedProductCode\");\r\n var $zipWrapper = mr.$modalBody.find(\".zip-selector-wrapper\");\r\n var $propaneSubclassWrapper = mr.$modalBody.find(\".propane-subclass-selector\");\r\n var $productSelectorWrapper = mr.$modalBody.find(\".product-selector-wrapper\");\r\n var $estimatedUsageText = mr.$modalBody.find(\".estimated-usage-text\");\r\n var $utilitySelector = mr.$modalBody.find(\".utility-selector\");\r\n var $zipInput = mr.$modalBody.find(\".zipCode\");\r\n if (!$zipWrapper.hasClass(\"hidden\")) {\r\n //zip pane\r\n var myZip = $.trim($zipInput.val());\r\n if (myZip && self.zipRegEx.test(myZip)) {\r\n var d;\r\n if (\r\n typeof self.args.Application.DeliveryPoints !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints.length > 0\r\n ) {\r\n d = self.args.Application.DeliveryPoints[0];\r\n d.ZipCode = myZip;\r\n } else {\r\n d = {\r\n ApplicationId: self.args.Application.ApplicationId,\r\n DeliveryPointId: 0,\r\n ZipCode: myZip,\r\n ElectricProducts: [],\r\n Equipment: [],\r\n HeatingOilProducts: [],\r\n NatGasProducts: [],\r\n PropaneProducts: [],\r\n ServiceContracts: [],\r\n ServiceOrders: [],\r\n };\r\n }\r\n let custType = 1; // this might need to be wired to the UI\r\n self.args.Application.CustomerType = custType;\r\n\r\n self.args.Application.CustomerTypeText =\r\n custType === 1 ? \"Residential\" : custType === 2 ? \"Commercial\" : \"U\";\r\n\r\n analytics.addZipCode(d.ZipCode, self.args.Application.CustomerType);\r\n\r\n cw.webservices.getJson(\r\n \"CustomerApplication/zip-enrollment-save-application-delivery-point\",\r\n {\r\n deliveryPoint: d,\r\n customerType: custType,\r\n },\r\n function (zipPricing) {\r\n const $zipError = mr.$modalBody.find(\".zipError\");\r\n\r\n if (zipPricing) {\r\n self.args.isExpressCheckout = false;\r\n self.args.Application.DeliveryPoints = [d];\r\n self.args.prices = zipPricing;\r\n\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n\r\n d.CountyId =\r\n zipPricing.County.length && zipPricing.County[0].CountyId\r\n ? zipPricing.County[0].CountyId\r\n : null;\r\n d.State = zipPricing.SelectedStateAbbr ? zipPricing.SelectedStateAbbr : null;\r\n\r\n templateArgs.maxPricePlansPerRow = 3;\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n const $utilWrapper = mr.$modalBody.find(\".utility-select-wrapper\");\r\n\r\n const prepUtilitySelection = function (pCode) {\r\n let html = \"\";\r\n\r\n let utils = [];\r\n let prodType = \"\";\r\n if (\r\n pCode === cw.appEnum.ProductCode.Electricity &&\r\n self.args.prices.ElectricUtilities.length > 0\r\n ) {\r\n utils = self.args.prices.ElectricUtilities;\r\n prodType = \"elec\";\r\n } else if (\r\n pCode === cw.appEnum.ProductCode.NaturalGas &&\r\n self.args.prices.NatGasUtilities.length > 0\r\n ) {\r\n utils = self.args.prices.NatGasUtilities;\r\n prodType = \"ng\";\r\n }\r\n\r\n if (utils.length > 0) {\r\n utils.forEach(function (x) {\r\n html +=\r\n \"<li>\" +\r\n '\t<input type= \"radio\" name= \"util-selection\" id= \"' +\r\n prodType +\r\n \"-\" +\r\n x.UtilityCode +\r\n '\" value= \"' +\r\n x.UtilityCode +\r\n '\" class=\"utilName\" /> <label for=\"' +\r\n prodType +\r\n \"-\" +\r\n x.UtilityCode +\r\n '\">' +\r\n x.UtilityName +\r\n \"</label>\" +\r\n \"\t</li>\";\r\n });\r\n } else {\r\n html +=\r\n \"<li>\" +\r\n '<input type= \"radio\" name= \"util-selection\" value= \"not-listed\" id= \"elec-util-not-listed\" /> <label for=\"elec-util-not-listed\">Utility not listed</label>' +\r\n \"</li>\";\r\n }\r\n\r\n return {\r\n html: html,\r\n utils: utils,\r\n };\r\n };\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n var hoPrices = self.args.prices.HeatingOilPrices.map(function (x) {\r\n return x;\r\n });\r\n if (self.args.expressPricePlanId) {\r\n var selectedPrice = self.args.prices.HeatingOilPrices.filterSingle(\r\n function (x) {\r\n if (x.PricingPlan === self.args.expressPricePlanId) {\r\n return x;\r\n }\r\n }\r\n );\r\n if (selectedPrice) {\r\n selectedPrice.isSelected = true;\r\n hoPrices = [selectedPrice];\r\n }\r\n }\r\n\r\n if (hoPrices.length < 1) {\r\n $zipError.html(\r\n `Unfortunately ${self.args.brandObj.BrandName} does not currently service heating oil in <em>${myZip}</em>.`\r\n );\r\n $thisBtn.html('Next <i class=\"fa fa-arrow-right\"></i>');\r\n $thisBtn.removeClass(\"disabled\");\r\n return;\r\n }\r\n\r\n $zipWrapper.addClass(\"hidden\");\r\n var hoHtml = self.renderPricePlans(\r\n self.args.appPricePlanTmpl,\r\n hoPrices,\r\n 3,\r\n true\r\n );\r\n\r\n $productSelectorWrapper.empty();\r\n $productSelectorWrapper.append(hoHtml);\r\n $productSelectorWrapper.append(self.heatingOilWinterBlendHtml);\r\n $productSelectorWrapper.removeClass(\"hidden\");\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.html('Select Plan <i class=\"fa fa-arrow-right fa-fw\"></i>');\r\n\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n if (self.args.prices.PropanePrices.length > 0) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPropaneSubclassConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n btnText = 'Next <i class=\"fa fa-arrow-right\"></i>';\r\n\r\n mr.$modalBody\r\n .find(\".propane-subclass-selector-inner\")\r\n .append(renderedHtml);\r\n var $estimatedUsageText = mr.$modalBody.find(\".estimated-usage-text\");\r\n var $propaneRangSlider = mr.$modalBody.find(\r\n \".propane-estimated-yearly-usage\"\r\n );\r\n\r\n $propaneRangSlider.rangeslider({\r\n polyfill: false,\r\n onSlide: function (position, value) {\r\n $estimatedUsageText.html(value);\r\n },\r\n onSlideEnd: function (position, value) {\r\n $estimatedUsageText.html(value);\r\n self.propaneWasManualInput = true;\r\n },\r\n });\r\n\r\n $zipWrapper.addClass(\"hidden\");\r\n $propaneSubclassWrapper.removeClass(\"hidden\");\r\n $thisBtn.html(btnText);\r\n }\r\n );\r\n } else {\r\n $zipError.html(\r\n `Unfortunately ${self.args.brandObj.BrandName} does not currently service propane in <em>${myZip}</em>.`\r\n );\r\n }\r\n\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n var utl = prepUtilitySelection(productCode);\r\n\r\n if (utl.utils.length > 1) {\r\n $utilWrapper.append(utl.html);\r\n $utilitySelector.removeClass(\"hidden\");\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.html('Select Utility <i class=\"fa fa-arrow-right fa-fw\"></i>');\r\n $zipWrapper.addClass(\"hidden\");\r\n } else if (utl.utils.length < 1) {\r\n $zipError.html(\r\n `Unfortunately ${\r\n self.args.brandObj.BrandName\r\n } does not currently service ${\r\n productCode === cw.appEnum.ProductCode.Electricity\r\n ? \"electricity\"\r\n : \"natural gas\"\r\n } in <em>${myZip}</em>.`\r\n );\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.html('Next <i class=\"fa fa-arrow-right fa-fw\"></i>');\r\n } else {\r\n var prod = {\r\n ApplicationId: self.args.Application.ApplicationId,\r\n DeliveryPointId: 0,\r\n ProductUtilityCode: utl.utils[0].UtilityCode,\r\n };\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.Electricity:\r\n self.args.Application.DeliveryPoints[0].ElectricProducts = [prod];\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n self.args.Application.DeliveryPoints[0].NatGasProducts = [prod];\r\n break;\r\n default:\r\n //shouldn't get here\r\n return;\r\n }\r\n\r\n templateArgs.maxPricePlansPerRow = 3;\r\n let tmplTmp = self.setSelectedProductTemplateArgs(templateArgs);\r\n let pricePlanHtml = \"\";\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.Electricity:\r\n pricePlanHtml = tmplTmp.electricPlans;\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n pricePlanHtml = tmplTmp.natGasPlans;\r\n break;\r\n default:\r\n //shouldn't get here\r\n return;\r\n }\r\n\r\n $productSelectorWrapper.empty();\r\n $productSelectorWrapper.append(pricePlanHtml);\r\n $zipWrapper.addClass(\"hidden\");\r\n $productSelectorWrapper.removeClass(\"hidden\");\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.html('Select Plan <i class=\"fa fa-arrow-right\"></i>');\r\n }\r\n\r\n break;\r\n case cw.appEnum.ProductCode.ServiceProduct:\r\n if (templateArgs?.prices?.ZipSupportsServiceContract) {\r\n $zipWrapper.addClass(\"hidden\");\r\n self.args.$ServiceContractProductTarget = $productSelectorWrapper;\r\n self.bindServiceContractsAndEquipment($productSelectorWrapper);\r\n } else if (templateArgs.DeliveryZipCode) {\r\n $zipError.html(\r\n `Unfortunately ${self.args.brandObj.BrandName} does not currently offer service contracts in <em>${templateArgs.DeliveryZipCode}</em>.`\r\n );\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.html('Next <i class=\"fa fa-arrow-right fa-fw\"></i>');\r\n }\r\n\r\n break;\r\n default:\r\n return;\r\n }\r\n } else {\r\n //handle if we could not get pricing\r\n $thisBtn.removeClass(\"disabled\");\r\n $thisBtn.find(\".btn-text\").removeClass(\"hidden\");\r\n $thisBtn.find(\".loading-ind\").addClass(\"hidden\");\r\n $zipError.html(\r\n \"It appears as if we could not determine pricing for your area.\"\r\n );\r\n }\r\n\r\n if (!$productSelectorWrapper.hasClass(\"hidden\")) {\r\n self.getPlanImpressions($productSelectorWrapper);\r\n }\r\n }\r\n );\r\n }\r\n } else if (!$utilitySelector.hasClass(\"hidden\")) {\r\n //utility selector pane\r\n var selectedUtil = mr.$modalBody.find(\"input[name=util-selection]:checked\");\r\n if (selectedUtil.length > 0) {\r\n if (self.badUtils.includes(selectedUtil.val())) {\r\n mr.close();\r\n } else {\r\n var templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n\r\n var prod = {\r\n ApplicationId: self.args.Application.ApplicationId,\r\n DeliveryPointId: 0,\r\n ProductUtilityCode: selectedUtil.val(),\r\n };\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.Electricity:\r\n self.args.Application.DeliveryPoints[0].ElectricProducts = [prod];\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n self.args.Application.DeliveryPoints[0].NatGasProducts = [prod];\r\n break;\r\n default:\r\n //shouldn't get here\r\n return;\r\n }\r\n\r\n //get rendered price plans\r\n templateArgs.maxPricePlansPerRow = 3;\r\n let tmplTmp = self.setSelectedProductTemplateArgs(templateArgs);\r\n let pricePlanHtml = \"\";\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.Electricity:\r\n pricePlanHtml = templateArgs.electricPlans;\r\n\r\n if (templateArgs.SelectedElectricUtilityName) {\r\n mr.$modalHeader\r\n .find(\".bootstrap-dialog-title\")\r\n .html(\r\n mr.$modalHeader.find(\".bootstrap-dialog-title\").html() +\r\n \" - \" +\r\n templateArgs.SelectedElectricUtilityName\r\n );\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n pricePlanHtml = templateArgs.natGasPlans;\r\n\r\n if (templateArgs.SelectedNatGasUtilityName) {\r\n mr.$modalHeader\r\n .find(\".bootstrap-dialog-title\")\r\n .html(\r\n mr.$modalHeader.find(\".bootstrap-dialog-title\").html() +\r\n \" - \" +\r\n templateArgs.SelectedNatGasUtilityName\r\n );\r\n }\r\n break;\r\n default:\r\n //shouldn't get here\r\n return;\r\n }\r\n\r\n $productSelectorWrapper.empty();\r\n $productSelectorWrapper.append(pricePlanHtml);\r\n //bind select handler\r\n mr.$modalBody.find(\".utility-select-wrapper input\").on(\"change\", function (e) {\r\n var $fwdBtn = mr.$modalFooter.find(\".btn-mini-add-modal-forward\");\r\n if (mr.$modalBody.find(\".utility-select-wrapper input:checked\").length > 0) {\r\n $fwdBtn.removeClass(\"disabled\");\r\n } else {\r\n $fwdBtn.addClass(\"disabled\");\r\n }\r\n });\r\n\r\n //reset forward button state\r\n $thisBtn.html('<i class=\"fa fa-check\"></i> Select Plan');\r\n $thisBtn.addClass(\"disabled\");\r\n\r\n $utilitySelector.addClass(\"hidden\");\r\n $productSelectorWrapper.removeClass(\"hidden\");\r\n }\r\n }\r\n } else if (!$propaneSubclassWrapper.hasClass(\"hidden\")) {\r\n //propane subclass pane\r\n if (\r\n mr.$modalBody.find(\"input.cbx-propane-usage:checked\").length > 0 &&\r\n mr.$modalBody.find(\"input[name=propane-ownage]:checked\").length > 0\r\n ) {\r\n const productCodeArgs = {\r\n TankOwnage: mr.$modalBody.find(\"input[name=propane-ownage]:checked\").val(),\r\n ProductUsageCodes: mr.$modalBody\r\n .find(\"input[type=checkbox].cbx-propane-usage:checked\")\r\n .map(function () {\r\n return $(this).val();\r\n })\r\n .get(),\r\n EstimatedUsage: parseInt($estimatedUsageText.html()),\r\n ProductCode: cw.appEnum.ProductCode.Propane,\r\n ProductClassXref: self.args.prices.ProductClassXref,\r\n };\r\n\r\n $productSelectorWrapper.empty();\r\n $productSelectorWrapper.append(\r\n cw.pages.application.getPropanePlansHtml(productCodeArgs, 3)\r\n );\r\n $propaneSubclassWrapper.addClass(\"hidden\");\r\n $productSelectorWrapper.removeClass(\"hidden\");\r\n self.getPlanImpressions($propaneSubclassWrapper);\r\n //reset forward button state\r\n $thisBtn.html('<i class=\"fa fa-check\"></i> Select Plan');\r\n $thisBtn.addClass(\"disabled\");\r\n }\r\n } else if (!$productSelectorWrapper.hasClass(\"hidden\")) {\r\n //product plan selector\r\n\r\n var doCartRebind = false;\r\n if (productCode === cw.appEnum.ProductCode.ServiceProduct) {\r\n doCartRebind = true;\r\n } else {\r\n var $selectedPricePlan = mr.$modalBody.find(\".enrollment-select input:checked\");\r\n if ($selectedPricePlan.length > 0) {\r\n productCode = $selectedPricePlan.data(\"productCode\");\r\n var price = $selectedPricePlan.data(\"unitPrice\");\r\n var priceSheetLineId = $selectedPricePlan.data(\"priceSheetLineId\");\r\n var pricePlanId = $.isNumeric($selectedPricePlan.val())\r\n ? parseInt($selectedPricePlan.val())\r\n : null;\r\n var isWinterBlend = $(\"#add-winter-blend:checked\").length > 0;\r\n\r\n var tankOwnership = null;\r\n var estimatedAnnualUsage = null;\r\n var usageCodes = [];\r\n\r\n if (productCode === cw.appEnum.ProductCode.Propane) {\r\n tankOwnership = mr.$modalBody.find(\"input[name=propane-ownage]:checked\").val();\r\n estimatedAnnualUsage = $.isNumeric($estimatedUsageText.html())\r\n ? parseInt($estimatedUsageText.html())\r\n : null;\r\n\r\n mr.$modalBody.find(\".cbx-propane-usage:checked\").each(function () {\r\n var $me = $(this);\r\n usageCodes.push($me.val());\r\n });\r\n }\r\n\r\n self.productSelectFunction(\r\n productCode,\r\n price,\r\n priceSheetLineId,\r\n pricePlanId,\r\n isWinterBlend,\r\n estimatedAnnualUsage,\r\n tankOwnership,\r\n usageCodes\r\n );\r\n doCartRebind = true;\r\n }\r\n }\r\n\r\n if (doCartRebind) {\r\n self.args.isExpressCheckout = false;\r\n templateArgs = {};\r\n\r\n $.extend(templateArgs, self.args);\r\n let tmplTmp = self.setSelectedProductTemplateArgs(templateArgs);\r\n\r\n //rebind acctConfig\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationAccountConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n function (acctConfigHtml) {\r\n self.$wrapperEl.empty();\r\n self.$wrapperEl.append(acctConfigHtml);\r\n self.$confirmationPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n //rebind cart\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationCart.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n function (sideBarHtml) {\r\n var $sidebarParent = $(\".cart-sidebar-wrapper\").parent();\r\n $sidebarParent.empty();\r\n $sidebarParent.append(sideBarHtml);\r\n self.bindAcctConfig(true);\r\n mr.close();\r\n }\r\n );\r\n }\r\n );\r\n self.setAccountCfgBreadCrumbs();\r\n }\r\n }\r\n },\r\n },\r\n ],\r\n onShownCallback: function (mr) {\r\n const self = cw.pages.application;\r\n var $existingCustomerBtn = $(\r\n '<a href=\"#\" class=\"existing-customer btn btn-red pull-left btn-xs-block mb10\">I\\'m an Existing Customer</a>'\r\n );\r\n $existingCustomerBtn.off(\"click\");\r\n $existingCustomerBtn.on(\"click\", self.showExistingCustomerModal);\r\n\r\n mr.$modalFooter.find(\".bootstrap-dialog-footer-buttons\").prepend($existingCustomerBtn);\r\n\r\n var productCode = mr.getData(\"selectedProductCode\");\r\n\r\n var $fwdBtn = mr.$modalFooter.find(\".btn-mini-add-modal-forward\");\r\n var $productWrapper = mr.$modalBody.find(\".product-selector-wrapper\");\r\n\r\n mr.$modalBody.find(\".winter-blend-wrapper\").tooltip({\r\n trigger: \"hover\",\r\n html: true,\r\n });\r\n\r\n mr.$modalBody.on(\"change\", \".winter-blend-wrapper input\", function (e) {\r\n const $this = $(this);\r\n self.adjustPriceForWinterBlend(\r\n mr.$modalBody.find(\".product-selector-wrapper\"),\r\n $this.is(\":checked\"),\r\n self.args.prices.HeatingOilPrices\r\n );\r\n });\r\n\r\n var $zipWrapper = mr.$modalBody.find(\".zip-selector-wrapper\");\r\n\r\n if (!$zipWrapper.hasClass(\"hidden\")) {\r\n $zipWrapper.find(\"input\").focus();\r\n } else if (productCode === cw.appEnum.ProductCode.ServiceProduct) {\r\n self.bindServiceContractsAndEquipment($productWrapper);\r\n }\r\n\r\n var $submitBtn = mr.$modalFooter.find(\".btn-mini-add-modal-forward\");\r\n\r\n $zipWrapper.find(\"input\").on(\"keyup keypress change blur paste\", function (e) {\r\n const $this = $(this);\r\n var myZip = $this.val();\r\n\r\n if (self.zipRegEx.test(myZip)) {\r\n $submitBtn.removeClass(\"disabled\");\r\n } else {\r\n $submitBtn.addClass(\"disabled\");\r\n }\r\n });\r\n\r\n $zipWrapper.find(\"input\").on(\"keydown\", function (e) {\r\n if (e.keyCode === 13) {\r\n mr.$modalBody.find(\".btn-mini-add-modal-forward:not(.disabled)\").click();\r\n }\r\n });\r\n\r\n // #region propane subclass selector\r\n var $propaneSlider = $(\".propane-modal-usage\");\r\n $propaneSlider.rangeslider({\r\n polyfill: false,\r\n onSlide: function (position, value) {\r\n mr.$modalBody.find(\".estimated-usage-text\").html(value);\r\n },\r\n onSlideEnd: function (position, value) {\r\n mr.$modalBody.find(\".estimated-usage-text\").html(value);\r\n self.propaneWasManualInput = true;\r\n },\r\n });\r\n\r\n mr.$modalBody.on(\"change\", \"input.cbx-propane-usage\", function (e) {\r\n if (!self.propaneWasManualInput) {\r\n const $this = $(this);\r\n var estimatedAnnualUsage = 0;\r\n mr.$modalBody.find(\"input.cbx-propane-usage:checked\").each(function () {\r\n var $me = $(this);\r\n estimatedAnnualUsage += $me.data(\"estimated-annual-usage\");\r\n });\r\n mr.$modalBody.find(\".propane-estimated-yearly-usage\").val(estimatedAnnualUsage).change();\r\n mr.$modalBody.find(\".estimated-usage-text\").html(estimatedAnnualUsage);\r\n }\r\n });\r\n\r\n const propaneValidFunc = function () {\r\n if (\r\n mr.$modalBody.find(\"input.cbx-propane-usage:checked\").length > 0 &&\r\n mr.$modalBody.find(\"input[name=propane-ownage]:checked\").length > 0\r\n ) {\r\n $fwdBtn.removeClass(\"disabled\");\r\n } else {\r\n $fwdBtn.addClass(\"disabled\");\r\n }\r\n };\r\n\r\n mr.$modalBody.on(\"change\", \"input.cbx-propane-usage\", function (e) {\r\n propaneValidFunc();\r\n });\r\n\r\n mr.$modalBody.on(\"change\", \"input[name=propane-ownage]\", function (e) {\r\n propaneValidFunc();\r\n });\r\n\r\n // #endregion propane subclass selector\r\n\r\n const enrollSelectFunc = function () {\r\n if (mr.$modalBody.find(\".enrollment-select input:checked\").length > 0) {\r\n $fwdBtn.removeClass(\"disabled\");\r\n } else {\r\n $fwdBtn.addClass(\"disabled\");\r\n }\r\n };\r\n\r\n mr.$modalBody.on(\"change\", \".enrollment-select\", enrollSelectFunc);\r\n if (!$productWrapper.hasClass(\"hidden\")) {\r\n self.getPlanImpressions($productWrapper);\r\n }\r\n\r\n const utilitySelectFunc = function () {\r\n if (mr.$modalBody.find(\".utility-select-wrapper input:checked\").length > 0) {\r\n $fwdBtn.removeClass(\"disabled\");\r\n } else {\r\n $fwdBtn.addClass(\"disabled\");\r\n }\r\n };\r\n\r\n mr.$modalBody.on(\"change\", \".utility-select-wrapper input\", utilitySelectFunc);\r\n },\r\n });\r\n };\r\n\r\n if (\r\n productCode === cw.appEnum.ProductCode.Propane &&\r\n templateArgs.DeliveryZipCode &&\r\n (!templateArgs.miniAddProducts || templateArgs.miniAddProducts === \"\")\r\n ) {\r\n templateArgs.showPlanButton = false;\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPropaneSubclassConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n templateArgs.propaneSubclassSelector = renderedHtml;\r\n templateArgs.ProductName = \"Propane\";\r\n btnText = 'Next <i class=\"fa fa-arrow-right\"></i>';\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationMiniProductSelector.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (html) {\r\n renderModal(html, btnText, productCode);\r\n }\r\n );\r\n }\r\n );\r\n } else {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationMiniProductSelector.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (html) {\r\n if (self.args.isExpressCheckout) {\r\n btnText = 'Next <i class=\"fa fa-arrow-right\"></i>';\r\n }\r\n renderModal(html, btnText, productCode);\r\n }\r\n );\r\n }\r\n cw.loadingIndicator.stop();\r\n },\r\n getCwOffset: function () {\r\n //this is to deal with the sticky menu the shipleyenergy site uses when in desktop mode\r\n var cwOffset = 0;\r\n if (ResponsiveBootstrapToolkit.is(\">sm\")) {\r\n cwOffset = 135;\r\n }\r\n\r\n return cwOffset;\r\n },\r\n bindAcctConfig: function (showSpecialOffers) {\r\n const self = this;\r\n self.args.Step = 3;\r\n\r\n cw.utility.focusElement(self.$wrapperEl.find(\".step-top\"), self.getCwOffset());\r\n\r\n // #region dom binding\r\n\r\n var $firstName = self.$wrapperEl.find(\".first-name\");\r\n var $lastName = self.$wrapperEl.find(\".last-name\");\r\n var $birthDate = self.$wrapperEl.find(\".birth-date\");\r\n var $phone = self.$wrapperEl.find(\".phone\");\r\n var $email = self.$wrapperEl.find(\".email\");\r\n var $languagePreference = self.$wrapperEl.find(\".language-preference\");\r\n var $specialOffers = self.$wrapperEl.find(\".special-offers\");\r\n\r\n var $futurePriceOptions = self.$wrapperEl.find(\"#future-price-options\");\r\n var $sendEmail = self.$wrapperEl.find(\"#send-email\");\r\n var $sendText = self.$wrapperEl.find(\"#send-text\");\r\n var $creditReport = self.$wrapperEl.find(\"#credit-report\");\r\n\r\n var $textSpecialOffersWc = self.$wrapperEl.find(\"#text-special-offers-wc\");\r\n var $textSpecialOffers = self.$wrapperEl.find(\"#text-special-offers\");\r\n\r\n var $delAddress1 = self.$wrapperEl.find(\".del-address1\");\r\n var $delAddress2 = self.$wrapperEl.find(\".del-address2\");\r\n var $delCity = self.$wrapperEl.find(\".del-city\");\r\n var $delState = self.$wrapperEl.find(\".del-state\");\r\n var $delZip = self.$wrapperEl.find(\".del-zip\");\r\n var $delInstructions = self.$wrapperEl.find(\".del-special-instructions\");\r\n\r\n var $billingSameAddress = self.$wrapperEl.find(\"#billingSame\");\r\n var $useSrvAsBillAddr = self.$wrapperEl.find(\".use-srv-addr-as-bill\");\r\n var $billAddress1 = self.$wrapperEl.find(\".billing-address1\");\r\n var $billAddress2 = self.$wrapperEl.find(\".billing-address2\");\r\n var $billCity = self.$wrapperEl.find(\".billing-city\");\r\n var $billState = self.$wrapperEl.find(\".billing-state\");\r\n var $billZip = self.$wrapperEl.find(\".billing-zip\");\r\n\r\n var $elLdcAcct = self.$wrapperEl.find(\".electric-ldc-account\");\r\n var $elBudget = self.$wrapperEl.find(\"input[name=el-on-budget]\");\r\n var $elMeterNumber = self.$wrapperEl.find(\".electric-meter-number\");\r\n\r\n var $ngLdcAcct = self.$wrapperEl.find(\".natgas-ldc-account\");\r\n var $ngBudget = self.$wrapperEl.find(\"input[name=ng-on-budget]\");\r\n var $ngMeterNumber = self.$wrapperEl.find(\".natgas-meter-number\");\r\n\r\n var $hoFillLoc = self.$wrapperEl.find(\"input[name=tankfilllocation]\");\r\n var $hoTankLoc = self.$wrapperEl.find(\".ho-tank-location\");\r\n var $hoTankSize = self.$wrapperEl.find(\".ho-tank-size\");\r\n var $hoTankLevel = self.$wrapperEl.find(\".ho-tank-level\");\r\n var $hoAnnualUsage = self.$wrapperEl.find(\".ho-annual-usage\");\r\n var $hoHotWater = self.$wrapperEl.find(\"input[name=ho-hot-water]\");\r\n var $hoDeliverySchedule = self.$wrapperEl.find(\".ho-delivery-schedule\");\r\n var $hoDeliverNow = self.$wrapperEl.find(\"#ho-deliver-now\");\r\n var $hoDeliveryGallons = self.$wrapperEl.find(\".ho-delivery-gallons\");\r\n var $hoDeliverNowWrapper = self.$wrapperEl.find(\".ho-delivery-now-wrapper\");\r\n var $hoScheduleMonthsWrapper = self.$wrapperEl.find(\".ho-delivery-schedule-months\");\r\n var $hoDeliverNowGalWrapper = self.$wrapperEl.find(\".ho-deliver-now-gallons-req\");\r\n var $hoMinGalWarningWrapper = self.$wrapperEl.find(\".ho-min-delivery-warning\");\r\n var $hoTankSizeToSmallWarningWrapper = self.$wrapperEl.find(\r\n \".ho-tank-size-too-small-delivery-warning\"\r\n );\r\n var $hoPreBuyGallonWrapper = self.$wrapperEl.find(\".ho-pre-buy-wrapper\");\r\n\r\n var $pTankFillLoc = self.$wrapperEl.find(\"input[name=pTankfilllocation]\");\r\n var $pTankPlacement = self.$wrapperEl.find(\".propane-tank-placement\");\r\n var $pTankSize = self.$wrapperEl.find(\".propane-tank-size\");\r\n var $pTankLevel = self.$wrapperEl.find(\".propane-tank-level\");\r\n var $pOtherHeatingSrc = self.$wrapperEl.find(\"input[name=propane-other-heating-source]\");\r\n\r\n var $PpTankFill = self.$wrapperEl.find(\"input[name=select-gallon-amount]\");\r\n var $pDeliveryGallons = self.$wrapperEl.find(\"input[name=propane-delivery-gallons]\");\r\n var $pDeliverySchedule = self.$wrapperEl.find(\".propane-delivery-schedule\");\r\n var $pDeliverNow = self.$wrapperEl.find(\"#propane-deliver-now\");\r\n var $pDeliveryFee = self.$wrapperEl.find(\".propane-delivery-fee\");\r\n var $PpGallonSelectWrapper = self.$wrapperEl.find(\".propane-gallon-select-wrapper\");\r\n var $ppMinGalWarningWrapper = self.$wrapperEl.find(\".pp-min-delivery-warning\");\r\n var $pTankSizeToSmallWarningWrapper = self.$wrapperEl.find(\r\n \".pp-tank-size-too-small-delivery-warning\"\r\n );\r\n\r\n var $pDeliverNowWrapper = self.$wrapperEl.find(\".propane-delivery-now-wrapper\");\r\n var $pScheduleMonthsWrapper = self.$wrapperEl.find(\".propane-delivery-schedule-months\");\r\n var $pDeliveryInputWrapper = self.$wrapperEl.find(\".propane-delivery-input-wrapper\");\r\n var $pMinGalWarningWrapper = self.$wrapperEl.find(\".propane-min-delivery-warning\");\r\n var $pPreBuyGallonWrapper = self.$wrapperEl.find(\".po-pre-buy-wrapper\");\r\n\r\n var $paymentSelectWrapper = self.$wrapperEl.find(\".payment-select-wrapper\");\r\n var $noPaymentNeededWrapper = self.$wrapperEl.find(\".no-payment-needed-wrapper\");\r\n var $paymentType = self.$wrapperEl.find(\".payment-type\");\r\n var $ccConfigFormWrapper = self.$wrapperEl.find(\".credit-card-configure-form\");\r\n var $eftConfigFormWrapper = self.$wrapperEl.find(\".eft-configure-form\");\r\n\r\n //panels\r\n var $paymentPanel = self.$wrapperEl.find(\".payment-panel\");\r\n var $propanePanel = self.$wrapperEl.find(\".propane-panel\");\r\n var $hoPanel = self.$wrapperEl.find(\".ho-panel\");\r\n var $ngPanel = self.$wrapperEl.find(\".ng-panel\");\r\n var $elPanel = self.$wrapperEl.find(\".el-panel\");\r\n var $billingPanel = self.$wrapperEl.find(\".bill-addr-panel\");\r\n var $serviceAddrPanel = self.$wrapperEl.find(\".addr-panel\");\r\n var $contactPanel = self.$wrapperEl.find(\".contact-panel\");\r\n\r\n var $sideBarWrapperElParent = $(\".cart-sidebar-wrapper\").parent();\r\n var $btnRewind = self.$wrapperEl.find(\".cw-application-acct-config .btn-rewind\");\r\n\r\n self.$acctConfigStepForwardBtn = self.$wrapperEl.find(\".btn-forward\");\r\n self.$acctConfigStepForwardBtnInterior = self.$wrapperEl.find(\".btn-panel-forward\");\r\n // #endregion dom binding\r\n if (showSpecialOffers) {\r\n self.bindCartSpecialOffers();\r\n }\r\n\r\n self.$wrapperEl.find(\".birth-date-info\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n $paymentType.on(\"change\", function (e) {\r\n const hasHOLP = self.args.Application.DeliveryPoints.some(function (dp) {\r\n return (\r\n (dp.HeatingOilProducts && dp.HeatingOilProducts.length > 0) ||\r\n (dp.PropaneProducts && dp.PropaneProducts.length > 0) ||\r\n (dp.ServiceContracts && dp.ServiceContracts.length > 0)\r\n );\r\n });\r\n\r\n if ($paymentType.val() === \"CHK\" && hasHOLP) {\r\n self.$wrapperEl.find(\".birth-date-wrapper\").removeClass(\"hidden\");\r\n $birthDate.datetimepicker({\r\n format: \"MM/DD/YYYY\",\r\n date: self.args.Application.ApplicantDateOfBirth\r\n ? moment(self.args.Application.ApplicantDateOfBirth)\r\n : null,\r\n });\r\n } else {\r\n self.$wrapperEl.find(\".birth-date-wrapper\").addClass(\"hidden\");\r\n }\r\n });\r\n\r\n self.$acctConfigActivePnlFwdBtn = self.$wrapperEl.find(\".contact-panel .btn-panel-forward\");\r\n self.setAccountCfgBreadCrumbs();\r\n\r\n self.$wrapperEl.find(\".btn-panel-back\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $thisPnl = $this.closest(\".panel\");\r\n const $thisPnlInner = $thisPnl.find(\".panel-body\");\r\n const $prevPnl = $thisPnl.prevAll(\".panel:not(.hidden)\");\r\n\r\n if ($prevPnl.length > 0) {\r\n const $prevPnlInner = $prevPnl.first().find(\".panel-body\");\r\n $thisPnlInner.collapse(\"hide\");\r\n $prevPnlInner.collapse(\"show\");\r\n cw.utility.focusElement($prevPnlInner, self.getCwOffset());\r\n self.$acctConfigActivePnlFwdBtn = $prevPnlInner.find(\".btn-panel-forward\");\r\n } else {\r\n // at the last one\r\n $thisPnlInner.collapse(\"hide\");\r\n }\r\n });\r\n\r\n const refreshPaymentOptions = function () {\r\n //handle payment options\r\n const existingPayType = $paymentType.val();\r\n let hasRequestedHoCOD = false,\r\n hasRequestedPpCOD = false;\r\n let hasWillCall =\r\n (self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n $hoDeliverySchedule.val() === \"W\") ||\r\n (self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 &&\r\n $pDeliverySchedule.val() === \"W\");\r\n let hasNotSureTankSizeWillCall =\r\n hasWillCall && (parseInt($hoTankSize.val()) === 1 || parseInt($pTankSize.val()) === 1);\r\n\r\n if (self.args.Application.DeliveryPoints.length > 0) {\r\n if (self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0) {\r\n const hoPricePlan = self.getCurrentHeatingOilPricePlan();\r\n hasRequestedHoCOD =\r\n hoPricePlan?.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice ||\r\n ($(\"#ho-deliver-now\").is(\":checked\") && hasWillCall);\r\n\r\n self.oilAutoPayRequired =\r\n hoPricePlan?.MarketingAttributes?.some(function (a) {\r\n if (a.PricePlanAttributeName === \"AutoPay Required\") {\r\n return a;\r\n }\r\n }) ?? false;\r\n }\r\n if (self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0) {\r\n const ppPricePlan = self.getCurrentPropanePricePlan();\r\n hasRequestedPpCOD =\r\n ppPricePlan?.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice ||\r\n ($(\"#propane-deliver-now\").is(\":checked\") && hasWillCall);\r\n\r\n self.propaneAutoPayRequired =\r\n ppPricePlan?.MarketingAttributes.some(function (a) {\r\n if (a.PricePlanAttributeName === \"AutoPay Required\") {\r\n return a;\r\n }\r\n }) ?? false;\r\n }\r\n }\r\n\r\n const requireAutoPay = self.oilAutoPayRequired || self.propaneAutoPayRequired;\r\n\r\n const paymentOptions = self.args.paymentOptions\r\n .map(function (x) {\r\n x.isSelected = existingPayType && existingPayType === x.Key;\r\n return x;\r\n })\r\n .filter(function (x) {\r\n //Filter out these values if customer DOES NOT request delivery now - COD or Will Call Request Delivery Now\r\n if (hasRequestedPpCOD || hasRequestedHoCOD || hasNotSureTankSizeWillCall) {\r\n return ![\r\n cw.appEnum.PaymentProcessType.CustomerWillInitiatePayment,\r\n cw.appEnum.PaymentProcessType.AutomaticBankDraft,\r\n cw.appEnum.PaymentProcessType.AutomaticCreditCard,\r\n ].includes(x.EnumVal);\r\n }\r\n //filter out these if Will Call but NOT COD or Will Call Request Delivery Now\r\n if (hasWillCall) {\r\n return ![cw.appEnum.PaymentProcessType.COD].includes(x.EnumVal);\r\n }\r\n return true;\r\n });\r\n\r\n // Generate paymentHtml\r\n let paymentHtml = paymentOptions\r\n .map(function (x) {\r\n if ((requireAutoPay && x.Key !== \"CHK\") || !requireAutoPay) {\r\n return `<option value=\"${x.Key}\" ${x.isSelected ? \"selected\" : \"\"}>${x.Value}</option>`;\r\n }\r\n return \"\";\r\n })\r\n .join(\"\");\r\n\r\n // Set the '--Select--' option at the beginning\r\n paymentHtml = `${'<option value=\"\" selected>--Select--</option>'} ${paymentHtml}`;\r\n\r\n $paymentType.empty();\r\n $paymentType.append(paymentHtml);\r\n $paymentType.trigger(\"change\");\r\n };\r\n\r\n const hoDeliveryChangeFunc = function (delSchVal) {\r\n switch (delSchVal) {\r\n case \"W\":\r\n $hoDeliverNowWrapper.removeClass(\"hidden\");\r\n $hoScheduleMonthsWrapper.addClass(\"hidden\");\r\n break;\r\n case \"S\":\r\n $hoScheduleMonthsWrapper.removeClass(\"hidden\");\r\n $hoDeliverNowWrapper.addClass(\"hidden\");\r\n break;\r\n default:\r\n $hoDeliverNowWrapper.addClass(\"hidden\");\r\n $hoScheduleMonthsWrapper.addClass(\"hidden\");\r\n }\r\n\r\n refreshPaymentOptions(self.getCurrentHeatingOilPricePlan());\r\n };\r\n\r\n $hoDeliverySchedule.on(\"change\", function (e) {\r\n const $this = $(this);\r\n hoDeliveryChangeFunc($this.val());\r\n });\r\n hoDeliveryChangeFunc($hoDeliverySchedule.val());\r\n\r\n const propaneDeliveryChangeFunc = function (pDeliverySch) {\r\n //handle delivery schedule\r\n switch (pDeliverySch) {\r\n case \"W\":\r\n $pDeliverNowWrapper.removeClass(\"hidden\");\r\n $pScheduleMonthsWrapper.addClass(\"hidden\");\r\n break;\r\n case \"S\":\r\n $pScheduleMonthsWrapper.removeClass(\"hidden\");\r\n $pDeliverNowWrapper.addClass(\"hidden\");\r\n break;\r\n default:\r\n $pDeliverNowWrapper.addClass(\"hidden\");\r\n $pScheduleMonthsWrapper.addClass(\"hidden\");\r\n }\r\n\r\n refreshPaymentOptions();\r\n refreshFillUpOptions();\r\n };\r\n\r\n const hasPropanePreBuy = self.args.Application.DeliveryPoints[0].PropaneProducts.some(function (x) {\r\n return x.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n });\r\n const hasOilPreBuy = self.args.Application.DeliveryPoints[0].HeatingOilProducts.some(function (x) {\r\n return x.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n });\r\n\r\n if (hasPropanePreBuy) {\r\n $pPreBuyGallonWrapper.removeClass(\"hidden\");\r\n } else {\r\n $pPreBuyGallonWrapper.addClass(\"hidden\");\r\n }\r\n\r\n if (hasOilPreBuy) {\r\n $hoPreBuyGallonWrapper.removeClass(\"hidden\");\r\n } else {\r\n $hoPreBuyGallonWrapper.addClass(\"hidden\");\r\n }\r\n\r\n $PpTankFill.on(\"change\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const isChecked = $this.is(\":checked\");\r\n $pDeliveryGallons.removeClass(\"hidden\");\r\n if (isChecked) {\r\n $pDeliveryGallons.addClass(\"hidden\");\r\n } else {\r\n //reset gallons\r\n $pDeliveryGallons.val(\"\");\r\n }\r\n refreshFillUpOptions();\r\n self.recalcChargeNowPrice();\r\n });\r\n\r\n const pPWarningFunc = function (gallons) {\r\n const tankSize = parseInt($pTankSize.val());\r\n let hasWarning = false;\r\n\r\n $ppMinGalWarningWrapper.addClass(\"hidden\");\r\n self.$acctConfigActivePnlFwdBtn.addClass(\"disabled\");\r\n $pTankSizeToSmallWarningWrapper.addClass(\"hidden\");\r\n\r\n if (\r\n $.isNumeric(gallons) &&\r\n parseInt(gallons) < self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonPropane\r\n ) {\r\n $ppMinGalWarningWrapper.removeClass(\"hidden\");\r\n hasWarning = true;\r\n }\r\n\r\n if (\r\n $.isNumeric(gallons) &&\r\n $pDeliverNow.is(\":checked\") &&\r\n tankSize > TANKSIZE_NOTSURE &&\r\n parseInt(gallons) > parseInt(tankSize) //Does not have \"Not Sure\" selected and gallons is greater than tank size\r\n ) {\r\n $pTankSizeToSmallWarningWrapper.removeClass(\"hidden\");\r\n hasWarning = true;\r\n }\r\n\r\n if (hasWarning) {\r\n self.$acctConfigActivePnlFwdBtn.addClass(\"disabled\");\r\n } else {\r\n self.$acctConfigActivePnlFwdBtn.removeClass(\"disabled\");\r\n }\r\n\r\n return hasWarning;\r\n };\r\n\r\n const refreshFillUpOptions = function () {\r\n const isChecked = $PpTankFill.is(\":checked\");\r\n const $appendTank = self.$wrapperEl.find(\".append-tank-info\");\r\n const $disclaimer = self.$wrapperEl.find(\".fill-up-disclaimer\");\r\n const tankSize = self.$wrapperEl.find(\".propane-tank-size\").val();\r\n const tankDefault = self.args.tankSizeDefault.find(\r\n (x) => x.ProductId == cw.appEnum.ProductCode.Propane && x.TankSize === parseInt(tankSize)\r\n );\r\n\r\n $disclaimer.addClass(\"hidden\");\r\n if (\r\n isChecked &&\r\n $(\"#propane-deliver-now:checked\").length > 0 &&\r\n !$(\"#propane-deliver-now\").hasClass(\"hidden\")\r\n ) {\r\n $appendTank.html(\r\n `<span> <small>(${\r\n tankDefault\r\n ? `${tankDefault.UsableSize} usable gallons from ${tankSize} tank size)`\r\n : `please select a tank size)`\r\n } </small></span>`\r\n );\r\n $disclaimer.removeClass(\"hidden\");\r\n } else if (!isChecked && $appendTank.length > 0) {\r\n $appendTank.html(\"\");\r\n }\r\n pPWarningFunc(isChecked ? parseInt(tankSize) : parseInt($pDeliveryGallons.val()));\r\n };\r\n\r\n $pDeliveryGallons.on(\"change keyup\", function (e) {\r\n const gallons = parseInt($(this).val());\r\n const hasWarning = pPWarningFunc(gallons);\r\n\r\n if (!hasWarning && gallons > 0) {\r\n self.recalcChargeNowPrice();\r\n }\r\n });\r\n\r\n $pDeliverySchedule.on(\"change\", function (e) {\r\n const $this = $(this);\r\n propaneDeliveryChangeFunc($this.val());\r\n });\r\n\r\n propaneDeliveryChangeFunc($pDeliverySchedule.val());\r\n\r\n const setPpOrderNowState = function () {\r\n const $fillTankWrapper = $(\".fill-tank-wrapper\");\r\n const $priceWrapper = $(\".propane-gallons-price-wrapper\");\r\n const tankSize = $.isNumeric(parseInt($pTankSize.val())) ? parseInt($pTankSize.val()) : 0;\r\n const placeholderText = $pDeliveryGallons.attr(\"placeholder\");\r\n $pDeliveryGallons.val($pDeliveryGallons.val() ?? \"\");\r\n\r\n $pDeliveryInputWrapper.addClass(\"hidden\");\r\n const pp = self.getCurrentPropanePricePlan();\r\n if (pp?.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice) {\r\n $pDeliverNow.prop(\"disabled\", true);\r\n $pDeliverNow.prop(\"checked\", true);\r\n }\r\n\r\n if ($pDeliverNow.is(\":checked\")) {\r\n $pDeliveryInputWrapper.removeClass(\"hidden\");\r\n $pDeliveryGallons.removeClass(\"hidden\");\r\n\r\n if ($PpTankFill.is(\":checked\")) {\r\n $pDeliveryGallons.val(tankSize ?? 0);\r\n $pDeliveryFee.html(\"$\" + (self.args.defaultDeliveryNowDeliveryFeePp ?? 0).formatMoney(2));\r\n $pDeliveryGallons.addClass(\"hidden\");\r\n }\r\n\r\n $fillTankWrapper.removeClass(\"hidden\");\r\n $priceWrapper.removeClass(\"hidden\");\r\n if (tankSize === TANKSIZE_NOTSURE) {\r\n //Unknown Tanks Size - hide fill up option\r\n $fillTankWrapper.addClass(\"hidden\");\r\n $priceWrapper.addClass(\"hidden\");\r\n\r\n $PpTankFill.prop(\"checked\", false);\r\n $pDeliveryGallons.val(\"\");\r\n $pDeliveryGallons.removeClass(\"hidden\");\r\n }\r\n }\r\n\r\n $pDeliveryGallons.attr(\"placeholder\", placeholderText);\r\n refreshPaymentOptions();\r\n refreshFillUpOptions();\r\n pPWarningFunc(tankSize);\r\n };\r\n\r\n $pDeliverNow.on(\"change\", function (e) {\r\n const $this = $(this);\r\n setPpOrderNowState($this);\r\n });\r\n\r\n if ($pDeliverNow.length > 0) {\r\n setPpOrderNowState($pDeliverNow);\r\n }\r\n\r\n $pTankSize.on(\"change\", function (e) {\r\n setPpOrderNowState();\r\n });\r\n\r\n $hoDeliverNow.on(\"change\", function (e) {\r\n const $this = $(this);\r\n if ($this.is(\":checked\")) {\r\n $hoDeliverNowGalWrapper.removeClass(\"hidden\");\r\n } else {\r\n $hoDeliverNowGalWrapper.addClass(\"hidden\");\r\n }\r\n });\r\n\r\n $paymentType.on(\"change\", function (e) {\r\n const $this = $(this);\r\n const val = $this.val();\r\n self.saveFullApplication(function () {\r\n //don't unhide the disclaimer unless payment type is selected and credit check is required\r\n if (self.requiresCreditCheck.IsRequired && val) {\r\n $(\".credit-check-disclaimer\").removeClass(\"hidden\");\r\n $(\".credit-check-lock\").removeClass(\"hidden\");\r\n } else {\r\n $(\".credit-check-disclaimer\").addClass(\"hidden\");\r\n $(\".credit-check-lock\").addClass(\"hidden\");\r\n $(\".btn-payment-process-next\").removeClass(\"hidden\");\r\n $hoDeliverNow.attr(\"checked\", \"checked\");\r\n $hoDeliverNowGalWrapper.removeClass(\"hidden\");\r\n }\r\n });\r\n\r\n switch (val) {\r\n case \"COD\":\r\n case \"CC\":\r\n if (self.$wrapperEl.find(\".remove-credit-card\").length < 1) {\r\n $ccConfigFormWrapper.removeClass(\"hidden\");\r\n }\r\n\r\n $eftConfigFormWrapper.addClass(\"hidden\");\r\n break;\r\n\r\n case \"EFT\":\r\n $ccConfigFormWrapper.addClass(\"hidden\");\r\n $eftConfigFormWrapper.removeClass(\"hidden\");\r\n break;\r\n default:\r\n $ccConfigFormWrapper.addClass(\"hidden\");\r\n $eftConfigFormWrapper.addClass(\"hidden\");\r\n break;\r\n }\r\n });\r\n\r\n self.$wrapperEl.find(\".btn-back\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n\r\n if (typeof self.args.isExpressCheckout !== \"undefined\" && self.args.isExpressCheckout) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationStep1.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n {\r\n ZipCode: \"\",\r\n PromoCode: self.args.Application?.PromoCode ? self.args.Application.PromoCode : \"\",\r\n isSmallBusiness:\r\n self.args.Application &&\r\n self.args.Application.CustomerClassification === cw.appEnum.CustomerClass.SmallBusiness,\r\n },\r\n function (renderedHtml) {\r\n self.$wrapperEl.parent().find(\".side-bar-container\").remove();\r\n self.setPageHeader(\"Find a Better Energy Plan\");\r\n const classes = self.$wrapperEl.attr(\"class\").split(/\\s+/);\r\n const newClasses = [];\r\n $.each(classes, function (idx, item) {\r\n if (!(item.startsWith(\"col-\") && !item.endsWith(\"-12\"))) {\r\n newClasses.push(item);\r\n }\r\n });\r\n\r\n if (!newClasses.includes(\"col-xs-12\")) {\r\n newClasses.push(\"col-xs-12\");\r\n }\r\n\r\n self.$wrapperEl.attr(\"class\", newClasses.join(\" \"));\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n\r\n let newArgs = {};\r\n $.extend(newArgs, self.args);\r\n self.bindStep1();\r\n }\r\n );\r\n } else {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPropaneSubclassConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n templateArgs.propaneSubclassSelector = renderedHtml;\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPlanSelection.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Select Energy Plan\");\r\n\r\n self.$wrapperEl.parent().find(\".side-bar-container\").remove();\r\n\r\n const classes = self.$wrapperEl.attr(\"class\").split(/\\s+/);\r\n const newClasses = [];\r\n $.each(classes, function (idx, item) {\r\n if (!(item.startsWith(\"col-\") && !item.endsWith(\"-12\"))) {\r\n newClasses.push(item);\r\n }\r\n });\r\n\r\n if (!newClasses.includes(\"col-xs-12\")) {\r\n newClasses.push(\"col-xs-12\");\r\n }\r\n\r\n self.$wrapperEl.attr(\"class\", newClasses.join(\" \"));\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n self.bindPlanSelection();\r\n }\r\n );\r\n }\r\n );\r\n }\r\n });\r\n\r\n self.$wrapperEl.find(\".utility-bill-sample\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const imgUrl = $this.data(\"utilityBillSampleImageUrl\");\r\n if (imgUrl) {\r\n cw.modal.Open({\r\n title: $this.data(\"utilityName\") + \" Sample Image\",\r\n modalBody: $('<div class=\"text-center\"><img src=\"' + imgUrl + '\"></div>'),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n });\r\n }\r\n });\r\n\r\n $delAddress1.on(\"change\", function () {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billAddress1.val($(this).val());\r\n $billZip.val($delZip.val());\r\n }\r\n });\r\n $delAddress2.on(\"change\", function () {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billAddress2.val($(this).val());\r\n }\r\n });\r\n $delCity.on(\"change\", function () {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billCity.val($(this).val());\r\n }\r\n });\r\n $delState.on(\"change\", function () {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billState.val($(this).val());\r\n }\r\n });\r\n $delZip.on(\"change\", function () {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billZip.val($(this).val());\r\n }\r\n });\r\n\r\n $billingSameAddress.on(\"click\", function (e) {\r\n if ($billingSameAddress.is(\":checked\")) {\r\n $billAddress1.val(self.args.Application.DeliveryPoints[0].AddressLine1);\r\n $billAddress2.val(self.args.Application.DeliveryPoints[0].AddressLine2);\r\n $billCity.val(self.args.Application.DeliveryPoints[0].City);\r\n $billState.val(self.args.Application.DeliveryPoints[0].State);\r\n $billZip.val(self.args.Application.DeliveryPoints[0].Zip);\r\n\r\n inputChangeFunc();\r\n $(\".service-address-group h5\").addClass(\"hidden\");\r\n $(\".billing-address-group\").addClass(\"hidden\");\r\n } else {\r\n $billAddress1.val(\"\");\r\n $billAddress2.val(\"\");\r\n $billCity.val(\"\");\r\n $billZip.val(\"\");\r\n inputChangeFunc();\r\n $(\".service-address-group h5\").removeClass(\"hidden\");\r\n $(\".billing-address-group\").removeClass(\"hidden\");\r\n\r\n self.acctConfigJumpPanel(self.$wrapperEl.find(\".addr-panel\"));\r\n }\r\n });\r\n\r\n $useSrvAsBillAddr.on(\"click\", function (e) {\r\n e.preventDefault();\r\n\r\n $billAddress1.val(self.args.Application.DeliveryPoints[0].AddressLine1);\r\n $billAddress2.val(self.args.Application.DeliveryPoints[0].AddressLine2);\r\n $billCity.val(self.args.Application.DeliveryPoints[0].City);\r\n $billState.val(self.args.Application.DeliveryPoints[0].State);\r\n $billZip.val(self.args.Application.DeliveryPoints[0].Zip);\r\n inputChangeFunc();\r\n });\r\n\r\n self.$wrapperEl.off(\"click\", \".remove-credit-card\");\r\n self.$wrapperEl.on(\"click\", \".remove-credit-card\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n var pProfileId = $this.data(\"paymentProfileId\");\r\n if (pProfileId) {\r\n cw.modal.Open({\r\n title: \"Remove Credit Card?\",\r\n modalBody: $(\"<p>Are you sure you would like to remove this credit card?</p>\"),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white\",\r\n autospin: false,\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-trash\"></i> Yes Remove',\r\n cssClass: \"btn-danger\",\r\n autospin: false,\r\n action: function (dialogRef) {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/remove-configured-credit-card/\" + pProfileId,\r\n self.args.Application.ApplicationId,\r\n function (removeResp) {\r\n self.args.Application.hasCcConfigured = false;\r\n self.args.Application.CreditCardLast4 = null;\r\n self.args.Application.CreditCardExpiration = null;\r\n self.args.Application.AuthNetPaymentProfileId = null;\r\n\r\n self.$wrapperEl.find(\"#credit-card-number\").val(\"\");\r\n self.$wrapperEl.find(\"#credit-card-cardholder-name\").val(\"\");\r\n self.$wrapperEl.find(\"#cc-exp-month\").val(\"\");\r\n self.$wrapperEl.find(\"#cc-exp-year\").val(\"\");\r\n self.$wrapperEl.find(\"#credit-card-billing-zip\").val(\"\");\r\n\r\n self.$wrapperEl.find(\".credit-card-configure-form\").removeClass(\"hidden\");\r\n self.$wrapperEl.find(\".credit-card-item\").empty();\r\n $this.closest(\".panel\").find(\".step-done\").removeClass(\"completed\");\r\n\r\n dialogRef.close();\r\n }\r\n );\r\n },\r\n },\r\n ],\r\n });\r\n }\r\n });\r\n\r\n $sideBarWrapperElParent.off(\"click\", \".add-product\");\r\n $sideBarWrapperElParent.on(\"click\", \".add-product\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n var productCode = $this.data(\"productCode\");\r\n\r\n self.acctConfigExpressAddToCart(productCode);\r\n });\r\n const hoWarningFunc = function (gallons) {\r\n if (\r\n $.isNumeric(gallons) &&\r\n parseInt(gallons) < self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonHeatingOil\r\n ) {\r\n $hoMinGalWarningWrapper.removeClass(\"hidden\");\r\n self.$acctConfigActivePnlFwdBtn.addClass(\"disabled\");\r\n } else {\r\n $hoMinGalWarningWrapper.addClass(\"hidden\");\r\n self.$acctConfigActivePnlFwdBtn.removeClass(\"disabled\");\r\n }\r\n\r\n if (\r\n $.isNumeric(gallons) &&\r\n $.isNumeric($hoTankSize.val()) &&\r\n parseInt(gallons) > parseInt($hoTankSize.val())\r\n ) {\r\n $hoTankSizeToSmallWarningWrapper.removeClass(\"hidden\");\r\n } else {\r\n $hoTankSizeToSmallWarningWrapper.addClass(\"hidden\");\r\n }\r\n };\r\n\r\n hoWarningFunc($hoDeliveryGallons.val());\r\n pPWarningFunc($pDeliveryGallons.val());\r\n\r\n $hoDeliveryGallons.on(\"change keyup\", function (e) {\r\n const $this = $(this);\r\n var gallons = $this.val();\r\n hoWarningFunc(gallons);\r\n });\r\n\r\n self.$wrapperEl.on(\"click\", \".panel-jump\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n var pnlClass = $this.data(\"jumpToPanel\");\r\n var $el = $(\".\" + pnlClass);\r\n cw.utility.focusElement($el, self.getCwOffset());\r\n self.acctConfigJumpPanel($el);\r\n });\r\n\r\n self.$wrapperEl.on(\"click\", \".bc-jump-panel\", function (e) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n var pnlClass = $this.data(\"panel\");\r\n var $el = self.$wrapperEl\r\n .find(\".\" + pnlClass + \".req\")\r\n .first()\r\n .find(\".panel-body\");\r\n cw.utility.focusElement($el, self.getCwOffset());\r\n self.acctConfigJumpPanel($el);\r\n });\r\n\r\n self.recalcChargeNowPrice(false);\r\n\r\n const inputChangeFunc = function (e) {\r\n self.acctConfigInputUpdateFunc(false, false);\r\n };\r\n\r\n self.$wrapperEl\r\n .find(\".renewal-contact-confirmation\")\r\n .on(\"change keyup\", \"input,select,textarea\", inputChangeFunc);\r\n\r\n self.$wrapperEl\r\n .find(\".cw-application-acct-config\")\r\n .on(\"change keyup\", \"input,select,textarea\", inputChangeFunc);\r\n $birthDate.on(\"dp.change\", inputChangeFunc);\r\n\r\n var $emailHidden = $(\"#email-hide\");\r\n var $textHidden = $(\"#text-hide\");\r\n var $creditReportHide = $(\"#credit-report-hide\");\r\n\r\n $(\"#send-text\").on(\"input\", function () {\r\n var isChecked = $sendText.is(\":checked\");\r\n $textSpecialOffersWc.prop(\"checked\", isChecked);\r\n $textSpecialOffers.prop(\"checked\", isChecked);\r\n\r\n inputChangeFunc();\r\n });\r\n\r\n $(\"#text-communication\").on(\"click\", function (e) {\r\n $textHidden.slideToggle(\"slow\");\r\n e.preventDefault();\r\n });\r\n\r\n $(\"#report-information\").on(\"click\", function (e) {\r\n $creditReportHide.slideToggle(\"slow\");\r\n e.preventDefault();\r\n });\r\n\r\n $(\"#send-email\").on(\"input\", function () {\r\n var isChecked = $sendEmail.is(\":checked\");\r\n $specialOffers.prop(\"checked\", isChecked);\r\n $futurePriceOptions.prop(\"checked\", isChecked);\r\n inputChangeFunc();\r\n });\r\n\r\n $(\"#credit-report\").on(\"input\", function () {\r\n var $errPnl = self.$wrapperEl.find(\".pnl-err\").has(\".alert .alert-warning .alert-dismissible\");\r\n if ($creditReport.is(\":checked\") && $errPnl.length < 1) {\r\n self.$wrapperEl.find(\".btn-payment-process-next\").removeClass(\"hidden\");\r\n } else {\r\n self.$wrapperEl.find(\".btn-payment-process-next\").addClass(\"hidden\");\r\n }\r\n });\r\n\r\n $(\"#email-communication\").on(\"click\", function (e) {\r\n $emailHidden.slideToggle(\"slow\");\r\n e.preventDefault();\r\n });\r\n\r\n // for acctConfig init, run through validation and fast forward to step that needs attention\r\n\r\n self.acctConfigInitValidation(self.$wrapperEl.find(\".contact-panel\").closest(\".panel\"));\r\n\r\n analytics.checkoutEvent({ Step: 1, Option: \"Load Page\" });\r\n analytics.checkoutEvent({ Step: 1, Option: `Source: ${self.args.AppSource}` });\r\n if (\r\n self.args.isExpressCheckout &&\r\n ([cw.appEnum.ProductCode.HeatingOil, cw.appEnum.ProductCode.Propane].includes(\r\n self.args.expressProductCode\r\n ) ||\r\n self.args.expressProductCode === cw.appEnum.ProductCode.ServiceProduct ||\r\n ([cw.appEnum.ProductCode.NaturalGas, cw.appEnum.ProductCode.Electricity].includes(\r\n self.args.expressProductCode\r\n ) &&\r\n !self.args.expressPricePlanId))\r\n ) {\r\n self.acctConfigExpressAddToCart(self.args.expressProductCode);\r\n }\r\n\r\n $btnRewind.off(\"click\");\r\n $btnRewind.on(\"click\", function (e) {\r\n e.preventDefault();\r\n cw.loadingIndicator.start();\r\n let $baseUrl = sessionStorage.getItem(\"baseUrl\");\r\n window.history.pushState({ path: $baseUrl }, \"\", $baseUrl);\r\n $(\".cw-application-acct-config, .cart-sidebar-wrapper\").css({ opacity: 0.25 });\r\n sessionStorage.removeItem(\"cartSpecialOffers\"); //special offers vue comp sets this\r\n cw.webservices.getJson(\r\n `CustomerApplication/reset-application/${self.args.Application.ApplicationId}`,\r\n null,\r\n function () {\r\n location.reload();\r\n }\r\n );\r\n });\r\n\r\n if (self.eligibleForWorryFreeRenewal()) {\r\n self.bindWorryFreeRenewalComponent();\r\n }\r\n\r\n inputChangeFunc();\r\n },\r\n eligibleForWorryFreeRenewal: function () {\r\n const self = this;\r\n const myNgPrice = self.args.prices.NatGasPrices.find(\r\n (x) =>\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0]?.PriceSheetLineId\r\n );\r\n const myElPrice = self.args.prices.ElectricityPrices.find(\r\n (x) =>\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0]?.PriceSheetLineId\r\n );\r\n return (\r\n (myElPrice && self.offerWorriedFreeRenewalOption.includes(myElPrice.WorryFreeRenewalOption)) ||\r\n (myNgPrice && self.offerWorriedFreeRenewalOption.includes(myNgPrice.WorryFreeRenewalOption))\r\n );\r\n },\r\n bindWorryFreeRenewalComponent: function () {\r\n const self = this;\r\n const elProduct = self.args.Application.DeliveryPoints[0].ElectricProducts ?? [];\r\n const ngProduct = self.args.Application.DeliveryPoints[0].NatGasProducts ?? [];\r\n const hasElectricProduct = elProduct.length > 0;\r\n const hasNatGasProduct = ngProduct.length > 0;\r\n const myNgPrice = self.args.prices.NatGasPrices.find(\r\n (x) =>\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0]?.PriceSheetLineId\r\n );\r\n const myElPrice = self.args.prices.ElectricityPrices.find(\r\n (x) =>\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0]?.PriceSheetLineId\r\n );\r\n\r\n if (hasElectricProduct) {\r\n self.mountWorryFreeRenewal(\r\n self.elWorryFreeOptionComponent,\r\n \".el-fixed-renewal-mount\",\r\n elProduct[0],\r\n myElPrice\r\n );\r\n }\r\n if (hasNatGasProduct) {\r\n self.mountWorryFreeRenewal(\r\n self.ngWorryFreeOptionComponent,\r\n \".ng-fixed-renewal-mount\",\r\n ngProduct[0],\r\n myNgPrice\r\n );\r\n }\r\n },\r\n mountWorryFreeRenewal: function (component, mountPoint, selectedProduct, pricePlan) {\r\n if (component && component !== undefined) {\r\n component.unmount();\r\n }\r\n\r\n const product = { ...selectedProduct };\r\n\r\n import(\"@components/application/enrollment/widgets/WorryFreeRenewalOption.vue\").then(\r\n (worryFreeComponent) => {\r\n component = createNonRoutedApp(worryFreeComponent.default, {\r\n worryFreeChecked: product.FixedRenewal,\r\n pricePlan: pricePlan,\r\n onOptionChecked: (val) => {\r\n console.log(\"onOptionChecked\", val);\r\n selectedProduct.FixedRenewal = val;\r\n },\r\n });\r\n component.mount(mountPoint);\r\n }\r\n );\r\n },\r\n getCurrentPropanePricePlan: function () {\r\n var self = this;\r\n if (!self.args.Application.DeliveryPoints[0]?.PropaneProducts[0]) {\r\n return null;\r\n }\r\n\r\n return self.getPriceByPricePlanPriceSheetLine({\r\n productPricePlans: self.getPricesByProductCode(cw.appEnum.ProductCode.Propane),\r\n pricePlanCode: self.args.Application.DeliveryPoints[0].PropaneProducts[0].PricingPlanId,\r\n pricePlanSheetLineId: self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId,\r\n });\r\n },\r\n getCurrentHeatingOilPricePlan: function () {\r\n var self = this;\r\n\r\n if (!self.args.Application.DeliveryPoints[0]?.HeatingOilProducts[0]) {\r\n return null;\r\n }\r\n\r\n return self.getPriceByPricePlanPriceSheetLine({\r\n productPricePlans: self.getPricesByProductCode(cw.appEnum.ProductCode.HeatingOil),\r\n pricePlanCode: self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PricingPlanId,\r\n pricePlanSheetLineId:\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId,\r\n });\r\n },\r\n acctConfigJumpPanel: function ($pnlInner) {\r\n const self = cw.pages.application;\r\n\r\n self.$wrapperEl.find(\".panel.req:not(.hidden)\").addClass(\"hidden\");\r\n $pnlInner.closest(\".panel\").removeClass(\"hidden\");\r\n\r\n var cartStepObj;\r\n if ($pnlInner.hasClass(\"contact-panel\")) {\r\n cartStepObj = { step: 1 };\r\n } else if ($pnlInner.hasClass(\"addr-panel\") && $pnlInner.find(\"#billingSame\").is(\":checked\")) {\r\n cartStepObj = { step: 2 };\r\n } else if ($pnlInner.hasClass(\"addr-panel\") && !$pnlInner.find(\"#billingSame\").is(\":checked\")) {\r\n cartStepObj = { step: 3 };\r\n } else if ($pnlInner.hasClass(\"el-panel\")) {\r\n cartStepObj = { step: 4, option: \"Electricity Config\" };\r\n } else if ($pnlInner.hasClass(\"ng-panel\")) {\r\n cartStepObj = { step: 4, option: \"Natural Gas Config\" };\r\n } else if ($pnlInner.hasClass(\"ho-panel\")) {\r\n cartStepObj = { step: 4, option: \"Heating Oil Config\" };\r\n } else if ($pnlInner.hasClass(\"propane-panel\")) {\r\n cartStepObj = { step: 4, option: \"Propane Config\" };\r\n } else if ($pnlInner.hasClass(\"payment-panel\")) {\r\n cartStepObj = { step: 5, option: \"Payment Config\" };\r\n } else if ($pnlInner.hasClass(\"confirmation-panel\")) {\r\n cartStepObj = { step: 6, option: \"Confirmation\" };\r\n }\r\n\r\n if (cartStepObj) {\r\n analytics.checkoutEvent({ Step: cartStepObj.step, Option: cartStepObj.Option });\r\n }\r\n\r\n self.$acctConfigActivePnlFwdBtn = $pnlInner.find(\".btn-panel-forward\");\r\n self.acctConfigInputUpdateFunc(false, false);\r\n self.setAccountCfgBreadCrumbs();\r\n },\r\n setLifetimeValues: function () {\r\n const self = this;\r\n var myPrice = null;\r\n var attr;\r\n if (\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.HeatingOilPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n var ho = self.args.Application.DeliveryPoints[0].HeatingOilProducts[0];\r\n try {\r\n switch (ho.PricingTypeCode) {\r\n case cw.appEnum.PricingTypeCode.PreBuy:\r\n ho.LifeTimeValue = ho.Price * ho.PreBuyGallons;\r\n break;\r\n case cw.appEnum.PricingTypeCode.WillCallCashPrice:\r\n ho.LifeTimeValue = ho.Price * ho.DeliveryGallons;\r\n break;\r\n default:\r\n attr = myPrice.MarketingAttributes.filterSingle(function (a) {\r\n if (a.PricePlanAttributeId === self.LIFETIME_VALUE_ATTRIBUTE_ID) {\r\n return a;\r\n }\r\n });\r\n if (attr && attr.AttributeValue) {\r\n ho.LifeTimeValue = attr.AttributeValue;\r\n } else {\r\n ho.LifeTimeValue = ho.Price;\r\n }\r\n break;\r\n }\r\n } catch (error) {\r\n ho.LifeTimeValue = ho.Price;\r\n }\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].LifeTimeValue = ho.LifeTimeValue;\r\n }\r\n }\r\n myPrice = null;\r\n attr = null;\r\n if (\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.PropanePrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n var lp = self.args.Application.DeliveryPoints[0].PropaneProducts[0];\r\n try {\r\n switch (lp.PricingTypeCode) {\r\n case cw.appEnum.PricingTypeCode.PreBuy:\r\n lp.LifeTimeValue = lp.Price * lp.PreBuyGallons;\r\n break;\r\n case cw.appEnum.PricingTypeCode.WillCallCashPrice:\r\n lp.LifeTimeValue = lp.Price * lp.DeliveryGallons;\r\n break;\r\n default:\r\n attr = myPrice.MarketingAttributes.filterSingle(function (a) {\r\n if (a.PricePlanAttributeId === self.LIFETIME_VALUE_ATTRIBUTE_ID) {\r\n return a;\r\n }\r\n });\r\n if (attr && attr.AttributeValue) {\r\n lp.LifeTimeValue = attr.AttributeValue;\r\n } else {\r\n lp.LifeTimeValue = lp.Price;\r\n }\r\n break;\r\n }\r\n } catch (error) {\r\n lp.LifeTimeValue = lp.Price;\r\n }\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].LifeTimeValue = lp.LifeTimeValue;\r\n }\r\n }\r\n myPrice = null;\r\n if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.ElectricityPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].LifeTimeValue =\r\n myPrice.LifeTimeValue;\r\n }\r\n }\r\n myPrice = null;\r\n if (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.NatGasPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].LifeTimeValue = myPrice.LifeTimeValue;\r\n }\r\n }\r\n },\r\n getAnalyticCheckoutRevenue: function () {\r\n const self = this;\r\n var revenue = 0.0;\r\n if (\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n var myPrice = self.args.prices.HeatingOilPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n revenue += self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].LifeTimeValue;\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.PropanePrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n revenue += self.args.Application.DeliveryPoints[0].PropaneProducts[0].LifeTimeValue;\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.ElectricityPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n revenue += self.args.Application.DeliveryPoints[0].ElectricProducts[0].LifeTimeValue;\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.NatGasPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n revenue += self.args.Application.DeliveryPoints[0].NatGasProducts[0].LifeTimeValue;\r\n }\r\n }\r\n\r\n if (self.args.Application.DeliveryPoints[0].ServiceContracts.length > 0) {\r\n for (var i = 0; i < self.args.Application.DeliveryPoints[0].ServiceContracts.length; i++) {\r\n var sc = self.args.Application.DeliveryPoints[0].ServiceContracts[i];\r\n revenue += sc.NormalPrice;\r\n }\r\n }\r\n return revenue;\r\n },\r\n getAnalyticCheckoutProducts: function () {\r\n const self = this;\r\n var analyticProducts = [];\r\n if (\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n var myPrice = self.args.prices.HeatingOilPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n analyticProducts.push({\r\n name: myPrice.PricingPlanDescription,\r\n id: self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PricingPlanId,\r\n list: self.args.AppSource,\r\n price:\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PreBuyGallons > 0 ||\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].DeliveryGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].Price\r\n : self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].LifeTimeValue,\r\n brand: \"Shipley\",\r\n category: \"Heating Oil\",\r\n //'variant': 'Gray',\r\n quantity:\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PreBuyGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PreBuyGallons\r\n : self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].DeliveryGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].DeliveryGallons\r\n : 1,\r\n });\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.PropanePrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n analyticProducts.push({\r\n name: myPrice.PricingPlanDescription,\r\n id: self.args.Application.DeliveryPoints[0].PropaneProducts[0].PricingPlanId,\r\n list: self.args.AppSource,\r\n price:\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PreBuyGallons > 0 ||\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].DeliveryGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts[0].Price\r\n : self.args.Application.DeliveryPoints[0].PropaneProducts[0].LifeTimeValue,\r\n brand: \"Shipley\",\r\n category: \"Propane\",\r\n //'variant': 'Gray',\r\n quantity:\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PreBuyGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts[0].PreBuyGallons\r\n : self.args.Application.DeliveryPoints[0].PropaneProducts[0].DeliveryGallons > 0\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts[0].DeliveryGallons\r\n : 1,\r\n });\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.ElectricityPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n analyticProducts.push({\r\n name: myPrice.PricingPlanDescription,\r\n id: self.args.Application.DeliveryPoints[0].ElectricProducts[0].PricingPlanId,\r\n list: self.args.AppSource,\r\n price: self.args.Application.DeliveryPoints[0].ElectricProducts[0].LifeTimeValue, //'price': '134.16',\r\n brand: self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode,\r\n category: \"Electricity\",\r\n //'variant': 'Gray',\r\n quantity: 1,\r\n });\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n myPrice = self.args.prices.NatGasPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n analyticProducts.push({\r\n name: myPrice.PricingPlanDescription,\r\n id: self.args.Application.DeliveryPoints[0].NatGasProducts[0].PricingPlanId,\r\n list: self.args.AppSource,\r\n price: self.args.Application.DeliveryPoints[0].NatGasProducts[0].LifeTimeValue, // 'price': '115.53',\r\n brand: self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode,\r\n category: \"Natural Gas\",\r\n //'variant': 'Gray',\r\n quantity: 1,\r\n });\r\n }\r\n }\r\n\r\n if (self.args.Application.DeliveryPoints[0].ServiceContracts.length > 0) {\r\n for (var i = 0; i < self.args.Application.DeliveryPoints[0].ServiceContracts.length; i++) {\r\n var sc = self.args.Application.DeliveryPoints[0].ServiceContracts[i];\r\n analyticProducts.push({\r\n name: sc.TextDescription,\r\n id: sc.ContractTemplateId,\r\n list: self.args.AppSource,\r\n price: sc.NormalPrice,\r\n brand: \"Shipley\",\r\n category: \"Service Contract\",\r\n //'variant': 'Gray',\r\n quantity: 1,\r\n });\r\n }\r\n }\r\n\r\n return analyticProducts;\r\n },\r\n acctConfigBtnForwardErrorFunc: function (e) {\r\n e.preventDefault();\r\n const self = cw.pages.application;\r\n var $stepErrPnl = self.$wrapperEl.find(\".err-panel\");\r\n cw.alert.ClearAlert($stepErrPnl);\r\n\r\n var pnlsWithErrors = [];\r\n self.$wrapperEl.find(\".panel:not(.hidden)\").each(function () {\r\n var $me = $(this);\r\n if ($me.find(\".accordion-header .step-done.completed\").length < 1) {\r\n var title = $me.find(\".header-text\").html();\r\n var $title = $(\"<div>\" + title + \"</div>\");\r\n $title.find(\"span\").remove();\r\n pnlsWithErrors.push($.trim($title.text()));\r\n }\r\n });\r\n\r\n cw.alert.Alert(\r\n {\r\n text:\r\n \"The <em><strong>\" +\r\n pnlsWithErrors.join(\",\") +\r\n \"</strong></em> section\" +\r\n (pnlsWithErrors.length > 1 ? \"s\" : \"\") +\r\n \" contain error(s). Please complete the application process before continuing.\",\r\n },\r\n $stepErrPnl\r\n );\r\n },\r\n acctConfigShowErrFunc: function (e) {\r\n e.preventDefault();\r\n cw.pages.application.acctConfigInputUpdateFunc(true, true);\r\n },\r\n acctConfigRealizeForm: function () {\r\n const self = cw.pages.application;\r\n\r\n var deliveryPoint = self.args.Application.DeliveryPoints[0];\r\n var $firstName = self.$wrapperEl.find(\".first-name\");\r\n var $lastName = self.$wrapperEl.find(\".last-name\");\r\n var $companyName = self.$wrapperEl.find(\".company-name\");\r\n\r\n var $birthDate = self.$wrapperEl.find(\".birth-date\");\r\n var $phone = self.$wrapperEl.find(\".phone\");\r\n var $email = self.$wrapperEl.find(\".email\");\r\n var $languagePreference = self.$wrapperEl.find(\".language-preference\");\r\n var $specialOffers = self.$wrapperEl.find(\".special-offers\");\r\n var $specialOffersText = self.$wrapperEl.find(\".special-offers-text\");\r\n var $specialOffersTextWC = self.$wrapperEl.find(\".special-offers-text-wc\");\r\n var $futurePriceOptions = self.$wrapperEl.find(\".future-price-options\");\r\n var $delAddress1 = self.$wrapperEl.find(\".del-address1\");\r\n var $delAddress2 = self.$wrapperEl.find(\".del-address2\");\r\n var $delCity = self.$wrapperEl.find(\".del-city\");\r\n var $delState = self.$wrapperEl.find(\".del-state\");\r\n var $delZip = self.$wrapperEl.find(\".del-zip\");\r\n var $delInstructions = self.$wrapperEl.find(\".del-special-instructions\");\r\n\r\n var $billingSameAddress = self.$wrapperEl.find(\"#billingSame\");\r\n var $useSrvAsBillAddr = self.$wrapperEl.find(\".use-srv-addr-as-bill\");\r\n var $billAddress1 = self.$wrapperEl.find(\".billing-address1\");\r\n var $billAddress2 = self.$wrapperEl.find(\".billing-address2\");\r\n var $billCity = self.$wrapperEl.find(\".billing-city\");\r\n var $billState = self.$wrapperEl.find(\".billing-state\");\r\n var $billZip = self.$wrapperEl.find(\".billing-zip\");\r\n\r\n var $elLdcAcct = self.$wrapperEl.find(\".electric-ldc-account\");\r\n var $elBudget = self.$wrapperEl.find(\"input[name=el-on-budget]\");\r\n var $elMeterNumber = self.$wrapperEl.find(\".electric-meter-number\");\r\n var $elFixedRenewalWrapper = self.$wrapperEl.find(\".elec-fixed-renewal-wrapper\");\r\n var $elFixedRenewal = self.$wrapperEl.find(\"input[name=elec-fixed-renewal]:checked\");\r\n\r\n var $ngLdcAcct = self.$wrapperEl.find(\".natgas-ldc-account\");\r\n var $ngBudget = self.$wrapperEl.find(\"input[name=ng-on-budget]\");\r\n var $ngMeterNumber = self.$wrapperEl.find(\".natgas-meter-number\");\r\n var $ngFixedRenewalWrapper = self.$wrapperEl.find(\".ng-fixed-renewal-wrapper\");\r\n var $ngFixedRenewal = self.$wrapperEl.find(\"input[name=ng-fixed-renewal]:checked\");\r\n\r\n var $hoFillLoc = self.$wrapperEl.find(\"input[name=tankfilllocation]\");\r\n var $hoTankLoc = self.$wrapperEl.find(\".ho-tank-location\");\r\n var $hoTankSize = self.$wrapperEl.find(\".ho-tank-size\");\r\n var $hoTankLevel = self.$wrapperEl.find(\".ho-tank-level\");\r\n var $hoAnnualUsage = self.$wrapperEl.find(\".ho-annual-usage\");\r\n var $hoHotWater = self.$wrapperEl.find(\"input[name=ho-hot-water]\");\r\n var $hoDeliverySchedule = self.$wrapperEl.find(\".ho-delivery-schedule\");\r\n var $hoDeliverNow = self.$wrapperEl.find(\"#ho-deliver-now\");\r\n var $hoDeliveryGallons = self.$wrapperEl.find(\".ho-delivery-gallons\");\r\n var $hoDeliverNowWrapper = self.$wrapperEl.find(\".ho-delivery-now-wrapper\");\r\n var $hoScheduleMonthsWrapper = self.$wrapperEl.find(\".ho-delivery-schedule-months\");\r\n var $hoDeliverNowGalWrapper = self.$wrapperEl.find(\".ho-deliver-now-gallons-req\");\r\n var $hoMinGalWarningWrapper = self.$wrapperEl.find(\".ho-min-delivery-warning\");\r\n var $hoTankSizeToSmallWarningWrapper = self.$wrapperEl.find(\r\n \".ho-tank-size-too-small-delivery-warning\"\r\n );\r\n var $hoPreBuyWrapper = self.$wrapperEl.find(\".ho-pre-buy-wrapper\");\r\n\r\n var $pTankFillLoc = self.$wrapperEl.find(\"input[name=pTankfilllocation]\");\r\n var $pTankPlacement = self.$wrapperEl.find(\".propane-tank-placement\");\r\n var $pTankSize = self.$wrapperEl.find(\".propane-tank-size\");\r\n var $pTankLevel = self.$wrapperEl.find(\".propane-tank-level\");\r\n var $pOtherHeatingSrc = self.$wrapperEl.find(\"input[name=propane-other-heating-source]\");\r\n var $pDeliverySchedule = self.$wrapperEl.find(\".propane-delivery-schedule\");\r\n var $pDeliverNow = self.$wrapperEl.find(\"#propane-deliver-now\");\r\n\r\n var pIsFillup = self.$wrapperEl.find(\"input[name=select-gallon-amount]\").is(\":checked\");\r\n var $pDeliveryGallonInput = self.$wrapperEl.find(\"input[name=propane-delivery-gallons]\");\r\n var $poPreBuyWrapper = self.$wrapperEl.find(\".po-pre-buy-wrapper\");\r\n\r\n var $paymentSelectWrapper = self.$wrapperEl.find(\".payment-select-wrapper\");\r\n var $noPaymentNeededWrapper = self.$wrapperEl.find(\".no-payment-needed-wrapper\");\r\n var $paymentType = self.$wrapperEl.find(\".payment-type\");\r\n var $ccConfigFormWrapper = self.$wrapperEl.find(\".credit-card-configure-form\");\r\n var $eftConfigFormWrapper = self.$wrapperEl.find(\".eft-configure-form\");\r\n var contactName = null;\r\n\r\n self.args.Application.FirstName = $firstName.val();\r\n self.args.Application.LastName = $lastName.val();\r\n self.args.Application.CompanyName = $companyName.val();\r\n self.args.Application.ApplicantDateOfBirth = $birthDate.val();\r\n self.args.Application.PhoneNumber = $phone.val() ? $phone.val().replace(/[^0-9]+/g, \"\") : null;\r\n self.args.Application.BestContactPhone = self.args.Application.PhoneNumber;\r\n\r\n self.args.Application.EmailAddress = $email.val();\r\n self.args.Application.LanguageId =\r\n $languagePreference.val() && $.isNumeric($languagePreference.val())\r\n ? parseInt($languagePreference.val())\r\n : null;\r\n self.args.Application.SpecialOffersByEmail = $specialOffers.is(\":checked\");\r\n self.args.Application.SpecialOffersByPhoneOrMail = true;\r\n self.args.Application.SpecialOffersByTextMessaging = $specialOffersText.is(\":checked\");\r\n self.args.Application.SpecialOffersByTextMessagingWC = $specialOffersTextWC.is(\":checked\");\r\n self.args.Application.FuturePricingOptionsByEmail = $futurePriceOptions.is(\":checked\");\r\n self.args.Application.EmailInvoicing = true;\r\n //to catch express enrollments that have undefined firstName\r\n if (!$.trim(self.args.Application.FirstName)) {\r\n self.args.Application.FirstName = null;\r\n self.args.Application.LastName = null;\r\n contactName = self.args.Application.CompanyName;\r\n } else {\r\n contactName =\r\n self.args.Application.FirstName +\r\n (self.args.Application.FirstName && self.args.Application.LastName ? \" \" : \"\") +\r\n self.args.Application.LastName;\r\n }\r\n\r\n deliveryPoint.AddressLine1 = $.trim($delAddress1.val()) === \"\" ? \"\" : $.trim($delAddress1.val());\r\n deliveryPoint.AddressLine2 = $.trim($delAddress2.val()) === \"\" ? \"\" : $.trim($delAddress2.val());\r\n deliveryPoint.City = $.trim($delCity.val()) === \"\" ? \"\" : $.trim($delCity.val());\r\n deliveryPoint.State = $.trim($delState.val()) === \"\" ? \"\" : $.trim($delState.val());\r\n deliveryPoint.ZipCode = $.trim($delZip.val()) === \"\" ? \"\" : $.trim($delZip.val());\r\n deliveryPoint.PhoneNumber = self.args.Application.PhoneNumber;\r\n deliveryPoint.ContactName = contactName;\r\n deliveryPoint.DeliveryDirections = $delInstructions.val();\r\n\r\n //may need removed s1-995 nlg\r\n var $delPropertyStatus = self.$wrapperEl.find(\"input[name=property-ownership]:checked\");\r\n deliveryPoint.PropertyStatus = $delPropertyStatus.length > 0 ? $delPropertyStatus.val() : null;\r\n\r\n self.args.Application.AddressLine1 = $.trim($billAddress1.val());\r\n self.args.Application.AddressLine2 = $.trim($billAddress2.val());\r\n self.args.Application.City = $.trim($billCity.val());\r\n self.args.Application.State = $billState.val();\r\n\r\n if ($.trim($billZip.val()).length > 0) {\r\n self.args.Application.ZipCode = $.trim($billZip.val());\r\n }\r\n\r\n self.args.Application.PaymentType = $paymentType.val();\r\n\r\n var $budget = self.$wrapperEl.find(\"input[name=budget]:checked\");\r\n\r\n self.args.Application.Budget =\r\n $budget.length > 0 && $.isNumeric($budget.data(\"budgetMonths\")) ? \"True\" : \"False\";\r\n self.args.Application.BudgetMonths =\r\n $budget.length > 0 && $.isNumeric($budget.data(\"budgetMonths\"))\r\n ? parseInt($budget.data(\"budgetMonths\"))\r\n : null;\r\n self.args.Application.BudgetPayment =\r\n $budget.length > 0 && $.isNumeric($budget.data(\"budgetPayment\"))\r\n ? parseFloat($budget.data(\"budgetPayment\"))\r\n : null;\r\n self.args.Application.BudgetStartDate =\r\n $budget.length > 0 && $budget.data(\"budgetStartDate\") ? $budget.data(\"budgetStartDate\") : null;\r\n\r\n if (deliveryPoint.ElectricProducts.length > 0) {\r\n deliveryPoint.ElectricProducts[0].UtilityAccountNumber = $elLdcAcct.val();\r\n deliveryPoint.ElectricProducts[0].MeterNumber =\r\n $elMeterNumber.length > 0 && $.trim($elMeterNumber.val()) !== \"\"\r\n ? $.trim($elMeterNumber.val())\r\n : null;\r\n deliveryPoint.ElectricProducts[0].OnBudget =\r\n $elBudget.is(\":checked\") && $elBudget.val() === \"Yes\" ? true : false;\r\n // deliveryPoint.ElectricProducts[0].FixedRenewal =\r\n // $elFixedRenewalWrapper.length < 1 || $elFixedRenewalWrapper.hasClass(\"hidden\")\r\n // ? null\r\n // : $elFixedRenewal.val() === \"1\"\r\n // ? true\r\n // : false;\r\n }\r\n\r\n if (deliveryPoint.NatGasProducts.length > 0) {\r\n deliveryPoint.NatGasProducts[0].UtilityAccountNumber = $ngLdcAcct.val();\r\n deliveryPoint.NatGasProducts[0].MeterNumber =\r\n $ngMeterNumber.length > 0 && $.trim($ngMeterNumber.val()) !== \"\"\r\n ? $.trim($ngMeterNumber.val())\r\n : null;\r\n deliveryPoint.NatGasProducts[0].OnBudget =\r\n $ngBudget.is(\":checked\") && $ngBudget.val() === \"Yes\" ? true : false;\r\n // deliveryPoint.NatGasProducts[0].FixedRenewal =\r\n // $ngFixedRenewalWrapper.length < 1 || $ngFixedRenewalWrapper.hasClass(\"hidden\")\r\n // ? null\r\n // : $ngFixedRenewal.val() === \"1\"\r\n // ? true\r\n // : false;\r\n }\r\n\r\n if (deliveryPoint.HeatingOilProducts.length > 0) {\r\n deliveryPoint.HeatingOilProducts[0].FillLocation =\r\n $hoFillLoc.filter(\":checked\").length === 1 ? $hoFillLoc.filter(\":checked\").val() : null;\r\n deliveryPoint.HeatingOilProducts[0].TankLocation = $hoTankLoc.val() ? $hoTankLoc.val() : null;\r\n deliveryPoint.HeatingOilProducts[0].TankSize = $hoTankSize.val() ? $hoTankSize.val() : null;\r\n deliveryPoint.HeatingOilProducts[0].TankLevel = $hoTankLevel.val() ? $hoTankLevel.val() : null;\r\n deliveryPoint.HeatingOilProducts[0].AnnualUsage = $hoAnnualUsage.val()\r\n ? $hoAnnualUsage.val()\r\n : null;\r\n deliveryPoint.HeatingOilProducts[0].HeatWater =\r\n $hoHotWater.filter(\":checked\").length > 0 ? $hoHotWater.filter(\":checked\").val() : null;\r\n deliveryPoint.HeatingOilProducts[0].DeliverySchedule = $hoDeliverySchedule.val();\r\n deliveryPoint.HeatingOilProducts[0].DeliveryRequested = $hoDeliverNow.is(\":checked\");\r\n if (deliveryPoint.HeatingOilProducts[0].DeliveryRequested) {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryGallons =\r\n $.isNumeric($hoDeliveryGallons.val()) && parseInt($hoDeliveryGallons.val()) > 0\r\n ? parseInt($hoDeliveryGallons.val())\r\n : null;\r\n if (deliveryPoint.HeatingOilProducts[0].DeliveryGallons) {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryFee = self.args.defaultDeliveryNowDeliveryFeeHo;\r\n }\r\n } else {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryGallons = null;\r\n deliveryPoint.HeatingOilProducts[0].DeliveryFee = null;\r\n }\r\n\r\n if (deliveryPoint.HeatingOilProducts[0].DeliverySchedule === \"S\") {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryScheduleMonths = \"\";\r\n for (var i = 0; i < self.monthlyScheduleSelectors.length; i++) {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryScheduleMonths +=\r\n self.$wrapperEl.find(\".ho-\" + self.monthlyScheduleSelectors[i] + \":checked\").length > 0\r\n ? \"1\"\r\n : \"0\";\r\n }\r\n } else {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryScheduleMonths = null;\r\n }\r\n\r\n if (\r\n deliveryPoint.HeatingOilProducts[0].PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy &&\r\n !$hoPreBuyWrapper.hasClass(\"hidden\")\r\n ) {\r\n deliveryPoint.HeatingOilProducts[0].PreBuyGallons = $hoPreBuyWrapper\r\n .find(\".ho-prebuy-gallons\")\r\n .val();\r\n }\r\n }\r\n\r\n if (deliveryPoint.PropaneProducts.length > 0) {\r\n deliveryPoint.PropaneProducts[0].TankPlacement = $pTankPlacement.val()\r\n ? $pTankPlacement.val()\r\n : null;\r\n deliveryPoint.PropaneProducts[0].TankLocation = $pTankFillLoc.filter(\":checked\").length\r\n ? $pTankFillLoc.filter(\":checked\").val()\r\n : null;\r\n deliveryPoint.PropaneProducts[0].TankSize = $pTankSize.val() ? $pTankSize.val() : null;\r\n deliveryPoint.PropaneProducts[0].TankLevel = $pTankLevel.val() ? $pTankLevel.val() : null;\r\n deliveryPoint.PropaneProducts[0].AlternateHeat = $pOtherHeatingSrc.filter(\":checked\").length\r\n ? $pOtherHeatingSrc.filter(\":checked\").val()\r\n : null;\r\n\r\n deliveryPoint.PropaneProducts[0].DeliverySchedule = $pDeliverySchedule.val();\r\n\r\n deliveryPoint.PropaneProducts[0].DeliveryRequested = $pDeliverNow.is(\":checked\");\r\n\r\n if (deliveryPoint.PropaneProducts[0].DeliverySchedule === \"W\") {\r\n const tankDefault = self.args.tankSizeDefault.find(\r\n (x) =>\r\n x.ProductId == cw.appEnum.ProductCode.Propane &&\r\n (x.TankSize === parseInt(deliveryPoint.PropaneProducts[0].TankSize) ||\r\n (!deliveryPoint.PropaneProducts[0].TankSize && x.ProductTankDefault))\r\n );\r\n\r\n deliveryPoint.PropaneProducts[0].IsFillUp = pIsFillup;\r\n if (!pIsFillup) {\r\n deliveryPoint.PropaneProducts[0].DeliveryGallons =\r\n $pDeliveryGallonInput.val() && $.isNumeric($pDeliveryGallonInput.val())\r\n ? parseInt($pDeliveryGallonInput.val())\r\n : null;\r\n } else {\r\n deliveryPoint.PropaneProducts[0].DeliveryGallons = tankDefault?.UsableSize ?? null;\r\n }\r\n\r\n deliveryPoint.PropaneProducts[0].DeliveryFee = self.args.defaultDeliveryNowDeliveryFeePp;\r\n }\r\n\r\n if (deliveryPoint.PropaneProducts[0].DeliverySchedule === \"S\") {\r\n deliveryPoint.PropaneProducts[0].DeliveryScheduleMonths = \"\";\r\n for (i = 0; i < self.monthlyScheduleSelectors.length; i++) {\r\n deliveryPoint.PropaneProducts[0].DeliveryScheduleMonths +=\r\n self.$wrapperEl.find(\".p-\" + self.monthlyScheduleSelectors[i] + \":checked\").length > 0\r\n ? \"1\"\r\n : \"0\";\r\n }\r\n } else {\r\n deliveryPoint.PropaneProducts[0].DeliveryScheduleMonths = null;\r\n }\r\n\r\n if (\r\n deliveryPoint.PropaneProducts[0].PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy &&\r\n !$poPreBuyWrapper.hasClass(\"hidden\")\r\n ) {\r\n deliveryPoint.PropaneProducts[0].PreBuyGallons = $poPreBuyWrapper\r\n .find(\".po-prebuy-gallons\")\r\n .val();\r\n }\r\n }\r\n\r\n if (self.args.isExpressCheckout && self.zipRegEx.test(deliveryPoint.Zip)) {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/get-prices-by-zip-county\",\r\n {\r\n zip: deliveryPoint.Zip,\r\n countyFips: deliveryPoint.CountyId,\r\n customerClassificationType: self.args.Application.CustomerClassification,\r\n existingApplication: self.args.Application.ApplicationId,\r\n existingAccount: false,\r\n },\r\n function (zipPricing) {\r\n if (zipPricing) {\r\n self.args.isExpressCheckout = false;\r\n self.args.prices = zipPricing;\r\n\r\n //validate prices here\r\n var hasInvalidPrice = false;\r\n if (deliveryPoint.ElectricProducts.length > 0) {\r\n var elPsdl = deliveryPoint.ElectricProducts.map(function (x) {\r\n return x.PriceSheetLineId;\r\n });\r\n if (\r\n !self.args.prices.ElectricityPrices.some(function (x) {\r\n return x.PriceSheetLineId === elPsdl[0];\r\n })\r\n ) {\r\n self.deleteProduct(\r\n self.args.Application.ApplicationId,\r\n 0,\r\n cw.appEnum.ProductCode.Electricity,\r\n function () {}\r\n );\r\n hasInvalidPrice = true;\r\n }\r\n }\r\n\r\n if (deliveryPoint.NatGasProducts.length > 0) {\r\n var ngPsdl = deliveryPoint.NatGasProducts.map(function (x) {\r\n return x.PriceSheetLineId;\r\n });\r\n if (\r\n !self.args.prices.NatGasPrices.some(function (x) {\r\n return x.PriceSheetLineId === ngPsdl[0];\r\n })\r\n ) {\r\n self.deleteProduct(\r\n self.args.Application.ApplicationId,\r\n 0,\r\n cw.appEnum.ProductCode.NaturalGas,\r\n function () {}\r\n );\r\n hasInvalidPrice = true;\r\n }\r\n }\r\n\r\n if (deliveryPoint.HeatingOilProducts.length > 0) {\r\n var hoPsdl = deliveryPoint.HeatingOilProducts.map(function (x) {\r\n return x.PriceSheetLineId;\r\n });\r\n if (\r\n !self.args.prices.HeatingOilPrices.some(function (x) {\r\n return x.PriceSheetLineId === hoPsdl[0];\r\n })\r\n ) {\r\n self.deleteProduct(\r\n self.args.Application.ApplicationId,\r\n 0,\r\n cw.appEnum.ProductCode.HeatingOil,\r\n function () {}\r\n );\r\n hasInvalidPrice = true;\r\n }\r\n }\r\n\r\n if (deliveryPoint.PropaneProducts.length > 0) {\r\n var ppPsdl = deliveryPoint.PropaneProducts.map(function (x) {\r\n return x.PriceSheetLineId;\r\n });\r\n if (\r\n !self.args.prices.PropanePrices.some(function (x) {\r\n return x.PriceSheetLineId === ppPsdl[0];\r\n })\r\n ) {\r\n self.deleteProduct(\r\n self.args.Application.ApplicationId,\r\n 0,\r\n cw.appEnum.ProductCode.Propane,\r\n function () {}\r\n );\r\n hasInvalidPrice = true;\r\n }\r\n }\r\n\r\n if (hasInvalidPrice) {\r\n var hasAnyCartProducts =\r\n deliveryPoint.PropaneProducts.length > 0 ||\r\n deliveryPoint.HeatingOilProducts.length > 0 ||\r\n deliveryPoint.NatGasProducts.length > 0 ||\r\n deliveryPoint.ElectricProducts.length > 0;\r\n\r\n cw.modal.Open({\r\n title: \"Error\",\r\n closeable: false,\r\n modalBody: $(\r\n \"<p>It appears a product was added to your shopping cart with an invalid product or price for your current service location.</p>\" +\r\n (hasAnyCartProducts\r\n ? \"<p>Your current cart is being refreshed to show updated pricing.</p>\"\r\n : \"<p>Please select your desired products to continue.</p>\")\r\n ),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-check\"></i> OK',\r\n cssClass: \"btn-primary btn-xs-block\",\r\n autospin: false,\r\n action: function (mr) {\r\n let tmplArgs = {};\r\n $.extend(tmplArgs, self.args);\r\n tmplArgs = self.setSelectedProductTemplateArgs(tmplArgs);\r\n\r\n if (hasAnyCartProducts) {\r\n //rebind acctConfig\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationCart.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplArgs,\r\n function (sideBarHtml) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationAccountConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Enter Your Information\");\r\n\r\n self.$wrapperEl.removeClass(\"col-xs-12\");\r\n self.$wrapperEl.addClass(\r\n \"col-xs-12 col-md-7 col-md-pull-5 col-lg-8 col-lg-pull-4\"\r\n );\r\n\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n self.$wrapperEl.find(\".cart-sidebar-wrapper\").replaceWith(sideBarHtml);\r\n\r\n self.$confirmationPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n self.bindAcctConfig(true);\r\n }\r\n );\r\n }\r\n );\r\n } else {\r\n //send to step 1\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationStep1.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Find a Better Energy Plan\");\r\n\r\n //remove cart sidebar\r\n self.$wrapperEl.parent().find(\".side-bar-container\").remove();\r\n\r\n var classes = self.$wrapperEl.attr(\"class\").split(/\\s+/);\r\n var newClasses = [];\r\n $.each(classes, function (idx, item) {\r\n if (!(item.startsWith(\"col-\") && !item.endsWith(\"-12\"))) {\r\n newClasses.push(item);\r\n }\r\n });\r\n\r\n if (!newClasses.includes(\"col-xs-12\")) {\r\n newClasses.push(\"col-xs-12\");\r\n }\r\n\r\n self.$wrapperEl.attr(\"class\", newClasses.join(\" \"));\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n self.bindStep1();\r\n }\r\n );\r\n }\r\n\r\n mr.close();\r\n },\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n },\r\n function () {\r\n //fail\r\n console.log(\"failed to get updated pricing based on new zip code\");\r\n }\r\n );\r\n }\r\n },\r\n acctConfigValidationCallback: function (pnlErrs, showErrs, wasClickTriggered) {\r\n const self = cw.pages.application;\r\n var $errPnl = null;\r\n var $panel = null;\r\n\r\n if (self.$acctConfigActivePnlFwdBtn.length > 0) {\r\n $errPnl = self.$acctConfigActivePnlFwdBtn.closest(\".panel-body\").find(\".pnl-err\");\r\n $panel = self.$acctConfigActivePnlFwdBtn.closest(\".panel\");\r\n } else {\r\n $errPnl = self.$wrapperEl.find(\".confirmation-panel\").find(\".pnl-err\");\r\n $panel = self.$wrapperEl.find(\".confirmation-panel\").closest(\".panel\");\r\n }\r\n\r\n cw.alert.ClearAlert($errPnl);\r\n self.$acctConfigStepForwardBtn.off(\"click\");\r\n\r\n if (\r\n pnlErrs.length === 0 ||\r\n ($panel.hasClass(\"payment-wrapper\") &&\r\n pnlErrs.length === 1 &&\r\n pnlErrs[0].text === cw.pages.application.CC_NOT_SAVED_ERR_TEXT)\r\n ) {\r\n if (self.$acctConfigActivePnlFwdBtn.length > 0) {\r\n self.$acctConfigActivePnlFwdBtn.off(\"click\");\r\n\r\n if ($panel.hasClass(\"payment-wrapper\")) {\r\n //this one has a special click handler because it needs to optionally process the cc\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.paymentNextClickFunc);\r\n } else {\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.acctConfigNextPnlClickFunc);\r\n }\r\n }\r\n\r\n $panel.find(\".step-done\").addClass(\"completed\");\r\n self.setAccountCfgBreadCrumbs();\r\n\r\n //check all panels for errors here\r\n var pnlsWithErrors = self.recalcValidationPanelContents(\r\n $panel.hasClass(\"confirmation-wrapper\") && wasClickTriggered\r\n );\r\n if (pnlsWithErrors.length < 1) {\r\n self.$acctConfigStepForwardBtn.removeClass(\"disabled\");\r\n } else {\r\n self.$acctConfigStepForwardBtn.on(\"click\", self.acctConfigBtnForwardErrorFunc);\r\n }\r\n } else {\r\n self.$acctConfigActivePnlFwdBtn.closest(\".panel\").find(\".step-done\").removeClass(\"completed\"); //remove done check\r\n self.$acctConfigActivePnlFwdBtn.off(\"click\");\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.acctConfigShowErrFunc);\r\n self.$acctConfigStepForwardBtn.addClass(\"disabled\");\r\n self.$acctConfigStepForwardBtn.on(\"click\", self.acctConfigBtnForwardErrorFunc);\r\n if (showErrs) {\r\n cw.alert.Alert(pnlErrs, $errPnl);\r\n }\r\n\r\n $panel.find(\".step-done\").removeClass(\"completed\");\r\n }\r\n\r\n // key on the next key that has .btn-panel-forward not .btn-forward\r\n if (\r\n (pnlErrs.length === 0 && $panel.hasClass(\"interior-wrapper\")) ||\r\n (pnlErrs.length === 1 &&\r\n pnlErrs.some((x) => x.text === cw.pages.application.CC_NOT_SAVED_ERR_TEXT) &&\r\n $panel.hasClass(\"payment-wrapper\"))\r\n ) {\r\n self.$acctConfigStepForwardBtnInterior.removeClass(\"disabled\");\r\n } else {\r\n self.$acctConfigStepForwardBtnInterior.addClass(\"disabled\");\r\n }\r\n },\r\n acctConfigNextPnlClickFunc: function (e) {\r\n const self = cw.pages.application;\r\n e.preventDefault();\r\n const $this = $(this);\r\n var $thisPnl = $this.closest(\".panel\");\r\n self.acctConfigNextPnlFunc($thisPnl, true);\r\n },\r\n acctConfigNextPnlFunc: function ($panel, wasClickTriggered) {\r\n const self = cw.pages.application;\r\n var $thisPnlInner = $panel.find(\".panel-body\");\r\n var $nextPnl = $panel.nextAll(\".panel.req\"); //get the next non-hidden panel\r\n\r\n if ($nextPnl.length > 0) {\r\n var $nextPnlInner = $nextPnl.first().find(\".panel-body\");\r\n self.$acctConfigActivePnlFwdBtn = $nextPnlInner.find(\".btn-panel-forward\");\r\n\r\n $thisPnlInner.closest(\".panel\").addClass(\"hidden\");\r\n setTimeout(function () {\r\n $nextPnlInner.closest(\".panel\").removeClass(\"hidden\");\r\n cw.utility.focusElement($nextPnlInner, self.getCwOffset());\r\n self.setAccountCfgBreadCrumbs();\r\n\r\n var cartStepObj;\r\n if ($nextPnlInner.hasClass(\"contact-panel\")) {\r\n cartStepObj = { step: 1 };\r\n } else if (\r\n $nextPnlInner.hasClass(\"addr-panel\") &&\r\n $nextPnlInner.find(\"#billingSame\").is(\":checked\")\r\n ) {\r\n cartStepObj = { step: 2, interaction: self.CONTACT_INTERACTION_ID };\r\n } else if (\r\n $nextPnlInner.hasClass(\"bill-addr-panel\") &&\r\n !$nextPnlInner.find(\"#billingSame\").is(\":checked\")\r\n ) {\r\n cartStepObj = { step: 3 };\r\n } else if ($nextPnlInner.hasClass(\"el-panel\")) {\r\n cartStepObj = { step: 4, option: \"Electricity Config\" };\r\n } else if ($nextPnlInner.hasClass(\"ng-panel\")) {\r\n cartStepObj = { step: 4, option: \"Natural Gas Config\" };\r\n } else if ($nextPnlInner.hasClass(\"ho-panel\")) {\r\n cartStepObj = { step: 4, option: \"Heating Oil Config\" };\r\n } else if ($nextPnlInner.hasClass(\"propane-panel\")) {\r\n cartStepObj = { step: 4, option: \"Propane Config\" };\r\n } else if ($nextPnlInner.hasClass(\"payment-panel\")) {\r\n cartStepObj = { step: 5, option: \"Payment Config\" };\r\n } else if ($nextPnlInner.hasClass(\"confirmation-panel\")) {\r\n cartStepObj = { step: 6, option: \"Confirmation\" };\r\n }\r\n\r\n if (cartStepObj) {\r\n self.processesCartStepInteractions(cartStepObj);\r\n }\r\n }, 250);\r\n } else {\r\n // at the last one\r\n $thisPnlInner.collapse(\"hide\");\r\n }\r\n\r\n if (!$panel.hasClass(\"payment-wrapper\")) {\r\n $panel.find(\".step-done\").addClass(\"completed\");\r\n }\r\n\r\n self.acctConfigInputUpdateFunc(false, wasClickTriggered); // this will bind the next, next button\r\n self.setAccountCfgBreadCrumbs();\r\n },\r\n processesCartStepInteractions: function (cartStepObj) {\r\n //cartStepObj = { step: 1, option: \"\", interaction: 7 }\r\n\r\n if (!cartStepObj) {\r\n return;\r\n }\r\n\r\n //Process normal GA datalayer push\r\n analytics.checkoutEvent({ Step: cartStepObj.step, Option: cartStepObj.option });\r\n\r\n if (!cartStepObj.interaction) {\r\n return;\r\n }\r\n\r\n //process Cart interactions\r\n const self = this;\r\n let interationData = {};\r\n\r\n switch (cartStepObj.step) {\r\n case 2:\r\n const email = self.$wrapperEl.find(\".email\").val();\r\n interationData = {\r\n FirstName: self.$wrapperEl.find(\".first-name\").val(),\r\n LastName: self.$wrapperEl.find(\".last-name\").val(),\r\n Phone: self.$wrapperEl.find(\".phone\").val(),\r\n Email: email ? email.trim() : null,\r\n ApplicationId: self.args.Application.ApplicationId,\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n if (Object.keys(interationData).length > 0) {\r\n cw.webservices.getJson(\r\n `Interaction/send-interaction/${cartStepObj.interaction}`,\r\n interationData,\r\n () => {}\r\n );\r\n }\r\n },\r\n acctConfigInputUpdateFunc: function (showErr, wasClickTriggered) {\r\n const self = cw.pages.application;\r\n self.acctConfigRealizeForm();\r\n let $this;\r\n let $thisPanel;\r\n\r\n if (self.$acctConfigActivePnlFwdBtn.length > 0) {\r\n $this = self.$acctConfigActivePnlFwdBtn;\r\n $thisPanel = $this.closest(\".panel-body\");\r\n } else {\r\n $thisPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n }\r\n\r\n self.recalcChargeNowPrice(true);\r\n\r\n clearTimeout(self.acctConfigSaveTimer);\r\n self.acctConfigSaveTimer = setTimeout(function () {\r\n self.saveFullApplication();\r\n self.acctConfigSaveTimer = null;\r\n }, 2000);\r\n\r\n if ($thisPanel.hasClass(\"contact-panel\")) {\r\n self.validateContactInfo(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n } else if ($thisPanel.hasClass(\"addr-panel\")) {\r\n self.validateServiceAddress(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n self.$wrapperEl = $(\".cw-application\").parent();\r\n const $billingSameAddress = self.$wrapperEl.find(\"#billingSame\");\r\n if ($billingSameAddress.is(\":checked\")) {\r\n self.validateBillingAddress(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n }\r\n } else if ($thisPanel.hasClass(\"el-panel\")) {\r\n self.validateElectricProduct(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n } else if ($thisPanel.hasClass(\"ng-panel\")) {\r\n self.validateNatGasProduct(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n } else if ($thisPanel.hasClass(\"ho-panel\")) {\r\n self.validateOilProduct(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n } else if ($thisPanel.hasClass(\"propane-panel\")) {\r\n self.validatePropaneProduct(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n } else if ($thisPanel.hasClass(\"payment-panel\")) {\r\n self.validatePayment(self.acctConfigValidationCallback, showErr, wasClickTriggered);\r\n }\r\n $(\".cw-application-acct-config\").trigger(\"scroll\");\r\n },\r\n recalcValidationPanelContents: function (processPaymentWhenRequired) {\r\n const self = cw.pages.application;\r\n if (!self.$confirmationPanel) {\r\n self.$confirmationPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n }\r\n\r\n var pnlsWithErrors = [];\r\n self.$wrapperEl.find(\".panel.req\").each(function () {\r\n var $me = $(this);\r\n if ($me.find(\".accordion-header .step-done.completed\").length < 1) {\r\n var title = $me.find(\".header-text\").html();\r\n var $title = $(\"<span>\" + title + \"</span>\");\r\n $title.find(\"i\").remove();\r\n $title.find(\"span.product-icon\").remove();\r\n var textTitle = $.trim($title.html());\r\n if (textTitle && textTitle !== \"Review & Order\") {\r\n var classes = $me.find(\".panel-body\").attr(\"class\").split(/\\s+/);\r\n var pnlClass = classes.filterSingle(function (c) {\r\n if (\r\n [\r\n \"contact-panel\",\r\n \"addr-panel\",\r\n \"bill-addr-panel\",\r\n \"el-panel\",\r\n \"ng-panel\",\r\n \"ho-panel\",\r\n \"propane-panel\",\r\n \"payment-panel\",\r\n ].includes(c)\r\n ) {\r\n return c;\r\n }\r\n });\r\n\r\n pnlsWithErrors.push({\r\n text: textTitle,\r\n jmpTo: pnlClass,\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (pnlsWithErrors.length < 1) {\r\n self.$confirmationPanel.empty();\r\n self.$confirmationPanel.append(\r\n '<div class=\"text-center pb15 pt15\"><span class=\"loading-ind in-bl\"><i class=\"fa fa-solid fa-circle-notch fa-spin fa-fw fs-xs-34 shipley-blue\"></i></span></div>'\r\n );\r\n\r\n ////expire pending timers\r\n if (self.acctConfigSaveTimer) {\r\n clearTimeout(self.acctConfigSaveTimer);\r\n self.acctConfigSaveTimer = null;\r\n }\r\n\r\n //hide shopping cart buttons\r\n $(\".panel-3\").addClass(\"pt30\");\r\n $(\".other-products-wrapper\").addClass(\"hidden\");\r\n\r\n self.acctConfigPostPayment(self.$confirmationPanel);\r\n } else {\r\n self.$confirmationPanel.empty().append(\r\n '<div class=\"alert alert-warning\">The <em><strong>' +\r\n pnlsWithErrors\r\n .map(function (p) {\r\n return (\r\n '<a href=\"#\" class=\"panel-jump\" data-jump-to-panel=\"' + p.jmpTo + '\">' + p.text + \"</a>\"\r\n );\r\n })\r\n .join(\", \") +\r\n \"</strong></em> section\" +\r\n (pnlsWithErrors.length > 1 ? \"s\" : \"\") +\r\n \" contain error(s).<br /> <br />Please complete \" +\r\n (pnlsWithErrors.length === 1 ? \"the \" + pnlsWithErrors[0].text : \"each\") +\r\n \" section before continuing.</div>\"\r\n );\r\n }\r\n\r\n if (processPaymentWhenRequired) {\r\n $(\".panel-body:not(.confirmation-panel)\").each(function () {\r\n $(this).closest(\".panel\").addClass(\"hidden\");\r\n });\r\n self.$confirmationPanel.closest(\".panel\").removeClass(\"hidden\");\r\n self.setAccountCfgBreadCrumbs();\r\n }\r\n\r\n return pnlsWithErrors;\r\n },\r\n paymentNextClickFunc: function (e) {\r\n e.preventDefault();\r\n const self = cw.pages.application;\r\n self.saveFullApplication();\r\n\r\n var paymentIsRequired = self.$wrapperEl.find(\".no-payment-needed-wrapper\").hasClass(\"hidden\");\r\n if (paymentIsRequired) {\r\n var $paymentErrPnl = self.$wrapperEl.find(\".payment-panel .pnl-err\");\r\n var $paymentType = self.$wrapperEl.find(\".payment-type\");\r\n var paymentType = $paymentType.val();\r\n\r\n if (paymentType === \"CC\" || paymentType === \"COD\") {\r\n if (self.$wrapperEl.find(\".credit-card-item\").length < 1) {\r\n var $paymentBtn = self.$wrapperEl.find(\".payment-panel .btn-panel-forward\");\r\n var $btnIconWrap = $paymentBtn.find(\".btn-icon-wrapper\");\r\n var $btnText = $paymentBtn.find(\".btn-text\");\r\n $btnIconWrap.html('<i class=\"fa fa-solid fa-circle-notch fa-spin fa-fw\"></i>');\r\n $btnText.html(\"Validating... \");\r\n\r\n var ccNumber = self.$wrapperEl\r\n .find(\"#credit-card-number\")\r\n .val()\r\n .replace(/[^0-9]+/g, \"\");\r\n var ccExpMonth = self.$wrapperEl.find(\"#cc-exp-month\").val();\r\n var ccExpYear = self.$wrapperEl.find(\"#cc-exp-year\").val();\r\n var ccZip = self.$wrapperEl.find(\"#credit-card-billing-zip\").val();\r\n var ccName = self.$wrapperEl.find(\"#credit-card-cardholder-name\").val();\r\n var ccCVV2 = self.$wrapperEl.find(\"#credit-card-cvv\").val();\r\n\r\n cw.webservices.getJson(\r\n \"CustomerApplication/get-accept-js-config\",\r\n self.args.Application.ApplicationId,\r\n function (acceptJsResp) {\r\n var secureData = {},\r\n authData = {},\r\n cardData = {};\r\n cardData.cardNumber = ccNumber;\r\n cardData.month = ccExpMonth;\r\n cardData.year = ccExpYear;\r\n cardData.zip = ccZip;\r\n cardData.fullName = ccName;\r\n cardData.cardCode = ccCVV2;\r\n secureData.cardData = cardData;\r\n authData.clientKey = acceptJsResp.PublicClientKey;\r\n authData.apiLoginID = acceptJsResp.ApiLoginId;\r\n secureData.authData = authData;\r\n Accept.dispatchData(secureData, self.getAcceptJsNewCcResp);\r\n },\r\n function () {\r\n cw.modal.Alert({ text: \"An unknown error occurred\", title: \"Error\" });\r\n\r\n self.$acctConfigStepForwardBtn.removeClass(\"disabled\");\r\n $btnText.html(\"Next\");\r\n $btnIconWrap.html('<i class=\"fa fa-arrow-down btn-icon\"></i>');\r\n }\r\n );\r\n return;\r\n } else {\r\n self.recalcValidationPanelContents(true);\r\n analytics.checkoutEvent({ Step: 6, Option: \"Cart Verify\" });\r\n }\r\n } else if (paymentType === \"EFT\") {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/save-eft-config/\" + self.args.Application.ApplicationId,\r\n {\r\n bankName: self.$wrapperEl.find(\"#bank-name\").val(),\r\n accountType: self.$wrapperEl.find(\"input[name=eft-account-type]:checked\").val(),\r\n bankRoutingNumber: self.$wrapperEl.find(\"#bank-routing-number\").val(),\r\n bankAccountNumber: self.$wrapperEl.find(\"#bank-account-number\").val(),\r\n },\r\n function (eftSaveResp) {\r\n if (eftSaveResp) {\r\n self.recalcValidationPanelContents(true);\r\n analytics.checkoutEvent({ Step: 6, Option: \"Cart Verify\" });\r\n } else {\r\n cw.modal.Alert({\r\n title: \"Error\",\r\n text: \"An unknown error occured while attempting to save bank configuration\",\r\n });\r\n }\r\n }\r\n );\r\n return;\r\n } else {\r\n self.recalcValidationPanelContents(true);\r\n analytics.checkoutEvent({ Step: 6, Option: \"Cart Verify\" });\r\n }\r\n } else {\r\n analytics.checkoutEvent({ Step: 6, Option: \"Cart Verify\" });\r\n self.$wrapperEl.find(\".payment-wrapper .step-done\").addClass(\"completed\");\r\n self.recalcValidationPanelContents(true);\r\n }\r\n },\r\n acctConfigInitValidation: function ($myPnl) {\r\n const self = cw.pages.application;\r\n if ($myPnl) {\r\n var $myPnlInner = $myPnl.find(\".panel-body\");\r\n\r\n const initValidationFunc = function (errs, showErrs, wasClickTriggered) {\r\n self.$acctConfigActivePnlFwdBtn = $myPnlInner.find(\".btn-panel-forward\");\r\n self.$acctConfigActivePnlFwdBtn.off(\"click\");\r\n var $confPnl = self.$wrapperEl.find(\".confirmation-panel\");\r\n //check all panels for errors here\r\n\r\n if (\r\n errs.length === 0 ||\r\n ($myPnl.hasClass(\"payment-panel\") &&\r\n errs.length === 1 &&\r\n errs[0].text === cw.pages.application.CC_NOT_SAVED_ERR_TEXT)\r\n ) {\r\n if (self.$acctConfigActivePnlFwdBtn.length > 0) {\r\n self.$acctConfigActivePnlFwdBtn.removeClass(\"disabled\");\r\n\r\n if ($myPnl.hasClass(\"payment-panel\")) {\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.paymentNextClickFunc);\r\n } else {\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.acctConfigNextPnlClickFunc);\r\n }\r\n }\r\n\r\n if (!$myPnl.hasClass(\"payment-panel\")) {\r\n $myPnl.find(\".step-done\").addClass(\"completed\");\r\n self.setAccountCfgBreadCrumbs();\r\n }\r\n\r\n if ($myPnlInner.hasClass(\"confirmation-panel\")) {\r\n $myPnlInner.collapse(\"show\");\r\n cw.utility.focusElement($myPnlInner, self.getCwOffset());\r\n self.$acctConfigStepForwardBtn.removeClass(\"disabled\");\r\n } else {\r\n var $next = $myPnl.nextAll(\".panel .req\");\r\n if ($next.length > 0) {\r\n self.acctConfigInitValidation($next.first());\r\n }\r\n }\r\n } else {\r\n $myPnlInner.collapse(\"show\");\r\n cw.utility.focusElement($myPnlInner, self.getCwOffset());\r\n self.$acctConfigActivePnlFwdBtn.on(\"click\", self.acctConfigShowErrFunc);\r\n }\r\n\r\n self.recalcValidationPanelContents(wasClickTriggered);\r\n };\r\n\r\n if ($myPnlInner.hasClass(\"contact-panel\")) {\r\n self.validateContactInfo(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"addr-panel\")) {\r\n self.validateServiceAddress(initValidationFunc, false, false);\r\n self.validateBillingAddress(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"el-panel\")) {\r\n self.validateElectricProduct(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"ng-panel\")) {\r\n self.validateNatGasProduct(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"ho-panel\")) {\r\n self.validateOilProduct(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"propane-panel\")) {\r\n self.validatePropaneProduct(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"payment-panel\")) {\r\n self.validatePayment(initValidationFunc, false, false);\r\n } else if ($myPnlInner.hasClass(\"confirmation-panel\")) {\r\n $myPnlInner.collapse(\"show\");\r\n }\r\n }\r\n },\r\n productSelectFunction: function (\r\n productCode,\r\n price,\r\n priceSheetLineId,\r\n pricePlanId,\r\n isWinterBlend,\r\n estimatedAnnualUsage,\r\n tankOwner,\r\n propaneUsageCodes\r\n ) {\r\n const self = cw.pages.application;\r\n const deliveryPoint = self.args.Application.DeliveryPoints[0];\r\n if (productCode && price && priceSheetLineId && pricePlanId) {\r\n var analyticAddProduct = [];\r\n var analyticRemoveProduct = [];\r\n\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n var hoPrice = self.args.prices.HeatingOilPrices.filterSingle(function (x) {\r\n if (x.PriceSheetLineId === priceSheetLineId && x.PricingPlan === pricePlanId) {\r\n return x;\r\n }\r\n });\r\n const hoPriceRemove = self.args.prices.HeatingOilPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.HeatingOilProducts[0]?.PriceSheetLineId\r\n );\r\n\r\n if (hoPrice) {\r\n if (deliveryPoint.HeatingOilProducts.length === 0) {\r\n deliveryPoint.HeatingOilProducts.push({});\r\n } else if (hoPriceRemove) {\r\n analyticRemoveProduct.push(\r\n new analytics.Ga4EnrollmentProduct(\r\n hoPriceRemove,\r\n self.analyticListName\r\n ).GetAnalyticProduct()\r\n );\r\n }\r\n\r\n var fFillPrice = null;\r\n if (hoPrice.FirstDeliveryPrice) {\r\n fFillPrice = hoPrice.FirstDeliveryPrice; // + (isWinterBlend && hoPrice.FirstDeliveryPrice ? self.winterBlendPrice : 0);\r\n\r\n if (isWinterBlend) {\r\n fFillPrice += hoPrice.WinterBlendPriceOffset;\r\n }\r\n }\r\n\r\n var hoPPG = hoPrice.Price;\r\n if (isWinterBlend) {\r\n hoPPG += hoPrice.WinterBlendPriceOffset;\r\n }\r\n\r\n deliveryPoint.HeatingOilProducts[0].ApplicationId = self.args.Application.ApplicationId;\r\n deliveryPoint.HeatingOilProducts[0].Price = hoPPG;\r\n deliveryPoint.HeatingOilProducts[0].PriceSheetLineId = hoPrice.PriceSheetLineId;\r\n deliveryPoint.HeatingOilProducts[0].PriceSheetId = hoPrice.PricingSheetCode;\r\n deliveryPoint.HeatingOilProducts[0].PricingPlanId = hoPrice.PricingPlan;\r\n deliveryPoint.HeatingOilProducts[0].FirstDeliveryPrice = fFillPrice;\r\n deliveryPoint.HeatingOilProducts[0].InitialCharge = hoPrice.InitialCharge;\r\n deliveryPoint.HeatingOilProducts[0].PlanSelected = true;\r\n deliveryPoint.HeatingOilProducts[0].PriceTermExpirationDate = hoPrice.Expiration;\r\n deliveryPoint.HeatingOilProducts[0].isWinterBlend = isWinterBlend;\r\n deliveryPoint.HeatingOilProducts[0].Fee = hoPrice.Fee;\r\n deliveryPoint.HeatingOilProducts[0].MinimumPurchase = hoPrice.MinimumPurchase;\r\n deliveryPoint.HeatingOilProducts[0].DeliveryFee = hoPrice.DeliveryFee;\r\n deliveryPoint.HeatingOilProducts[0].AlternateHeat = \"No\";\r\n deliveryPoint.HeatingOilProducts[0].RemotePriceRecordPkId = hoPrice.RemotePriceRecordPkId;\r\n deliveryPoint.HeatingOilProducts[0].RemoteWinterBlendPriceRecordPkId =\r\n hoPrice.RemoteWinterBlendPriceRecordPkId;\r\n deliveryPoint.HeatingOilProducts[0].PricingTypeCode = hoPrice.PricingTypeCode;\r\n\r\n if (hoPrice.PricingTypeCode !== cw.appEnum.PricingTypeCode.WillCallCashPrice) {\r\n deliveryPoint.HeatingOilProducts[0].DeliveryRequested = false;\r\n deliveryPoint.HeatingOilProducts[0].DeliveryGallons = null;\r\n }\r\n\r\n const hoProdCopy = { ...hoPrice };\r\n hoProdCopy.Price = hoPPG;\r\n analyticAddProduct.push(\r\n new analytics.Ga4EnrollmentProduct(hoProdCopy, self.analyticListName).GetAnalyticProduct()\r\n );\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n const pPrice = self.args.prices.PropanePrices.filterSingle(function (x) {\r\n if (x.PriceSheetLineId === priceSheetLineId && x.PricingPlan === pricePlanId) {\r\n return x;\r\n }\r\n });\r\n const pPriceRemove = self.args.prices.PropanePrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.PropaneProducts[0]?.PriceSheetLineId\r\n );\r\n\r\n if (pPrice) {\r\n if (deliveryPoint.PropaneProducts.length === 0) {\r\n deliveryPoint.PropaneProducts.push({});\r\n } else if (pPriceRemove) {\r\n analyticRemoveProduct.push(\r\n new analytics.Ga4EnrollmentProduct(\r\n pPriceRemove,\r\n self.analyticListName\r\n ).GetAnalyticProduct()\r\n );\r\n }\r\n\r\n deliveryPoint.PropaneProducts[0].Price =\r\n tankOwner !== \"C\" ? pPrice.Price : pPrice.PriceWithOffset;\r\n deliveryPoint.PropaneProducts[0].FirstDeliveryPrice =\r\n tankOwner !== \"C\" ? pPrice.FirstDeliveryPrice : pPrice.FirstDeliveryPriceWithOffset;\r\n deliveryPoint.PropaneProducts[0].ApplicationId = self.args.Application.ApplicationId;\r\n deliveryPoint.PropaneProducts[0].PriceSheetLineId = pPrice.PriceSheetLineId;\r\n deliveryPoint.PropaneProducts[0].PriceSheetId = pPrice.PricingSheetCode;\r\n deliveryPoint.PropaneProducts[0].PricingPlanId = pPrice.PricingPlan;\r\n deliveryPoint.PropaneProducts[0].InitialCharge = pPrice.InitialCharge;\r\n deliveryPoint.PropaneProducts[0].PlanSelected = true;\r\n deliveryPoint.PropaneProducts[0].PriceTermExpirationDate = pPrice.Expiration;\r\n deliveryPoint.PropaneProducts[0].ProductClass = pPrice.ProductSubCode;\r\n deliveryPoint.PropaneProducts[0].Fee = pPrice.Fee;\r\n deliveryPoint.PropaneProducts[0].MinimumPurchase = pPrice.MinimumPurchase;\r\n deliveryPoint.PropaneProducts[0].DeliveryFee = pPrice.DeliveryFee;\r\n deliveryPoint.PropaneProducts[0].AnnualUsage = estimatedAnnualUsage;\r\n deliveryPoint.PropaneProducts[0].TankOwner = tankOwner;\r\n deliveryPoint.PropaneProducts[0].ProductUsageCodes = propaneUsageCodes;\r\n deliveryPoint.PropaneProducts[0].RemotePriceRecordPkId = pPrice.RemotePriceRecordPkId;\r\n deliveryPoint.PropaneProducts[0].PricingTypeCode = pPrice.PricingTypeCode;\r\n\r\n if (pPrice.PricingTypeCode !== cw.appEnum.PricingTypeCode.WillCallCashPrice) {\r\n deliveryPoint.PropaneProducts[0].DeliveryRequested = false;\r\n deliveryPoint.PropaneProducts[0].DeliveryGallons = null;\r\n }\r\n\r\n analyticAddProduct.push(\r\n new analytics.Ga4EnrollmentProduct(pPrice, self.analyticListName).GetAnalyticProduct()\r\n );\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n var elPrice = self.args.prices.ElectricityPrices.filterSingle(function (x) {\r\n if (x.PriceSheetLineId === priceSheetLineId && x.PricingPlan === pricePlanId) {\r\n return x;\r\n }\r\n });\r\n var elPriceRemove = self.args.prices.ElectricityPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.ElectricProducts[0]?.PriceSheetLineId\r\n );\r\n if (elPrice) {\r\n if (deliveryPoint.ElectricProducts.length === 0) {\r\n deliveryPoint.ElectricProducts.push({});\r\n } else if (elPriceRemove) {\r\n analyticRemoveProduct.push(\r\n new analytics.Ga4EnrollmentProduct(\r\n elPriceRemove,\r\n self.analyticListName\r\n ).GetAnalyticProduct()\r\n );\r\n }\r\n\r\n deliveryPoint.ElectricProducts[0].ApplicationId = self.args.Application.ApplicationId;\r\n deliveryPoint.ElectricProducts[0].Price = elPrice.Price;\r\n deliveryPoint.ElectricProducts[0].PriceSheetLineId = elPrice.PriceSheetLineId;\r\n deliveryPoint.ElectricProducts[0].PriceSheetId = elPrice.PricingSheetCode;\r\n deliveryPoint.ElectricProducts[0].PricingPlanId = elPrice.PricingPlan;\r\n deliveryPoint.ElectricProducts[0].FirstDeliveryPrice = elPrice.FirstDeliveryPrice;\r\n deliveryPoint.ElectricProducts[0].InitialCharge = elPrice.InitialCharge;\r\n deliveryPoint.ElectricProducts[0].PlanSelected = true;\r\n deliveryPoint.ElectricProducts[0].PriceTermExpirationDate = elPrice.Expiration;\r\n deliveryPoint.ElectricProducts[0].ProductUtilityCode = elPrice.UtilityCode;\r\n deliveryPoint.ElectricProducts[0].Fee = elPrice.Fee;\r\n deliveryPoint.ElectricProducts[0].MinimumPurchase = elPrice.MinimumPurchase;\r\n deliveryPoint.ElectricProducts[0].DeliveryFee = elPrice.DeliveryFee;\r\n deliveryPoint.ElectricProducts[0].RemotePriceRecordPkId = elPrice.RemotePriceRecordPkId;\r\n\r\n analyticAddProduct.push(\r\n new analytics.Ga4EnrollmentProduct(elPrice, self.analyticListName).GetAnalyticProduct()\r\n );\r\n }\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n var ngPrice = self.args.prices.NatGasPrices.filterSingle(function (x) {\r\n if (x.PriceSheetLineId === priceSheetLineId && x.PricingPlan === pricePlanId) {\r\n return x;\r\n }\r\n });\r\n var ngPriceRemove = self.args.prices.NatGasPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.NatGasProducts[0]?.PriceSheetLineId\r\n );\r\n\r\n if (ngPrice) {\r\n if (deliveryPoint.NatGasProducts.length === 0) {\r\n deliveryPoint.NatGasProducts.push({});\r\n } else if (ngPriceRemove) {\r\n analyticRemoveProduct.push(\r\n new analytics.Ga4EnrollmentProduct(\r\n ngPriceRemove,\r\n self.analyticListName\r\n ).GetAnalyticProduct()\r\n );\r\n }\r\n deliveryPoint.NatGasProducts[0].ApplicationId = self.args.Application.ApplicationId;\r\n deliveryPoint.NatGasProducts[0].Price = ngPrice.Price;\r\n deliveryPoint.NatGasProducts[0].PriceSheetLineId = ngPrice.PriceSheetLineId;\r\n deliveryPoint.NatGasProducts[0].PriceSheetId = ngPrice.PricingSheetCode;\r\n deliveryPoint.NatGasProducts[0].PricingPlanId = ngPrice.PricingPlan;\r\n deliveryPoint.NatGasProducts[0].FirstDeliveryPrice = ngPrice.FirstDeliveryPrice;\r\n deliveryPoint.NatGasProducts[0].InitialCharge = ngPrice.InitialCharge;\r\n deliveryPoint.NatGasProducts[0].PlanSelected = true;\r\n deliveryPoint.NatGasProducts[0].PriceTermExpirationDate = ngPrice.Expiration;\r\n deliveryPoint.NatGasProducts[0].ProductUtilityCode = ngPrice.UtilityCode;\r\n deliveryPoint.NatGasProducts[0].Fee = ngPrice.Fee;\r\n deliveryPoint.NatGasProducts[0].MinimumPurchase = ngPrice.MinimumPurchase;\r\n deliveryPoint.NatGasProducts[0].DeliveryFee = ngPrice.DeliveryFee;\r\n deliveryPoint.NatGasProducts[0].RemotePriceRecordPkId = ngPrice.RemotePriceRecordPkId;\r\n\r\n analyticAddProduct.push(\r\n new analytics.Ga4EnrollmentProduct(ngPrice, self.analyticListName).GetAnalyticProduct()\r\n );\r\n }\r\n break;\r\n }\r\n\r\n if (analyticRemoveProduct.length > 0) {\r\n analytics.removeFromCart(analyticRemoveProduct);\r\n }\r\n\r\n if (analyticAddProduct.length > 0) {\r\n analytics.addToCart(analyticAddProduct);\r\n }\r\n\r\n cw.pages.application.saveProducts(function () {});\r\n }\r\n },\r\n planSelectionNextButtonState: function () {\r\n const self = this;\r\n var $btnForward = self.$wrapperEl.find(\".cw-application-plan-select .btn-forward\");\r\n var $btnForwardMiniCart = self.$wrapperEl.find(\r\n \".cw-application-plan-select .btn-forward .btn-mini-add-modal-forward\"\r\n );\r\n var $miniCartForwardBtn = $(\".btn-mini-add-modal-forward\");\r\n var allProductsSelected = true;\r\n var anyProductSelected = false;\r\n if (allProductsSelected && self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0) {\r\n if (\r\n !self.args.Application.DeliveryPoints[0].ElectricProducts.some(function (x) {\r\n if (x.PriceSheetLineId) {\r\n return true;\r\n }\r\n })\r\n ) {\r\n allProductsSelected = false;\r\n } else {\r\n anyProductSelected = true;\r\n }\r\n }\r\n\r\n if (allProductsSelected && self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0) {\r\n if (\r\n !self.args.Application.DeliveryPoints[0].NatGasProducts.some(function (x) {\r\n if (x.PriceSheetLineId) {\r\n return true;\r\n }\r\n })\r\n ) {\r\n allProductsSelected = false;\r\n } else {\r\n anyProductSelected = true;\r\n }\r\n }\r\n\r\n if (allProductsSelected && self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0) {\r\n if (\r\n !self.args.Application.DeliveryPoints[0].HeatingOilProducts.some(function (x) {\r\n if (x.PriceSheetLineId) {\r\n return true;\r\n }\r\n })\r\n ) {\r\n allProductsSelected = false;\r\n } else {\r\n anyProductSelected = true;\r\n }\r\n }\r\n\r\n if (allProductsSelected && self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0) {\r\n if (\r\n !self.args.Application.DeliveryPoints[0].PropaneProducts.some(function (x) {\r\n if (x.PriceSheetLineId) {\r\n return true;\r\n }\r\n })\r\n ) {\r\n allProductsSelected = false;\r\n } else {\r\n anyProductSelected = true;\r\n }\r\n }\r\n\r\n if (\r\n allProductsSelected &&\r\n (self.args.Application.ContactAboutServiceContract ||\r\n (self.args.Application.DeliveryPoints[0].ContactAboutServiceContract &&\r\n !self.args.Application.DeliveryPoints[0].ContactedAboutServiceContractDate) ||\r\n (self.args.Application.DeliveryPoints[0].ServiceContracts &&\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.length > 0))\r\n ) {\r\n if (\r\n typeof self.args.Application.DeliveryPoints[0].ServiceContracts === \"undefined\" ||\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.length < 1\r\n ) {\r\n allProductsSelected = false;\r\n } else {\r\n anyProductSelected = true;\r\n }\r\n }\r\n\r\n if (allProductsSelected && anyProductSelected) {\r\n $miniCartForwardBtn.removeClass(\"disabled\");\r\n $btnForward.removeClass(\"disabled\");\r\n $btnForward.focus();\r\n $btnForwardMiniCart.removeClass(\"disabled\");\r\n } else {\r\n $miniCartForwardBtn.addClass(\"disabled\");\r\n $btnForward.addClass(\"disabled\");\r\n $btnForwardMiniCart.addClass(\"disabled\");\r\n }\r\n },\r\n getPricePlansForImpressions: function ($parentEl) {\r\n const self = this;\r\n let pricePlans = [];\r\n $parentEl.find(\".enrollment-select input\").each(function (idx) {\r\n var $me = $(this);\r\n var pricePlanCode = parseInt($me.val());\r\n var productCode = $me.data(\"productCode\");\r\n if (!productCode) {\r\n console.log(`No product code ${productCode} found for product impressions`);\r\n return;\r\n }\r\n\r\n switch (productCode) {\r\n case 2:\r\n pricePlans.push(\r\n self.args.prices.HeatingOilPrices.find((x) => x.PricePlanCode === pricePlanCode)\r\n );\r\n break;\r\n case 60:\r\n pricePlans.push(self.args.prices.NatGasPrices.find((x) => x.PricePlanCode === pricePlanCode));\r\n break;\r\n case 70:\r\n pricePlans.push(\r\n self.args.prices.PropanePrices.find((x) => x.PricePlanCode === pricePlanCode)\r\n );\r\n break;\r\n case 80:\r\n pricePlans.push(\r\n self.args.prices.ElectricityPrices.find((x) => x.PricePlanCode === pricePlanCode)\r\n );\r\n break;\r\n case 200:\r\n pricePlans.push(\r\n self.args.prices.ElectricityPrices.find((x) => x.PricePlanCode === pricePlanCode)\r\n );\r\n break;\r\n }\r\n });\r\n return pricePlans;\r\n },\r\n getPlanImpressions: function ($parentEl) {\r\n const self = this;\r\n const productPrices = self.getPricePlansForImpressions($parentEl);\r\n\r\n //make sure we full copy the price object before we modify\r\n const myCopiedPrices = JSON.parse(JSON.stringify(productPrices));\r\n\r\n for (const price of myCopiedPrices) {\r\n switch (price.ProductId) {\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n case cw.appEnum.ProductCode.Electricity:\r\n price.Price = price.LifeTimeValue ?? price.Price;\r\n }\r\n }\r\n\r\n analytics.productImpressions(\r\n myCopiedPrices.map((x) =>\r\n new analytics.Ga4EnrollmentProduct(x, self.analyticListName).GetAnalyticProduct()\r\n )\r\n );\r\n },\r\n bindPlanSelection: function () {\r\n const self = this;\r\n self.args.Step = 3;\r\n\r\n var poopOverTmpl =\r\n '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content container\"></div></div>';\r\n self.$wrapperEl.find(\".bonus-rewards-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content: `<div class=\"ml10 mr10\">Redeem for gift cards towards ${self.args.brandObj.BrandName} products and your favorite retailers such as Amazon, Lowes, Target, and Walmart.<br /><br />See ${self.args.brandObj.PublicDomain}/rewards for more details.</div>`,\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n self.$wrapperEl.find(\".green-plan-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content: '<div class=\"ml10 mr10\">Every kWh Matched by Regional Green Purchases</div>',\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n self.$wrapperEl.find(\".guaranteed-savings-plan-popover\").popover({\r\n trigger: \"hover click\",\r\n html: true,\r\n template: poopOverTmpl,\r\n content: '<div class=\"ml10 mr10\">Always Lower than Utility Price to Compare</div>',\r\n placement: \"right\",\r\n container: \".cw-application\",\r\n });\r\n\r\n var propaneWasManualInput = false;\r\n self.$wrapperEl.find(\".plan-type-help-icon\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n self.$wrapperEl.find(\".no-early-term-fee-li i\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n self.$wrapperEl.find(\".early-term-fee-li i\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n self.$wrapperEl.find(\".winter-blend-wrapper\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n\r\n var $serviceTarget = self.$wrapperEl.find(\".service-target\");\r\n var $electPanel = self.$wrapperEl.find(\".elec-panel\");\r\n var $natgasPanel = self.$wrapperEl.find(\".natgas-panel\");\r\n var $oilPanel = self.$wrapperEl.find(\".oil-panel\");\r\n var $propanePanel = self.$wrapperEl.find(\".propane-panel\");\r\n var $servicePanel = self.$wrapperEl.find(\".service-panel\");\r\n var $btnGetPropanePlans = self.$wrapperEl.find(\".btn-get-propane-plans\");\r\n var $propaneRangSlider = self.$wrapperEl.find(\".propane-estimated-yearly-usage\");\r\n var $propaneProductClassSelectionWrapper = self.$wrapperEl.find(\r\n \".propane-product-selection-wrapper\"\r\n );\r\n var $propaneProductPlanWrapper = self.$wrapperEl.find(\".propane-price-results\");\r\n var $winterBlend = self.$wrapperEl.find(\".add-winter-blend\");\r\n var $btnForward = self.$wrapperEl.find(\".cw-application-plan-select .btn-forward\");\r\n\r\n var $maskedMountTarget = $(\"#masked-mount-target\");\r\n if ($maskedMountTarget.length > 0) {\r\n self.mountMaskedProductPanel($maskedMountTarget);\r\n }\r\n\r\n if (self.args.Application.DeliveryPoints[0].ContactAboutServiceContract) {\r\n self.bindServiceContractsAndEquipment($serviceTarget);\r\n }\r\n\r\n //show correct panel\r\n var $panelTop;\r\n if (self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0) {\r\n $electPanel.collapse(\"show\");\r\n self.getPlanImpressions($electPanel);\r\n $panelTop = $electPanel.closest(\".panel\").find(\".panel-top\");\r\n } else if (self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0) {\r\n $natgasPanel.collapse(\"show\");\r\n self.getPlanImpressions($natgasPanel);\r\n $panelTop = $natgasPanel.closest(\".panel\").find(\".panel-top\");\r\n } else if (self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0) {\r\n $oilPanel.collapse(\"show\");\r\n self.getPlanImpressions($oilPanel);\r\n $panelTop = $oilPanel.closest(\".panel\").find(\".panel-top\");\r\n } else if (self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0) {\r\n $propanePanel.collapse(\"show\");\r\n self.getPlanImpressions($propanePanel);\r\n $panelTop = $propanePanel.closest(\".panel\").find(\".panel-top\");\r\n } else if (self.args.Application.DeliveryPoints[0].ContactAboutServiceContract) {\r\n $servicePanel.collapse(\"show\");\r\n $panelTop = $servicePanel.closest(\".panel\").find(\".panel-top\");\r\n }\r\n self.$wrapperEl.find(\".panel-heading\").off(\"click\");\r\n self.$wrapperEl.find(\".panel-heading\").on(\"click\", function (e) {\r\n const $this = $(this);\r\n var $myParentPnl = $this.parents(\".panel\");\r\n var $myInner = $myParentPnl.find(\".panel-collapse\");\r\n\r\n if (!$myInner.hasClass(\"in\")) {\r\n self.$wrapperEl.find(\".panel\").each(function () {\r\n var $e = $(this);\r\n if (!$e.is($myParentPnl)) {\r\n var $eInner = $e.find(\".panel-collapse.in\");\r\n if ($eInner.length > 0) {\r\n $eInner.collapse(\"hide\");\r\n }\r\n }\r\n });\r\n\r\n $myInner.collapse(\"show\");\r\n self.getPlanImpressions($myInner);\r\n self.planSelectionNextButtonState();\r\n }\r\n });\r\n\r\n setTimeout(function () {\r\n cw.utility.focusElement($panelTop, self.getCwOffset());\r\n }, 250);\r\n\r\n $winterBlend.off(\"change\");\r\n $winterBlend.on(\"change\", function (e) {\r\n const $this = $(this);\r\n var $parent = $this.closest(\".oil-panel\");\r\n var isWinterBlend = $this.is(\":checked\");\r\n self.adjustPriceForWinterBlend($parent, isWinterBlend, self.args.prices.HeatingOilPrices);\r\n });\r\n\r\n var $estimatedUsageText = self.$wrapperEl.find(\".estimated-usage-text\");\r\n\r\n $propaneRangSlider.rangeslider({\r\n polyfill: false,\r\n onSlide: function (position, value) {\r\n $estimatedUsageText.html(value);\r\n },\r\n onSlideEnd: function (position, value) {\r\n $estimatedUsageText.html(value);\r\n propaneWasManualInput = true;\r\n },\r\n });\r\n\r\n self.$wrapperEl.find(\".btn-back\").off(\"click\");\r\n self.$wrapperEl.find(\".btn-back\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n\r\n let $baseUrl = sessionStorage.getItem(\"baseUrl\").replace(/\\/\\d+$/, \"\");\r\n window.history.pushState({ path: $baseUrl }, \"\", $baseUrl);\r\n\r\n let tmplArgs = {};\r\n $.extend(tmplArgs, self.args);\r\n tmplArgs = self.setSelectedProductTemplateArgs(tmplArgs, true);\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationStep1.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Find a Better Energy Plan\");\r\n\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n\r\n self.bindProductSelection(\"product-selection-target\");\r\n\r\n self.bindStep1();\r\n }\r\n );\r\n });\r\n\r\n const enablePropanePlans = function () {\r\n if (\r\n self.$wrapperEl.find(\"input.propane-ownage:checked\").length > 0 &&\r\n self.$wrapperEl.find(\"input.cbx-propane-usage:checked\").length > 0\r\n ) {\r\n $btnGetPropanePlans.removeClass(\"disabled\");\r\n } else {\r\n $btnGetPropanePlans.addClass(\"disabled\");\r\n }\r\n };\r\n enablePropanePlans();\r\n\r\n //handle product button states when products are selected\r\n\r\n let myZip = sessionStorage.getItem(\"zipCode\");\r\n\r\n self.$wrapperEl.find(\".elUrl\").click(function (e) {\r\n e.preventDefault();\r\n window.location.href = `/shop/electricity?zipCode=${myZip}`;\r\n });\r\n\r\n self.$wrapperEl.find(\".ngUrl\").click(function (e) {\r\n e.preventDefault();\r\n window.location.href = `/shop/natural-gas?zipCode=${myZip}`;\r\n });\r\n\r\n self.$wrapperEl.find(\".hoUrl\").click(function (e) {\r\n e.preventDefault();\r\n window.location.href = `/shop/heating-oil?zipCode=${myZip}`;\r\n });\r\n\r\n self.$wrapperEl.find(\".proUrl\").click(function (e) {\r\n e.preventDefault();\r\n window.location.href = `/shop/propane?zipCode=${myZip}`;\r\n });\r\n\r\n self.$wrapperEl.find(\".cw-application-plan-select\").off(\"change\", \"input\");\r\n self.$wrapperEl.find(\".cw-application-plan-select\").on(\"change\", \"input\", function (e) {\r\n const $this = $(this);\r\n var $parent = $this.closest(\".panel-collapse\");\r\n var productCode = $this.data(\"productCode\");\r\n var price = $this.data(\"unitPrice\");\r\n var priceSheetLineId = $this.data(\"priceSheetLineId\");\r\n var pricePlanId = $this.val() && $.isNumeric($this.val()) ? parseInt($this.val()) : null;\r\n var isWinterBlend = $parent.find(\".add-winter-blend:checked\").length > 0;\r\n var i;\r\n\r\n if (!$this.hasClass(\"propane-ownage\") && !$this.hasClass(\"cbx-propane-usage\")) {\r\n if ($this.is(\":checked\")) {\r\n $parent.find(\".btn-plan-forward\").removeClass(\"disabled\");\r\n }\r\n\r\n if ($this.val() === \"0\") {\r\n $parent.find(\".enrollment-select input\").each(function (e) {\r\n if ($parent.find(\".no-thanks-selection\").is(\":checked\")) {\r\n $(this).prop(\"checked\", false);\r\n $parent.find(\".add-winter-blend\").prop(\"checked\", false);\r\n }\r\n });\r\n } else {\r\n $parent.find(\".no-thanks-selection\").prop(\"checked\", false);\r\n }\r\n }\r\n\r\n if ($this.hasClass(\"propane-ownage\") || $this.hasClass(\"cbx-propane-usage\")) {\r\n enablePropanePlans();\r\n }\r\n\r\n var tankOwnership = null;\r\n var estimatedAnnualUsage = null;\r\n var usageCodes = [];\r\n\r\n if (productCode === cw.appEnum.ProductCode.Propane) {\r\n tankOwnership =\r\n self.$wrapperEl.find(\"input.propane-ownage:checked\").length > 0\r\n ? self.$wrapperEl.find(\"input.propane-ownage:checked\").val()\r\n : null;\r\n estimatedAnnualUsage = $.isNumeric($estimatedUsageText.html())\r\n ? parseInt($estimatedUsageText.html())\r\n : null;\r\n\r\n self.$wrapperEl.find(\".cbx-propane-usage:checked\").each(function () {\r\n var $me = $(this);\r\n usageCodes.push($me.val());\r\n });\r\n }\r\n\r\n if (productCode && price && priceSheetLineId && pricePlanId) {\r\n self.productSelectFunction(\r\n productCode,\r\n price,\r\n priceSheetLineId,\r\n pricePlanId,\r\n isWinterBlend,\r\n estimatedAnnualUsage,\r\n tankOwnership,\r\n usageCodes\r\n );\r\n }\r\n\r\n if ($this.hasClass(\"no-thanks-selection\")) {\r\n //delete product\r\n self.removeProduct(productCode);\r\n } else {\r\n if (pricePlanId || $this.hasClass(\"no-thanks-selection\")) {\r\n self.planSelectionNextButtonState();\r\n }\r\n }\r\n });\r\n\r\n if (!propaneWasManualInput) {\r\n const $this = $(this);\r\n var estimatedAnnualUsage = 0;\r\n self.$wrapperEl.find(\"input.cbx-propane-usage:checked\").each(function () {\r\n var $me = $(this);\r\n estimatedAnnualUsage += $me.data(\"estimated-annual-usage\");\r\n });\r\n $propaneRangSlider.val(estimatedAnnualUsage).change();\r\n $estimatedUsageText.html(estimatedAnnualUsage);\r\n }\r\n\r\n self.$wrapperEl.find(\"input.cbx-propane-usage\").off(\"change\");\r\n self.$wrapperEl.find(\"input.cbx-propane-usage\").on(\"change\", function (e) {\r\n if (!propaneWasManualInput) {\r\n const $this = $(this);\r\n var estimatedAnnualUsage = 0;\r\n self.$wrapperEl.find(\"input.cbx-propane-usage:checked\").each(function () {\r\n var $me = $(this);\r\n estimatedAnnualUsage += $me.data(\"estimated-annual-usage\");\r\n });\r\n $propaneRangSlider.val(estimatedAnnualUsage).change();\r\n $estimatedUsageText.html(estimatedAnnualUsage);\r\n }\r\n });\r\n\r\n self.$wrapperEl.find(\".btn-plan-forward\").off(\"click\");\r\n self.$wrapperEl.find(\".btn-plan-forward\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if (!$this.hasClass(\"disabled\")) {\r\n $this.closest(\".panel-collapse\").collapse(\"hide\");\r\n var $myPnl = $this.closest(\".panel\").next(\".panel\");\r\n\r\n setTimeout(function () {\r\n const $panelCollapse = $myPnl.find(\".panel-collapse\");\r\n cw.utility.focusElement($myPnl.closest(\".panel\").find(\".panel-top\"), self.getCwOffset());\r\n $panelCollapse.collapse(\"show\");\r\n self.getPlanImpressions($panelCollapse);\r\n }, 100);\r\n }\r\n });\r\n\r\n $btnGetPropanePlans.off(\"click\");\r\n $btnGetPropanePlans.on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if (!$this.hasClass(\"disabled\")) {\r\n var productCodeArgs = {\r\n TankOwnage: self.$wrapperEl.find(\"input[name=propane-ownage]:checked\").val(),\r\n ProductUsageCodes: self.$wrapperEl\r\n .find(\"input[type=checkbox].cbx-propane-usage:checked\")\r\n .map(function () {\r\n return $(this).val();\r\n })\r\n .get(),\r\n EstimatedUsage: parseInt($estimatedUsageText.html()),\r\n ProductCode: cw.appEnum.ProductCode.Propane,\r\n ProductClassXref: self.args.prices.ProductClassXref,\r\n };\r\n\r\n $propaneProductPlanWrapper.empty();\r\n $propaneProductPlanWrapper.append(self.getPropanePlansHtml(productCodeArgs, 4));\r\n $propaneProductClassSelectionWrapper.addClass(\"hidden\");\r\n $propaneProductPlanWrapper.removeClass(\"hidden\");\r\n cw.utility.focusElement($propanePanel.closest(\".panel\").find(\".panel-top\"), self.getCwOffset());\r\n\r\n self.getPlanImpressions($propaneProductPlanWrapper);\r\n }\r\n });\r\n\r\n $btnForward.off(\"click\");\r\n $btnForward.on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if (!$this.hasClass(\"disabled\")) {\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n templateArgs = self.setSelectedProductTemplateArgs(templateArgs);\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationCart.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (sideBarHtml) {\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationAccountConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n templateArgs,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Enter Your Information\");\r\n\r\n self.$wrapperEl.removeClass(\"col-xs-12\");\r\n self.$wrapperEl.addClass(\"col-xs-12 col-md-7 col-md-pull-5 col-lg-8 col-lg-pull-4\");\r\n\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n self.$wrapperEl.before(\r\n '<div class=\"sf_colsOut col-xs-12 col-md-5 col-md-push-7 col-lg-4 col-lg-push-8 side-bar-container\">' +\r\n sideBarHtml +\r\n \"</div>\"\r\n );\r\n self.$confirmationPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n self.bindAcctConfig(true);\r\n }\r\n );\r\n }\r\n );\r\n\r\n self.setAccountCfgBreadCrumbs();\r\n }\r\n });\r\n\r\n self.renderContent();\r\n self.planSelectionNextButtonState();\r\n },\r\n mountMaskedProductPanel: function ($target) {\r\n const self = this;\r\n\r\n import(\"@components/utility/htmlContent.vue\").then((htmlContent) => {\r\n if (self.mountedMaskedComponent) {\r\n self.mountedMaskedComponent.unmount();\r\n }\r\n\r\n const matchingProductMask = self.getmatchingProductMask(self.args.prices);\r\n\r\n const component = createNonRoutedApp(htmlContent.default, {\r\n htmlContent: matchingProductMask.htmlContent?.HtmlContentHtml ?? \"\",\r\n renderTemplateData: { ProductName: matchingProductMask.productName },\r\n });\r\n component.mount(`#${$target[0].id}`);\r\n\r\n self.mountedMaskedComponent = component;\r\n });\r\n },\r\n setAccountCfgBreadCrumbs: function () {\r\n if ($(document).find(\".pi.req\").length > 0) {\r\n $(\".bcProductInfo\").removeClass(\"hidden\");\r\n } else {\r\n $(\".bcProductInfo\").addClass(\"hidden\");\r\n }\r\n\r\n $(document).find(\"ol.breadcrumb li.active\").removeClass(\"active\");\r\n\r\n if ($(document).find(\".ci\").length === $(document).find(\".ci .step-done.completed\").length) {\r\n $(\".bcContact\").removeClass(\"active\").addClass(\"complete\");\r\n }\r\n if ($(document).find(\".ci\").length != $(document).find(\".ci.hidden\").length) {\r\n $(\".bcContact\").removeClass(\"complete\").addClass(\"active\");\r\n }\r\n\r\n if (\r\n $(document).find(\".pi.req\").length === $(document).find(\".pi.req .step-done.completed\").length\r\n ) {\r\n $(\".bcProductInfo\").removeClass(\"active\").addClass(\"complete\");\r\n $(\".product-remove\").addClass(\"hidden\");\r\n }\r\n if ($(document).find(\".pi.req\").length != $(document).find(\".pi.req.hidden\").length) {\r\n $(\".bcProductInfo\").removeClass(\"complete\").addClass(\"active\");\r\n }\r\n\r\n if (\r\n $(document).find(\".py.req\").length === $(document).find(\".py.req .step-done.completed\").length\r\n ) {\r\n $(\".bcPayment\").removeClass(\"active\").addClass(\"complete\");\r\n }\r\n if ($(document).find(\".py.req\").length != $(document).find(\".py.req.hidden\").length) {\r\n $(\".bcPayment\").removeClass(\"complete\").addClass(\"active\");\r\n }\r\n\r\n if ($(document).find(\".cfm\").length != $(document).find(\".cfm.hidden\").length) {\r\n $(\".bcConfirm\").removeClass(\"complete\").addClass(\"active\");\r\n }\r\n },\r\n bindCartSpecialOffers: function () {\r\n const self = this;\r\n\r\n import(\"@components/customer/specialCartOfferListing.vue\").then((cartSpecialOffers) => {\r\n if (self.cartSpecialOffersApp !== undefined) {\r\n self.cartSpecialOffersApp.unmount();\r\n }\r\n self.cartSpecialOffersApp = createNonRoutedApp(cartSpecialOffers.default, {\r\n applicationId: self.args.Application.ApplicationId,\r\n deliveryPoint: self.args.Application.DeliveryPoints[0].DeliveryPointId,\r\n inCartContracts: self.args.Application.DeliveryPoints[0].ServiceContracts,\r\n onSpecialOfferAddedToCart: (contracts, promoObject) => {\r\n self.specialOfferPromoObj = promoObject;\r\n self.args.Application.DeliveryPoints[0].ServiceContracts = contracts;\r\n self.bindAcctConfig(false);\r\n self.rebindMiniCart();\r\n },\r\n });\r\n self.cartSpecialOffersApp.mount(`#special-offers-app-target`);\r\n });\r\n },\r\n rebindMiniCart: function () {\r\n const self = this;\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n let tmplTmp = self.setSelectedProductTemplateArgs(templateArgs);\r\n\r\n //rebind acctConfig\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationAccountConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n\r\n function (acctConfigHtml) {\r\n self.$wrapperEl.append(acctConfigHtml);\r\n self.$confirmationPanel = self.$wrapperEl.find(\".confirmation-panel\");\r\n //rebind cart\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationCart.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n function (sideBarHtml) {\r\n var $sidebarParent = $(\".cart-sidebar-wrapper\").parent();\r\n $sidebarParent.empty();\r\n $sidebarParent.append(sideBarHtml);\r\n self.bindAcctConfig(false);\r\n }\r\n );\r\n }\r\n );\r\n },\r\n bindServiceContractsAndEquipment: function ($target) {\r\n const self = this;\r\n import(\"@components/products/contracts/hvacServiceContractPicker.vue\").then(\r\n (hvacServiceContractPicker) => {\r\n self.protectionPlansApp = createNonRoutedApp(hvacServiceContractPicker.default, {\r\n applicationId: this.args.Application.ApplicationId,\r\n deliveryPoint: self.args.Application.DeliveryPoints[0].DeliveryPointId,\r\n zipCode: this.args.Application.DeliveryPoints[0].ZipCode,\r\n equipmentTypes: undefined,\r\n brandTypeId: this.args.brandObj.BrandTypeId,\r\n inCartContracts: this.args.Application.DeliveryPoints[0].ServiceContracts,\r\n onAddedToCart: (contracts, configuredEquipment) => {\r\n self.args.Application.DeliveryPoints[0].ServiceContracts = contracts;\r\n if (!Array.isArray(self.allConfiguredEquipment)) {\r\n self.allConfiguredEquipment = [];\r\n }\r\n configuredEquipment?.forEach(function (eq) {\r\n self.allConfiguredEquipment.push(eq);\r\n });\r\n self.planSelectionNextButtonState();\r\n },\r\n onDeletedFromCart: (deletedAppContractIds) => {\r\n self.args.Application.DeliveryPoints[0].ServiceContracts =\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.filter(\r\n (x) => deletedAppContractIds.indexOf(x.AppContractId) <= -1\r\n );\r\n self.planSelectionNextButtonState();\r\n },\r\n onEquipmentLookupsLoaded: (equipLookups) => {\r\n self.args.equipmentLookups = equipLookups;\r\n },\r\n });\r\n self.protectionPlansApp.mount(`#${$target[0].id}`);\r\n }\r\n );\r\n },\r\n adjustPriceForWinterBlend: function ($pricePlansWrapper, isWinterBlend, prices) {\r\n const self = cw.pages.application;\r\n var $priceInput = $pricePlansWrapper.find(\"input\");\r\n $priceInput.each(function () {\r\n var $me = $(this);\r\n var $myParent = $me.closest(\".price-plan-box\");\r\n var priceSheetLineId = $me.data(\"priceSheetLineId\");\r\n if (priceSheetLineId) {\r\n var priceObj = prices.filterSingle(function (x) {\r\n if (x.PriceSheetLineId === priceSheetLineId) {\r\n return x;\r\n }\r\n });\r\n var priceFormated = \"\";\r\n var firstFillFormatted = \"\";\r\n var price = priceObj.Price;\r\n var pricePlanId = $me.val() && $.isNumeric($me.val()) ? pricePlanCode : null;\r\n\r\n if (![cw.appEnum.PricingTypeCode.Subscription].includes(priceObj.PricingTypeCode)) {\r\n var firstFill = priceObj.FirstDeliveryPrice;\r\n if (isWinterBlend) {\r\n price += priceObj.WinterBlendPriceOffset;\r\n if (firstFill) {\r\n firstFill += priceObj.WinterBlendPriceOffset;\r\n }\r\n }\r\n\r\n var priceDisplayType = cw.appEnum.PriceDisplayType.DollarsPerUnit;\r\n if (priceObj.PriceDisplayTypeId) {\r\n priceDisplayType = priceObj.PriceDisplayTypeId;\r\n }\r\n\r\n if (priceDisplayType === cw.appEnum.PriceDisplayType.DollarsPerUnit) {\r\n priceFormated = \"$\" + price.formatMoney(priceObj.NumPriceDecimalPlacesDisplay);\r\n if (firstFill) {\r\n firstFillFormatted = \"$\" + firstFill.formatMoney(priceObj.NumPriceDecimalPlacesDisplay);\r\n }\r\n } else if (priceDisplayType === cw.appEnum.PriceDisplayType.CentsPerUnit) {\r\n priceFormated =\r\n (price * 100).toFixed(priceObj.NumPriceDecimalPlacesDisplay) + \"<sup>¢</sup>\";\r\n if (firstFill) {\r\n firstFillFormatted =\r\n (firstFill * 100).toFixed(priceObj.NumPriceDecimalPlacesDisplay) + \"<sup>¢</sup>\";\r\n }\r\n }\r\n\r\n $myParent.find(\".price\").html(priceFormated);\r\n if (firstFill) {\r\n $myParent.find(\".first-fill-price\").html(firstFillFormatted);\r\n }\r\n }\r\n\r\n if ($me.is(\":checked\")) {\r\n var productCode = $me.data(\"productCode\");\r\n //is winter blend, propane extra args are null/empty\r\n if (self.args && typeof self.args.prices !== \"undefined\") {\r\n self.productSelectFunction(\r\n productCode,\r\n price,\r\n priceSheetLineId,\r\n pricePlanId,\r\n isWinterBlend,\r\n null,\r\n null,\r\n []\r\n );\r\n }\r\n }\r\n\r\n //handle vue app winterblend toggle\r\n var vueApp = self.planDetailCache.find((x) => x.priceSheetLineId === priceSheetLineId);\r\n var pricePlan = self.getPriceByPricePlanPriceSheetLine({\r\n productPricePlans: self.getPricesByProductCode(cw.appEnum.ProductCode.HeatingOil),\r\n pricePlanCode: pricePlanId,\r\n pricePlanSheetLineId: priceSheetLineId,\r\n });\r\n if (vueApp && vueApp.app && pricePlanId && pricePlan) {\r\n vueApp.app.unmount();\r\n\r\n let attributeList = [...pricePlan.MarketingAttributes];\r\n const filteredAttributes = self.filterMarketingAttributesForWinterBlend(\r\n attributeList,\r\n isWinterBlend\r\n );\r\n self.mountPricePlanAttributes(pricePlan, priceSheetLineId, pricePlanId, filteredAttributes);\r\n }\r\n }\r\n });\r\n },\r\n filterMarketingAttributesForWinterBlend: function (attributeList, isWinterBlend) {\r\n const self = this;\r\n var winterBlendAttribute = attributeList.find(\r\n (x) => x.PricePlanAttributeId === self.winterBlendPricePlanAttributeId\r\n );\r\n var marketingAttributes = attributeList.filter(\r\n (x) => x.PricePlanAttributeId !== self.winterBlendPricePlanAttributeId\r\n );\r\n\r\n if (isWinterBlend && winterBlendAttribute) {\r\n attributeList = marketingAttributes;\r\n }\r\n return attributeList;\r\n },\r\n filterMarketingAttributesForWorryFree: function (attributeList, isWorryFree) {\r\n const self = this;\r\n var worryFreeAttribute = attributeList.find(\r\n (x) => x.PricePlanAttributeId === self.worryFreeRenewalAttributeId\r\n );\r\n var marketingAttributes = attributeList.filter(\r\n (x) => x.PricePlanAttributeId !== self.worryFreeRenewalAttributeId\r\n );\r\n\r\n if (!isWorryFree && worryFreeAttribute) {\r\n attributeList = marketingAttributes;\r\n }\r\n return attributeList;\r\n },\r\n showExistingCustomerModal: function (e) {\r\n const self = cw.pages.application;\r\n e.preventDefault();\r\n\r\n analytics.setExistingCustomer(\"Y\");\r\n\r\n cw.modal.Open({\r\n title: \"Are You an Existing Customer?\",\r\n modalBody: $(\r\n `<div class=\"msg-wrapper text-center\"><h3 class=\"text-center mt15\">Existing Customers</h3><p>If you're already a ${self.args.brandObj.BrandName} customer, please <a href=\"/account\">login</a> to your account to add services, or call Customer Care to make changes.</p><a href=\"tel:${self.args.CustomerService800Number}\" class=\"btn btn-primary mt15 mb20\">${self.args.brandObj.CustomerService800NumberFormatted}</button></div>`\r\n ),\r\n buttons: [],\r\n size: BootstrapDialog.SIZE_WIDE,\r\n });\r\n },\r\n bindStep1: function () {\r\n const self = this;\r\n self.args.Step = 1;\r\n cw.utility.focusElement(self.$wrapperEl.find(\".step-top\"), self.getCwOffset());\r\n var $promoText = self.$wrapperEl.find(\".promo-code\");\r\n var $promoWrapper = self.$wrapperEl.find(\".promo-wrapper\");\r\n var $zip = self.$wrapperEl.find(\".zip-code\");\r\n var $zipSubmitBtn = self.$wrapperEl.find(\".btn-submit-zip\");\r\n var $zipIcon = $zipSubmitBtn.find(\".zip-icon\");\r\n var $zipLoadingInd = $zipSubmitBtn.find(\".loading-ind\");\r\n var $productWrapper = self.$wrapperEl.find(\".product-wrapper\");\r\n var $productSelectionTarget = $productWrapper.find(\".product-selection-target\");\r\n var $nextWrapper = self.$wrapperEl.find(\".next-wrapper\");\r\n var $nextBtn = self.$wrapperEl.find(\".btn-next\");\r\n var $zipErr = self.$wrapperEl.find(\".zipError\");\r\n var $promoErr = self.$wrapperEl.find(\".promo-error\");\r\n var $existingCustomerBtn = self.$wrapperEl.find(\".btn-existing-customer\");\r\n var $promoApplyBtn = self.$wrapperEl.find(\".promo-input-group button\");\r\n var $productSelectTitle = self.$wrapperEl.find(\".product-select-title\");\r\n var $commercialPricing = self.$wrapperEl.find(\".commercial-pricing\");\r\n var $commercialPricingWrapper = self.$wrapperEl.find(\".commercial-pricing-wrapper\");\r\n\r\n var $changeZip = self.$wrapperEl.find(\".change-zip\");\r\n var $selectedZipCode = self.$wrapperEl.find(\".selected-zip-code\");\r\n var $zipInputContainer = self.$wrapperEl.find(\".zip-input-container\");\r\n var $zipInputSuccess = self.$wrapperEl.find(\".zip-input-success\");\r\n\r\n const $setUrl = $(location).attr(\"href\");\r\n const $baseUrl = $setUrl.replace(/\\/\\d+$/, \"\");\r\n sessionStorage.setItem(\"baseUrl\", $baseUrl);\r\n window.history.pushState({ path: $baseUrl }, \"\", $baseUrl);\r\n var zipUrl = () => {\r\n let $myUrl = undefined;\r\n var $startUrl = $baseUrl;\r\n var myZip = $zip.val();\r\n sessionStorage.setItem(\"zipCode\", myZip);\r\n if ($startUrl.includes(\"zipCode=\")) {\r\n $myUrl = $startUrl.replace(/zipCode=?\\d+/, `zipCode=${myZip}`);\r\n } else if ($startUrl.includes(\"?\")) {\r\n $myUrl = `${$startUrl}&zipCode=${myZip}`;\r\n } else {\r\n $myUrl = `${$startUrl}?zipCode=${myZip}`;\r\n }\r\n\r\n window.history.pushState({ path: $myUrl }, \"\", $myUrl);\r\n };\r\n\r\n self.bindProductSelection(\"product-selection-target\");\r\n\r\n $changeZip.on(\"click\", function (e) {\r\n e.preventDefault();\r\n $zipInputSuccess.addClass(\"hidden\");\r\n $zipInputContainer.removeClass(\"hidden\");\r\n });\r\n\r\n self.$wrapperEl.find(\".promo-toggle\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n $promoWrapper.toggleClass(\"hidden\");\r\n });\r\n\r\n self.$wrapperEl.find(\"input\").first().focus();\r\n\r\n $existingCustomerBtn.off(\"click\");\r\n $existingCustomerBtn.on(\"click\", self.showExistingCustomerModal);\r\n\r\n const invalidateZipSelection = function () {\r\n $zipSubmitBtn.addClass(\"disabled\");\r\n $productSelectTitle.addClass(\"hidden\");\r\n $nextWrapper.addClass(\"hidden\");\r\n $productSelectionTarget.empty();\r\n };\r\n\r\n const zipBtnState = function () {\r\n var myZip = $zip.val();\r\n if (self.zipRegEx.test(myZip)) {\r\n $zipSubmitBtn.removeClass(\"disabled\");\r\n } else {\r\n invalidateZipSelection();\r\n }\r\n };\r\n\r\n zipBtnState();\r\n\r\n const applyPromoFunc = function (successCallback) {\r\n cw.webservices.getJson(\r\n \"Promos/validate-promo-code-and-add-to-application/\" + self.args.Application.ApplicationId,\r\n $.trim($promoText.val()),\r\n function (validationResp) {\r\n var msg = \"\";\r\n switch (validationResp.Response) {\r\n case self.promoCodeValidationResponse.Valid:\r\n self.args.Application.S1PromoCodeId = validationResp.S1PromoCodeId;\r\n self.args.Application.PromoCode = {\r\n Code: validationResp.CodeText,\r\n PromoCodeId: validationResp.S1PromoCodeId,\r\n };\r\n\r\n analytics.addPromotion(validationResp.CodeText);\r\n msg = \"Promo code applied\";\r\n if (typeof successCallback === \"function\") {\r\n successCallback();\r\n }\r\n break;\r\n case self.promoCodeValidationResponse.PromoExpired:\r\n msg = \"Promo code has expired\";\r\n break;\r\n case self.promoCodeValidationResponse.PromoNotFound:\r\n msg = \"Promo code not found\";\r\n break;\r\n }\r\n\r\n $promoErr.html(msg);\r\n }\r\n );\r\n };\r\n\r\n $zip.on(\"keydown\", function (e) {\r\n if (e.keyCode === 13) {\r\n $zipSubmitBtn.click();\r\n }\r\n });\r\n\r\n $zip.on(\"keyup keypress change blur\", function (e) {\r\n zipBtnState();\r\n });\r\n\r\n $zip.on(\"paste\", function (e) {\r\n invalidateZipSelection();\r\n });\r\n\r\n $promoApplyBtn.on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n\r\n $this.addClass(\"disabled\");\r\n var $btnIcon = $this.find(\".btn-icon\");\r\n var $btnLoadingInd = $this.find(\".loading-ind\");\r\n $btnIcon.addClass(\"hidden\");\r\n $btnLoadingInd.removeClass(\"hidden\");\r\n\r\n applyPromoFunc(function () {\r\n $btnLoadingInd.addClass(\"hidden\");\r\n $btnIcon.removeClass(\"hidden\");\r\n $this.removeClass(\"disabled\");\r\n });\r\n });\r\n\r\n $commercialPricing.on(\"click\", function (e) {\r\n analytics.addZipCode(null, S1CustomerType.Commercial);\r\n\r\n return true;\r\n });\r\n\r\n $zipSubmitBtn.on(\"click\", function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n\r\n var d = {\r\n ApplicationId: self.args.Application.ApplicationId,\r\n DeliveryPointId: 0,\r\n ZipCode: $zip.val(),\r\n ElectricProducts: [],\r\n Equipment: [],\r\n HeatingOilProducts: [],\r\n NatGasProducts: [],\r\n PropaneProducts: [],\r\n ServiceContracts: [],\r\n ServiceOrders: [],\r\n };\r\n\r\n $commercialPricingWrapper.addClass(\"hidden\");\r\n\r\n $zipErr.html(\"\");\r\n $promoErr.html(\"\");\r\n\r\n const submitStep1 = function () {\r\n if (self.zipRegEx.test(d.ZipCode)) {\r\n $this.addClass(\"disabled\");\r\n\r\n $zipIcon.addClass(\"hidden\");\r\n $zipLoadingInd.removeClass(\"hidden\");\r\n\r\n let custType = 1; //smallbusiness vs residential\r\n self.args.Application.CustomerType = custType;\r\n\r\n analytics.addZipCode(d.ZipCode, custType);\r\n\r\n self.args.Application.CustomerTypeText =\r\n custType === 1 ? \"Residential\" : custType === 2 ? \"Commercial\" : \"U\";\r\n\r\n cw.webservices.getJson(\r\n \"CustomerApplication/zip-enrollment-save-application-delivery-point\",\r\n {\r\n deliveryPoint: d,\r\n customerType: custType,\r\n },\r\n function (zipPricing) {\r\n if (zipPricing) {\r\n self.args.isExpressCheckout = false;\r\n\r\n d.CountyId =\r\n zipPricing.County.length && zipPricing.County[0].CountyId\r\n ? zipPricing.County[0].CountyId\r\n : null;\r\n d.State = zipPricing.SelectedStateAbbr ? zipPricing.SelectedStateAbbr : null;\r\n\r\n self.args.Application.DeliveryPoints = [d];\r\n self.args.prices = zipPricing;\r\n\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n self.setSelectedProductTemplateArgs(templateArgs);\r\n\r\n $selectedZipCode.html(d.ZipCode);\r\n $zipInputContainer.addClass(\"hidden\");\r\n $zipInputSuccess.removeClass(\"hidden\");\r\n zipUrl();\r\n self.bindProductSelection(\"product-selection-target\");\r\n } else {\r\n //handle if we could not get pricing\r\n $zipSubmitBtn.removeClass(\"disabled\");\r\n $zipLoadingInd.addClass(\"hidden\");\r\n $zipIcon.removeClass(\"hidden\");\r\n $zipErr.html(\"It appears as if we could not determine pricing for your area.\");\r\n }\r\n }\r\n );\r\n } else {\r\n $zipErr.html(\r\n \"Zip code does not appear valid. Should be a 5 digit number like <em>17403</em>.\"\r\n );\r\n }\r\n };\r\n\r\n if ($.trim($promoText.val()) !== \"\") {\r\n applyPromoFunc(function () {\r\n submitStep1();\r\n });\r\n } else {\r\n submitStep1();\r\n }\r\n });\r\n },\r\n bindProductSelection: function (targetElId) {\r\n const self = this;\r\n const $nextBtn = self.$wrapperEl.find(\".btn-next\");\r\n\r\n import(\"@components/products/productTypeMultiSelect.vue\").then((prodMultiSelect) => {\r\n if (self.productTypeMultiSelectApp !== undefined) {\r\n self.productTypeMultiSelectApp.unmount();\r\n }\r\n self.productTypeMultiSelectApp = createNonRoutedApp(prodMultiSelect.default, {\r\n brandTypeId: self.args.brandObj.brandTypeId,\r\n prices: self.args.prices,\r\n zipCode: self.args.Application?.DeliveryPoints[0]?.ZipCode,\r\n productsSelected: self.getProductListFromApplicant(),\r\n onNextButtonClicked: (productTypes, electUtility, ngUtility) => {\r\n for (let el in [\r\n \"ElectricProducts\",\r\n \"NatGasProducts\",\r\n \"HeatingOilProducts\",\r\n \"PropaneProducts\",\r\n ]) {\r\n if (typeof self.args.Application.DeliveryPoints[0][el] === \"undefined\") {\r\n self.args.Application.DeliveryPoints[0][el] = [];\r\n }\r\n }\r\n\r\n const updateAppProduct = (prodEnum, utilObj, appProductEntity) => {\r\n const appEntity = self.args.Application.DeliveryPoints[0][appProductEntity];\r\n if (productTypes.includes(prodEnum)) {\r\n const prod = {\r\n ApplicationId: self.args.Application.ApplicationId,\r\n DeliveryPointId: 0,\r\n };\r\n\r\n if ((utilObj?.UtilityCode ?? \"\").trim() !== \"\") {\r\n prod.ProductUtilityCode = utilObj.UtilityCode;\r\n }\r\n\r\n if (appEntity.length < 1) {\r\n appEntity.push(prod);\r\n } else {\r\n appEntity[0] = prod;\r\n }\r\n } else if (appEntity.length > 0) {\r\n self.deleteProduct(self.args.Application.ApplicationId, 0, prodEnum, function () {});\r\n }\r\n };\r\n\r\n //sync protection plan state\r\n const dp = self.args.Application.DeliveryPoints[0];\r\n if (productTypes.includes(cw.appEnum.ProductCode.ServiceProduct)) {\r\n dp.ContactAboutServiceContract = true;\r\n dp.ContactedAboutServiceContractDate = null;\r\n } else {\r\n if ((dp.ServiceContracts?.length ?? 0) > 0) {\r\n dp.ServiceContracts.forEach(function (sc) {\r\n self.deleteContract(sc.AppContractId);\r\n });\r\n }\r\n\r\n dp.ContactAboutServiceContract = false;\r\n }\r\n\r\n //update the rest of the products\r\n updateAppProduct(cw.appEnum.ProductCode.Electricity, electUtility, \"ElectricProducts\");\r\n updateAppProduct(cw.appEnum.ProductCode.NaturalGas, ngUtility, \"NatGasProducts\");\r\n updateAppProduct(cw.appEnum.ProductCode.HeatingOil, undefined, \"HeatingOilProducts\");\r\n updateAppProduct(cw.appEnum.ProductCode.Propane, undefined, \"PropaneProducts\");\r\n\r\n let templateArgs = {};\r\n $.extend(templateArgs, self.args);\r\n\r\n let tmplTmp = self.setSelectedProductTemplateArgs(templateArgs);\r\n self.saveProducts(function (numSaved) {\r\n if (!numSaved) {\r\n return;\r\n }\r\n\r\n tmplTmp.showPlanButton = true;\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPropaneSubclassConfig.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n function (renderedHtml) {\r\n tmplTmp.propaneSubclassSelector = renderedHtml;\r\n\r\n cw.templating.GetRenderedTemplateHTML(\r\n \"CwApplicationPlanSelection.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n tmplTmp,\r\n function (renderedHtml) {\r\n self.setPageHeader(\"Select Energy Plan\");\r\n self.$wrapperEl.empty().append(renderedHtml);\r\n self.bindPlanSelection();\r\n }\r\n );\r\n }\r\n );\r\n });\r\n },\r\n onProductTypeSelectionValid: () => {\r\n $nextBtn.removeClass(\"disabled\");\r\n },\r\n onProductTypeSelectionInvalid: () => {\r\n $nextBtn.addClass(\"disabled\");\r\n },\r\n });\r\n $(\".product-wrapper\").removeClass(\"hidden\");\r\n self.productTypeMultiSelectApp.mount(`#${targetElId}`);\r\n });\r\n },\r\n renderContent: function () {\r\n const self = this;\r\n if (!self.args.ContentWidgets || self.args.ContentWidgets.length === 0) {\r\n return;\r\n }\r\n tryMountWidgetContent(self.args.ContentWidgets);\r\n },\r\n filterBogoPlans: function (pricePlans, productCodeArgs) {\r\n var bogoPlans = pricePlans.filter((x) => x.HasBogoAdjustment);\r\n\r\n var propaneBogoRequirements =\r\n productCodeArgs &&\r\n productCodeArgs.ProductCode === cw.appEnum.ProductCode.Propane &&\r\n productCodeArgs.EstimatedUsage >= 600 &&\r\n productCodeArgs.ProductUsageCodes &&\r\n productCodeArgs.ProductUsageCodes.includes(\"MH\");\r\n var heatingOilBogoRequirements =\r\n productCodeArgs && productCodeArgs.ProductCode === cw.appEnum.ProductCode.HeatingOil;\r\n var bogoRestrictions =\r\n (propaneBogoRequirements || heatingOilBogoRequirements) && bogoPlans && bogoPlans.length > 0;\r\n\r\n //These plans should be show only if these restrictions are met, if not, remove plans from list\r\n if (bogoRestrictions) {\r\n var pricePlanTypes = bogoPlans.map((x) => x.PricingTypeCode);\r\n pricePlans = pricePlans.filter(function (pp) {\r\n if (pricePlanTypes.includes(pp.PricingTypeCode)) {\r\n if (!bogoPlans.map((x) => x.PriceSheetLineId).includes(pp.PriceSheetLineId)) {\r\n return false;\r\n }\r\n }\r\n return pp;\r\n });\r\n } else if (bogoPlans) {\r\n pricePlans = pricePlans.filter((pp) => {\r\n if (bogoPlans.map((x) => x.PriceSheetLineId).includes(pp.PriceSheetLineId)) {\r\n return false;\r\n }\r\n return pp;\r\n });\r\n }\r\n return pricePlans;\r\n },\r\n\r\n getPropanePlansHtml: function (productCodeArgs, plansPerRow) {\r\n const self = this;\r\n var myPlans = [];\r\n\r\n //if the prices were modified by hitting the back button, we will have original pricing to key off of\r\n var pricePlans = self.args.prices.OriginalPropanePrices ?? self.args.prices.PropanePrices;\r\n self.args.prices.OriginalPropanePrices = pricePlans;\r\n\r\n //#region TEMPORARY - This is to be re-implemented better in the future\r\n pricePlans = self.filterBogoPlans(pricePlans, productCodeArgs);\r\n //#endregion TEMPORARY\r\n\r\n myPlans = pricePlans\r\n .filter(function (pp) {\r\n if (\r\n pp.MinEstimatedUsage <= productCodeArgs.EstimatedUsage &&\r\n (!pp.MaxEstimatedUsage || pp.MaxEstimatedUsage >= productCodeArgs.EstimatedUsage)\r\n ) {\r\n if (pp.PricingTypeCode == cw.appEnum.PricingTypeCode.WillCallCashPrice) {\r\n return productCodeArgs.TankOwnage === \"C\";\r\n }\r\n return pp;\r\n }\r\n })\r\n .map(function (pp) {\r\n var myPP = $.extend({}, pp);\r\n myPP.isSelected = self.args.Application.DeliveryPoints[0].PropaneProducts.some(function (x) {\r\n return x.PriceSheetLineId === myPP.PriceSheetLineId;\r\n });\r\n if (productCodeArgs.TankOwnage === \"C\") {\r\n myPP.Price = myPP.PriceWithOffset;\r\n myPP.PriceFormatted = cw.utility.formatAsMoney(\r\n myPP.Price,\r\n myPP.PriceDisplayTypeId,\r\n myPP.NumPriceDecimalPlacesDisplay\r\n );\r\n myPP.PriceHtmlFormatted = myPP.PriceFormatted;\r\n myPP.FirstDeliveryPrice = myPP.FirstDeliveryPrice ? myPP.FirstDeliveryPriceWithOffset : null;\r\n myPP.FirstDeliveryPriceFormatted = myPP.FirstDeliveryPrice\r\n ? cw.utility.formatAsMoney(\r\n myPP.FirstDeliveryPrice,\r\n myPP.PriceDisplayTypeId,\r\n myPP.NumPriceDecimalPlacesDisplay\r\n )\r\n : null;\r\n }\r\n\r\n return myPP;\r\n });\r\n self.args.prices.PropanePrices = myPlans;\r\n\r\n return self.renderPricePlans(self.args.appPricePlanTmpl, myPlans, plansPerRow, true);\r\n },\r\n sortByPriceSortOrder: function (a, b) {\r\n if (a.PriceSortOrder < b.PriceSortOrder) {\r\n return -1;\r\n } else if (a.PriceSortOrder > b.PriceSortOrder) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n },\r\n renderPricePlans: function (tmpl, data, maxNumPerRow, condensePlanHighlights) {\r\n const self = cw.pages.application;\r\n var rtn = \"\";\r\n data.sort(self.sortByPriceSortOrder);\r\n\r\n var pp = [];\r\n if (data.length > maxNumPerRow) {\r\n pp = data.chunk(maxNumPerRow);\r\n } else {\r\n pp = [data];\r\n maxNumPerRow = data.length;\r\n }\r\n\r\n pp.forEach(function (x) {\r\n rtn += '<div class=\"row row-centered plan-row d-flex justify-content-around\">';\r\n x.forEach(function (y) {\r\n switch (y.PricingTypeCode) {\r\n case 3:\r\n y.ChartFooter = \"Capped Rate\";\r\n break;\r\n case 1:\r\n y.ChartFooter = \"Current Price\";\r\n break;\r\n default:\r\n //nothing\r\n break;\r\n }\r\n y.condenseHighlights = condensePlanHighlights;\r\n\r\n if (y.PriceToCompare && y.PriceToCompare < y.Price) {\r\n y.PriceToCompare = null;\r\n y.PriceToCompareFormatted = null;\r\n }\r\n\r\n rtn += Mustache.to_html(tmpl, y);\r\n });\r\n rtn += \"</div>\";\r\n });\r\n\r\n self.renderContent();\r\n\r\n return rtn;\r\n },\r\n removeProduct: function (productCode, pricePlanId, successCallback) {\r\n const self = this;\r\n const $this = $(this);\r\n switch (productCode) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n case cw.appEnum.ProductCode.Propane:\r\n case cw.appEnum.ProductCode.Electricity:\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n self.deleteProduct(self.args.Application.ApplicationId, 0, productCode, function () {\r\n //see if we can move to the next step\r\n if (pricePlanId || $this.hasClass(\"no-thanks-selection\")) {\r\n self.planSelectionNextButtonState();\r\n }\r\n\r\n if (typeof successCallback === \"function\") {\r\n successCallback();\r\n }\r\n });\r\n break;\r\n case cw.appEnum.ProductCode.ServiceProduct:\r\n self.args.Application.DeliveryPoints[0].ContactAboutServiceContract = false;\r\n cw.webservices.getJson(\r\n \"CustomerApplication/dismiss-contact-about-service-contract/\" +\r\n self.args.Application.ApplicationId,\r\n null,\r\n function () {\r\n //see if we can move to the next step\r\n if (pricePlanId || $this.hasClass(\"no-thanks-selection\")) {\r\n self.planSelectionNextButtonState();\r\n }\r\n self.deleteContract(pricePlanId, successCallback);\r\n }\r\n );\r\n break;\r\n }\r\n },\r\n deleteContract: function (appContractId, successCallback) {\r\n if (appContractId <= 0) {\r\n return;\r\n }\r\n\r\n cw.webservices.getJson(\r\n \"CustomerApplication/delete-service-contract\",\r\n {\r\n ApplicationId: this.args.Application.ApplicationId,\r\n AppContractId: appContractId,\r\n DeleteReferencedEquipment: true,\r\n },\r\n function () {\r\n if (typeof successCallback === \"function\") {\r\n successCallback();\r\n }\r\n }\r\n );\r\n },\r\n removeItemFromCart: function (productCode, cartItemIdentifier) {\r\n const self = this;\r\n cw.modal.Confirm({\r\n title: \"Remove From Cart\",\r\n text: \"Are you sure you would to remove this item from your cart?\",\r\n successCallback: function (modalRef) {\r\n cw.loadingIndicator.start();\r\n $(\".cw-application-acct-config, .cart-sidebar-wrapper\").css({ opacity: 0.25 });\r\n self.removeProduct(productCode, cartItemIdentifier, function () {\r\n location.reload();\r\n });\r\n },\r\n });\r\n },\r\n setSelectedProductTemplateArgs: function (templateArgs, backButtonClicked = false) {\r\n const self = this;\r\n var i;\r\n var selectedNgUtil = null;\r\n\r\n templateArgs.brandObj = self.args.brandObj;\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode\r\n ) {\r\n selectedNgUtil = self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode;\r\n\r\n var ngUtilObj = self.args.prices.NatGasUtilities.filterSingle(function (x) {\r\n if (x.UtilityCode === selectedNgUtil) {\r\n return x;\r\n }\r\n });\r\n\r\n if (ngUtilObj) {\r\n templateArgs.SelectedNatGasUtilityName = ngUtilObj.UtilityName;\r\n }\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n self.args.prices.NatGasUtilities &&\r\n self.args.prices.NatGasUtilities.length === 1\r\n ) {\r\n selectedNgUtil = self.args.prices.NatGasUtilities[0].UtilityCode;\r\n templateArgs.SelectedNatGasUtilityName = self.args.prices.NatGasUtilities[0].UtilityName;\r\n } else {\r\n templateArgs.SelectedNatGasUtilityName = null;\r\n }\r\n\r\n var selectedElectUtil = null;\r\n if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode\r\n ) {\r\n selectedElectUtil =\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode;\r\n\r\n var elUtilObj = self.args.prices.ElectricUtilities.filterSingle(function (x) {\r\n if (x.UtilityCode === selectedElectUtil) {\r\n return x;\r\n }\r\n });\r\n\r\n if (elUtilObj) {\r\n templateArgs.SelectedElectricUtilityName = elUtilObj.UtilityName;\r\n }\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n self.args.prices.ElectricUtilities &&\r\n self.args.prices.ElectricUtilities.length === 1\r\n ) {\r\n selectedElectUtil = self.args.prices.ElectricUtilities[0].UtilityCode;\r\n templateArgs.SelectedElectricUtilityName = self.args.prices.ElectricUtilities[0].UtilityName;\r\n } else {\r\n templateArgs.SelectedElectricUtilityName = null;\r\n }\r\n\r\n var oilSelected = self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0;\r\n var propaneSelected = self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0;\r\n var shipleyProducts = [];\r\n var otherShipleyProducts = [];\r\n var hasWillCallProduct = false;\r\n var numSelectedProducts = 0;\r\n templateArgs.hasShipleyServices =\r\n self.args.prices &&\r\n ((self.args.prices.HeatingOilPrices && self.args.prices.HeatingOilPrices.length > 0) ||\r\n (self.args.prices.PropanePrices && self.args.prices.PropanePrices.length > 0) ||\r\n self.args.prices.ZipSupportsServiceContract);\r\n templateArgs.Shipley800 = self.args.Shipley800;\r\n templateArgs.isExpressCheckout = self.args.isExpressCheckout;\r\n\r\n templateArgs.requiresCreditCheck = self.requiresCreditCheck;\r\n\r\n templateArgs.highlightedProductCssClass = self.args.highlightedProductCssClass;\r\n\r\n if (typeof templateArgs.maxPricePlansPerRow === \"undefined\" || !templateArgs.maxPricePlansPerRow) {\r\n templateArgs.maxPricePlansPerRow = 4;\r\n }\r\n\r\n templateArgs.isSmallBusiness =\r\n self.args.Application.CustomerClassification &&\r\n self.args.Application.CustomerClassification === cw.appEnum.CustomerClass.SmallBusiness;\r\n templateArgs.isResidential =\r\n !self.args.Application.CustomerClassification ||\r\n (self.args.Application.CustomerClassification &&\r\n self.args.Application.CustomerClassification === cw.appEnum.CustomerClass.Residential) ||\r\n !templateArgs.isSmallBusiness;\r\n\r\n templateArgs.hasAllProductsSelected = true;\r\n\r\n templateArgs.FirstName = self.args.Application.FirstName;\r\n templateArgs.LastName = self.args.Application.LastName;\r\n templateArgs.CompanyName = self.args.Application.CompanyName;\r\n\r\n templateArgs.ApplicantDateOfBirth = self.args.Application.ApplicantDateOfBirth;\r\n templateArgs.PhoneNumber = self.args.Application.BestContactPhone\r\n ? self.args.Application.BestContactPhone.formatAsPhone()\r\n : \"\";\r\n templateArgs.BestContactPhoneFormatted = self.args.Application.BestContactPhone\r\n ? self.args.Application.BestContactPhone.formatAsPhone()\r\n : \"\";\r\n templateArgs.EmailAddress = self.args.Application.EmailAddress;\r\n templateArgs.SpecialOffersByEmail =\r\n self.args.Application.SpecialOffersByEmail === null ||\r\n typeof self.args.Application.SpecialOffersByEmail === \"undefined\"\r\n ? true\r\n : self.args.Application.SpecialOffersByEmail;\r\n templateArgs.FuturePriceOptions = self.args.Application.FuturePricingOptionsByEmail;\r\n\r\n templateArgs.SpecialOffersByTextMessaging = self.args.Application.SpecialOffersByTextMessaging;\r\n templateArgs.SpecialOffersByTextMessagingWC = self.args.Application.SpecialOffersByTextMessagingWC;\r\n\r\n templateArgs.DeliveryState = self.args.Application.DeliveryPoints[0].State;\r\n templateArgs.DeliveryAddressLine1 = self.args.Application.DeliveryPoints[0].AddressLine1;\r\n templateArgs.DeliveryAddressLine2 = self.args.Application.DeliveryPoints[0].AddressLine2;\r\n templateArgs.DeliveryCity = self.args.Application.DeliveryPoints[0].City;\r\n templateArgs.DeliveryState = self.args.Application.DeliveryPoints[0].State;\r\n templateArgs.DeliveryZipCode = self.args.Application.DeliveryPoints[0].ZipCode;\r\n templateArgs.DeliveryInstructions = self.args.Application.DeliveryPoints[0].SpecialInstructions\r\n ? self.args.Application.DeliveryPoints[0].SpecialInstructions\r\n : self.args.Application.DeliveryPoints[0].DeliveryDirections;\r\n templateArgs.PropertyOwnershipOwn = self.args.Application.DeliveryPoints[0].PropertyStatus === \"O\";\r\n templateArgs.PropertyOwnershipRent = self.args.Application.DeliveryPoints[0].PropertyStatus === \"R\";\r\n\r\n templateArgs.BillingAddressLine1 = self.args.Application.AddressLine1;\r\n templateArgs.BillingAddressLine2 = self.args.Application.AddressLine2;\r\n templateArgs.BillingCity = self.args.Application.City;\r\n templateArgs.BillingState = self.args.Application.State;\r\n templateArgs.BillingZipCode = self.args.Application.ZipCode;\r\n\r\n if (self.args.Application.PromoCode && self.args.Application.PromoCode.Code) {\r\n templateArgs.promoCode = self.args.Application.PromoCode.Code;\r\n }\r\n\r\n var lang = [];\r\n $.extend(lang, self.args.languages);\r\n\r\n lang = lang.map(function (x) {\r\n x.isSelected =\r\n self.args.Application.LanguageId && self.args.Application.LanguageId === x.LanguageId;\r\n return x;\r\n });\r\n templateArgs.languages = lang;\r\n\r\n templateArgs.hasElectricSelection =\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 ||\r\n self.args.preselectedProduct === cw.appEnum.ProductCode.Electricity;\r\n templateArgs.hasNatGasSelection =\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 ||\r\n self.args.preselectedProduct === cw.appEnum.ProductCode.NaturalGas;\r\n templateArgs.hasOilSelection =\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 ||\r\n self.args.preselectedProduct === cw.appEnum.ProductCode.HeatingOil;\r\n templateArgs.hasPropaneSelection =\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 ||\r\n self.args.preselectedProduct === cw.appEnum.ProductCode.Propane;\r\n templateArgs.hasServicePlanSelection =\r\n self.args.Application.ContactAboutServiceContract ||\r\n (self.args.Application.DeliveryPoints[0].ContactAboutServiceContract &&\r\n !self.args.Application.DeliveryPoints[0].ContactedAboutServiceContractDate) ||\r\n (typeof self.args.Application.DeliveryPoints[0].ServiceContracts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.length > 0) ||\r\n self.args.preselectedProduct === cw.appEnum.ProductCode.ServiceProduct;\r\n templateArgs.PropaneAnnualUsage =\r\n self.args.Application.DeliveryPoints[0] &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0]\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts[0].AnnualUsage\r\n : null;\r\n\r\n templateArgs.hasSelectedElectricProduct =\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PricingPlanId;\r\n\r\n templateArgs.hasProductsInZip =\r\n self.args.prices &&\r\n (self.args.prices.ElectricityPrices.length > 0 ||\r\n self.args.prices.NatGasPrices.length > 0 ||\r\n self.args.prices.HeatingOilPrices.length > 0 ||\r\n self.args.prices.PropanePrices.length > 0 ||\r\n self.args.prices.ZipSupportsServiceContract);\r\n\r\n if (\r\n templateArgs.hasElectricSelection &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0\r\n ) {\r\n self.args.prices.ElectricUtilities = self.args.prices.ElectricUtilities.map(function (x) {\r\n x.isSelected =\r\n x.UtilityCode ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode;\r\n return x;\r\n });\r\n }\r\n\r\n if (templateArgs.hasSelectedElectricProduct) {\r\n self.args.prices.ElectricityPrices = self.args.prices.ElectricityPrices.map(function (x) {\r\n x.isSelected =\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId;\r\n return x;\r\n });\r\n var util = self.args.prices.ElectricUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (util) {\r\n if (util.UtilityName == \"Duke Energy (Elec)\") {\r\n templateArgs.isDuke = util.UtilityName;\r\n }\r\n if (util.UtilityName == \"AEP Ohio\") {\r\n templateArgs.isAep = util.UtilityName;\r\n }\r\n templateArgs.SelectedElectricUtilityName = util.UtilityName;\r\n templateArgs.SelectedElectricUtilityLdcNumDigits = util.UtilityAccountNumberLength;\r\n templateArgs.SelectedElectricUtilityAccountNumberDescription =\r\n util.UtilityAccountNumberDescription;\r\n templateArgs.SelectedElectricUtilityBillImage = util.BillSampleImageURL;\r\n templateArgs.SelectedElectricUtilityMeterNumberRequiredForApplication =\r\n util.MeterNumberRequiredForApplication;\r\n templateArgs.SelectedElectricUtilityMeterNumberUtilityDescription =\r\n util.MeterNumberUtilityDescription;\r\n templateArgs.SelectedElectricUtilityMeterNumberRequiredLength = util.MeterNumberRequiredLength;\r\n }\r\n\r\n templateArgs.ElectricLdcNumber =\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber;\r\n templateArgs.OnElBudgetNo = self.args.Application.DeliveryPoints[0].ElectricProducts[0].OnBudget\r\n ? false\r\n : true;\r\n templateArgs.OnElBudgetYes = self.args.Application.DeliveryPoints[0].ElectricProducts[0].OnBudget;\r\n templateArgs.ElectricMeterNumber =\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].MeterNumber;\r\n\r\n var myPrice = self.args.prices.ElectricityPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n myPrice.ProductIcon = \"icon-electricity\";\r\n myPrice.ProductName = \"Electricity\";\r\n myPrice.Utility = myPrice.UtilityDescription;\r\n myPrice.isSmallBusiness =\r\n myPrice.PricePlanCustomerClassId === cw.appEnum.CustomerClass.SmallBusiness;\r\n\r\n shipleyProducts.push(myPrice);\r\n\r\n templateArgs.SupportsElBudget = myPrice.BudgetAvailable;\r\n\r\n var p = {};\r\n $.extend(p, myPrice);\r\n p.isConfirm = true;\r\n p.condenseHighlights = false;\r\n templateArgs.selectedElectricPlanHtml = Mustache.to_html(self.args.appPricePlanTmpl, p);\r\n numSelectedProducts++;\r\n }\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n typeof self.args.prices.ElectricityPrices !== \"undefined\" &&\r\n self.args.prices.ElectricityPrices.length\r\n ) {\r\n self.args.prices.ElectricityPrices = self.args.prices.ElectricityPrices.map(function (x) {\r\n x.isSelected = false;\r\n return x;\r\n });\r\n var elP = self.args.prices.ElectricityPrices.sort(self.sortByPriceSortOrder)[0];\r\n if (self.args.prices.ElectricUtilities.length === 1) {\r\n elP.utilName = self.args.prices.ElectricUtilities[0].UtilityName;\r\n }\r\n elP.ProductIcon = \"icon-electricity\";\r\n elP.ProductName = \"Electricity service\";\r\n otherShipleyProducts.push(elP);\r\n }\r\n\r\n if (templateArgs.hasElectricSelection && !templateArgs.hasSelectedElectricProduct) {\r\n templateArgs.hasAllProductsSelected = false;\r\n }\r\n\r\n templateArgs.hasSelectedNatGasProduct =\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PricingPlanId;\r\n\r\n if (\r\n templateArgs.hasNatGasSelection &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0\r\n ) {\r\n self.args.prices.NatGasUtilities = self.args.prices.NatGasUtilities.map(function (x) {\r\n x.isSelected =\r\n x.UtilityCode ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode;\r\n return x;\r\n });\r\n }\r\n\r\n if (templateArgs.hasSelectedNatGasProduct) {\r\n self.args.prices.NatGasPrices = self.args.prices.NatGasPrices.map(function (x) {\r\n x.isSelected =\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId;\r\n return x;\r\n });\r\n util = self.args.prices.NatGasUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode === self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (util) {\r\n if (util.UtilityName == \"Duke Energy (Gas)\") {\r\n templateArgs.isDuke = util.UtilityName;\r\n }\r\n templateArgs.SelectedNatGasUtilityName = util.UtilityName;\r\n templateArgs.SelectedNatGasUtilityLdcNumDigits = util.UtilityAccountNumberLength;\r\n templateArgs.SelectedNatGasUtilityAccountNumberDescription =\r\n util.UtilityAccountNumberDescription;\r\n templateArgs.SelectedNatGasUtilityBillImage = util.BillSampleImageURL;\r\n templateArgs.SelectedNatGasUtilityMeterNumberRequiredForApplication =\r\n util.MeterNumberRequiredForApplication;\r\n templateArgs.SelectedNatGasUtilityMeterNumberUtilityDescription =\r\n util.MeterNumberUtilityDescription;\r\n templateArgs.SelectedNatGasUtilityMeterNumberRequiredLength = util.MeterNumberRequiredLength;\r\n }\r\n\r\n templateArgs.NatGasLdcNumber =\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber;\r\n templateArgs.OnNgBudgetNo = self.args.Application.DeliveryPoints[0].NatGasProducts[0].OnBudget\r\n ? false\r\n : true;\r\n templateArgs.OnNgBudgetYes = self.args.Application.DeliveryPoints[0].NatGasProducts[0].OnBudget;\r\n templateArgs.NatGasMeterNumber =\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber;\r\n\r\n myPrice = self.args.prices.NatGasPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n myPrice.ProductIcon = \"icon-natural-gas\";\r\n myPrice.ProductName = \"Natural Gas\";\r\n myPrice.Utility = myPrice.UtilityDescription;\r\n myPrice.isSmallBusiness =\r\n myPrice.PricePlanCustomerClassId === cw.appEnum.CustomerClass.SmallBusiness;\r\n shipleyProducts.push(myPrice);\r\n\r\n templateArgs.SupportsNgBudget = myPrice.BudgetAvailable;\r\n\r\n p = {};\r\n $.extend(p, myPrice);\r\n p.isConfirm = true;\r\n p.condenseHighlights = false;\r\n templateArgs.selectedNatGasPlanHtml = Mustache.to_html(self.args.appPricePlanTmpl, p);\r\n numSelectedProducts++;\r\n }\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n typeof self.args.prices.NatGasPrices !== \"undefined\" &&\r\n self.args.prices.NatGasPrices.length\r\n ) {\r\n self.args.prices.NatGasPrices = self.args.prices.NatGasPrices.map(function (x) {\r\n x.isSelected = false;\r\n return x;\r\n });\r\n var ngP = self.args.prices.NatGasPrices.sort(self.sortByPriceSortOrder)[0];\r\n if (self.args.prices.NatGasPrices.length === 1) {\r\n ngP.utilName = self.args.prices.NatGasPrices[0].UtilityName;\r\n }\r\n ngP.ProductIcon = \"icon-natural-gas\";\r\n ngP.ProductName = \"Natural Gas service\";\r\n otherShipleyProducts.push(ngP);\r\n }\r\n\r\n if (templateArgs.hasNatGasSelection && !templateArgs.hasSelectedNatGasProduct) {\r\n templateArgs.hasAllProductsSelected = false;\r\n }\r\n\r\n templateArgs.hasSelectedOilProduct =\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PricingPlanId;\r\n templateArgs.isAddWinterBlend =\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].isWinterBlend;\r\n\r\n if (templateArgs.hasSelectedOilProduct || templateArgs.renderHeatingOilProducts) {\r\n if (\r\n self.args.Application.DeliveryPoints.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0\r\n ) {\r\n self.args.prices.HeatingOilPrices = self.args.prices.HeatingOilPrices.map(function (x) {\r\n x.isSelected =\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId;\r\n return x;\r\n });\r\n }\r\n\r\n myPrice = null;\r\n if (\r\n self.args.prices &&\r\n self.args.prices.HeatingOilPrices &&\r\n self.args.Application.DeliveryPoints.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0\r\n ) {\r\n myPrice = self.args.prices.HeatingOilPrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if (myPrice) {\r\n var hoProd = $.extend({}, myPrice);\r\n hoProd.ProductIcon = \"icon-heating-oil\";\r\n hoProd.ProductName = \"Heating Oil\";\r\n hoProd.UtilityCode = \"Shipley\";\r\n\r\n if (templateArgs.isAddWinterBlend) {\r\n if (hoProd.FirstDeliveryPrice) {\r\n hoProd.FirstDeliveryPrice = hoProd.FirstDeliveryPrice + hoProd.WinterBlendPriceOffset;\r\n hoProd.FirstDeliveryPriceFormatted = cw.utility.formatAsMoney(\r\n hoProd.FirstDeliveryPrice,\r\n hoProd.PriceDisplayTypeId,\r\n hoProd.NumPriceDecimalPlacesDisplay\r\n );\r\n }\r\n\r\n hoProd.Price = hoProd.Price + hoProd.WinterBlendPriceOffset;\r\n hoProd.PriceHtmlFormatted = cw.utility.formatAsMoney(\r\n hoProd.Price,\r\n hoProd.PriceDisplayTypeId,\r\n hoProd.NumPriceDecimalPlacesDisplay\r\n );\r\n }\r\n templateArgs.HoDeliveryFeeFormatted = cw.utility.formatAsMoney(hoProd.RegulatoryFee, 1, 2);\r\n self.args.defaultDeliveryNowDeliveryFeeHo = hoProd.RegulatoryFee;\r\n shipleyProducts.push(hoProd);\r\n\r\n hoProd.isConfirm = true;\r\n hoProd.condenseHighlights = false;\r\n templateArgs.selectedOilPlanHtml = Mustache.to_html(self.args.appPricePlanTmpl, hoProd);\r\n numSelectedProducts++;\r\n }\r\n\r\n if (self.args.Application.DeliveryPoints[0].HeatingOilProducts[0]) {\r\n var ho = self.args.Application.DeliveryPoints[0].HeatingOilProducts[0];\r\n templateArgs.IsCod = ho.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice;\r\n\r\n templateArgs.HoAnnualUsage = ho.AnnualUsage;\r\n templateArgs.HoTankLevel0 = ho.TankLevel === \"0.00\";\r\n templateArgs.HoTankLevel25 = ho.TankLevel === \"0.25\";\r\n templateArgs.HoTankLevel50 = ho.TankLevel === \"0.50\";\r\n templateArgs.HoTankLevel75 = ho.TankLevel === \"0.75\";\r\n templateArgs.HoTankLevel100 = ho.TankLevel === \"1\";\r\n templateArgs.HoTankSize275 = ho.TankSize === \"275\";\r\n templateArgs.HoTankSize500 = ho.TankSize === \"500\";\r\n templateArgs.HoTankSize550 = ho.TankSize === \"550\";\r\n templateArgs.HoTankSize1000 = ho.TankSize === \"1000\";\r\n templateArgs.HoTankSize1 = ho.TankSize === \"1\";\r\n templateArgs.HoTankLocB = ho.TankLocation === \"B\";\r\n templateArgs.HoTankLocG = ho.TankLocation === \"G\";\r\n templateArgs.HoTankLocI = ho.TankLocation === \"I\";\r\n templateArgs.HoTankLocO = ho.TankLocation === \"O\";\r\n templateArgs.HoTankLocP = ho.TankLocation === \"P\";\r\n templateArgs.HoTankLocU = ho.TankLocation === \"U\";\r\n templateArgs.HoFillLoc07 = ho.FillLocation === \"07\";\r\n templateArgs.HoFillLoc09 = ho.FillLocation === \"09\";\r\n templateArgs.HoFillLoc11 = ho.FillLocation === \"11\";\r\n templateArgs.HoFillLoc12 = ho.FillLocation === \"12\";\r\n templateArgs.HoFillLoc01 = ho.FillLocation === \"01\";\r\n templateArgs.HoFillLoc03 = ho.FillLocation === \"03\";\r\n templateArgs.HoFillLoc05 = ho.FillLocation === \"05\";\r\n templateArgs.HoFillLoc06 = ho.FillLocation === \"06\";\r\n templateArgs.HoHotWatterYes = ho.HeatWater === \"Yes\";\r\n templateArgs.HoHotWatterNo = ho.HeatWater === \"No\";\r\n\r\n templateArgs.HoIsScheduledDelivery = ho.DeliverySchedule === \"S\";\r\n templateArgs.HoDeliveryRequested = ho.DeliveryRequested;\r\n templateArgs.HoDeliveryGallons = ho.DeliveryGallons;\r\n\r\n if (typeof ho.PricingTypeCode === \"undefined\") {\r\n templateArgs.hasHOPreBuyPricing =\r\n myPrice.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n } else {\r\n templateArgs.hasHOPreBuyPricing = ho.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n }\r\n\r\n if (templateArgs.hasHOPreBuyPricing) {\r\n templateArgs.HoPreBuyGallons = ho.PreBuyGallons;\r\n }\r\n\r\n if (ho.DeliverySchedule === \"W\") {\r\n hasWillCallProduct = true;\r\n }\r\n\r\n var hoDelOpts = self.args.deliveryOptions.map(function (x) {\r\n return x;\r\n });\r\n\r\n if (myPrice) {\r\n if (\r\n [\r\n cw.appEnum.PricingTypeCode.PreBuy,\r\n cw.appEnum.PricingTypeCode.Cap,\r\n cw.appEnum.PricingTypeCode.FixedPrice,\r\n ].includes(myPrice.PricingTypeCode)\r\n ) {\r\n hoDelOpts = hoDelOpts.filter(function (x) {\r\n if (x.Code !== \"W\") {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if ([cw.appEnum.PricingTypeCode.WillCallCashPrice].includes(myPrice.PricingTypeCode)) {\r\n hoDelOpts = hoDelOpts.filter(function (x) {\r\n if (x.Code !== \"A\" && x.Code !== \"S\") {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if ([cw.appEnum.PricingTypeCode.VariablePrice].includes(myPrice.PricingTypeCode)) {\r\n hoDelOpts = hoDelOpts.filter(function (x) {\r\n if (x.Code !== \"W\") {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if (hoDelOpts && hoDelOpts.length === 1 && hoDelOpts[0].Code === \"W\") {\r\n hasWillCallProduct = true;\r\n }\r\n }\r\n\r\n templateArgs.HoIsWillCall =\r\n hoDelOpts.some(function (x) {\r\n if (x.Code === \"W\") {\r\n return true;\r\n }\r\n return false;\r\n }) &&\r\n ho &&\r\n ho.DeliverySchedule &&\r\n ho.DeliverySchedule === \"W\";\r\n templateArgs.HoDeliveryOptions = hoDelOpts.map(function (x) {\r\n x.isSelected =\r\n (ho.DeliverySchedule && ho.DeliverySchedule === x.Code) || hoDelOpts.length === 1;\r\n return x;\r\n });\r\n }\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n typeof self.args.prices.HeatingOilPrices !== \"undefined\" &&\r\n self.args.prices.HeatingOilPrices.length\r\n ) {\r\n var hoP = self.args.prices.HeatingOilPrices.sort(self.sortByPriceSortOrder)[0];\r\n\r\n hoP.ProductIcon = \"icon-heating-oil\";\r\n hoP.ProductName = \"Heating Oil service\";\r\n otherShipleyProducts.push(hoP);\r\n }\r\n\r\n templateArgs.hasSelectedOilProduct =\r\n typeof self.args.Application.DeliveryPoints[0].HeatingOilProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0;\r\n\r\n if (templateArgs.hasSelectedOilProduct && !templateArgs.hasSelectedOilProduct) {\r\n templateArgs.hasAllProductsSelected = false;\r\n }\r\n\r\n templateArgs.hasSelectedPropaneProduct =\r\n typeof self.args.Application.DeliveryPoints[0].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0;\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints[0].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n self.args.prices.PropanePrices = self.args.prices.PropanePrices.map(function (x) {\r\n x.isSelected =\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId;\r\n return x;\r\n });\r\n\r\n myPrice = self.args.prices.PropanePrices.filterSingle(function (x) {\r\n if (\r\n x.PriceSheetLineId ===\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (myPrice) {\r\n var myPpProd = $.extend({}, myPrice);\r\n myPpProd.ProductIcon = \"icon-propane\";\r\n myPpProd.ProductName = \"Propane\";\r\n myPpProd.UtilityCode = \"Shipley\";\r\n\r\n if (self.args.Application.DeliveryPoints[0].PropaneProducts[0].TankOwnage === \"C\") {\r\n myPpProd.Price = myPpProd.Price + myPpProd.TankOwnagePriceOffset;\r\n myPpProd.PriceHtmlFormatted = cw.utility.formatAsMoney(\r\n myPpProd.Price,\r\n myPpProd.PriceDisplayTypeId,\r\n myPpProd.NumPriceDecimalPlacesDisplay\r\n );\r\n }\r\n self.args.defaultDeliveryNowDeliveryFeePp = myPpProd.RegulatoryFee;\r\n templateArgs.PpDeliveryFeeFormatted = cw.utility.formatAsMoney(myPpProd.RegulatoryFee, 1, 2);\r\n shipleyProducts.push(myPpProd);\r\n\r\n myPpProd.isConfirm = true;\r\n myPpProd.condenseHighlights = false;\r\n templateArgs.selectedPropanePlanHtml = Mustache.to_html(self.args.appPricePlanTmpl, myPpProd);\r\n numSelectedProducts++;\r\n }\r\n p = self.args.Application.DeliveryPoints[0].PropaneProducts[0];\r\n\r\n templateArgs.IsPpCod = p.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice;\r\n\r\n templateArgs.PpFillLocation07 = p.TankLocation === \"07\";\r\n templateArgs.PpFillLocation09 = p.TankLocation === \"09\";\r\n templateArgs.PpFillLocation11 = p.TankLocation === \"11\";\r\n templateArgs.PpFillLocation12 = p.TankLocation === \"12\";\r\n templateArgs.PpFillLocation01 = p.TankLocation === \"01\";\r\n templateArgs.PpFillLocation03 = p.TankLocation === \"03\";\r\n templateArgs.PpFillLocation05 = p.TankLocation === \"05\";\r\n templateArgs.PpFillLocation06 = p.TankLocation === \"06\";\r\n\r\n templateArgs.PpTankPlacementO = p.TankPlacement === \"O\";\r\n templateArgs.PpTankPlacementU = p.TankPlacement === \"U\";\r\n\r\n templateArgs.PpTankSize25 = p.TankSize === \"25\";\r\n templateArgs.PpTankSize50 = p.TankSize === \"50\";\r\n templateArgs.PpTankSize100 = p.TankSize === \"100\";\r\n templateArgs.PpTankSize250 = p.TankSize === \"250\";\r\n templateArgs.PpTankSize500 = p.TankSize === \"500\";\r\n templateArgs.PpTankSize1000 = p.TankSize === \"1000\";\r\n templateArgs.PpTankSize1 = p.TankSize === \"1\";\r\n\r\n templateArgs.PpFillLevel0 = p.TankLevel === \"0.00\";\r\n templateArgs.PpFillLevel05 = p.TankLevel === \"0.05\";\r\n templateArgs.PpFillLevel10 = p.TankLevel === \"0.10\";\r\n templateArgs.PpFillLevel15 = p.TankLevel === \"0.15\";\r\n templateArgs.PpFillLevel20 = p.TankLevel === \"0.20\";\r\n templateArgs.PpFillLevel25 = p.TankLevel === \"0.25\";\r\n templateArgs.PpFillLevel30 = p.TankLevel === \"0.30\";\r\n templateArgs.PpFillLevel35 = p.TankLevel === \"0.35\";\r\n templateArgs.PpFillLevel40 = p.TankLevel === \"0.40\";\r\n templateArgs.PpFillLevel45 = p.TankLevel === \"0.45\";\r\n templateArgs.PpFillLevel50 = p.TankLevel === \"0.50\";\r\n templateArgs.PpFillLevel55 = p.TankLevel === \"0.55\";\r\n templateArgs.PpFillLevel60 = p.TankLevel === \"0.60\";\r\n templateArgs.PpFillLevel65 = p.TankLevel === \"0.65\";\r\n templateArgs.PpFillLevel70 = p.TankLevel === \"0.70\";\r\n templateArgs.PpFillLevel75 = p.TankLevel === \"0.75\";\r\n templateArgs.PpFillLevel80 = p.TankLevel === \"0.80\";\r\n templateArgs.PpFillLevel85 = p.TankLevel === \"0.85\";\r\n templateArgs.PpFillLevel90 = p.TankLevel === \"0.90\";\r\n templateArgs.PpFillLevel95 = p.TankLevel === \"0.95\";\r\n templateArgs.PpFillLevel100 = p.TankLevel === \"1.00\";\r\n\r\n templateArgs.PpNumTanks1 = p.TankCount === 1;\r\n templateArgs.PpNumTanks2 = p.TankCount === 2;\r\n templateArgs.PpNumTanks3 = p.TankCount === 3;\r\n templateArgs.PpNumTanks4 = p.TankCount === 4;\r\n\r\n templateArgs.PpOtherHeatSourceYes = p.AlternateHeat;\r\n templateArgs.PpOtherHeatSourceNo = p.AlternateHeat !== null && !p.AlternateHeat;\r\n\r\n templateArgs.PpIsScheduledDelivery = p.DeliverySchedule === \"S\";\r\n templateArgs.PpIsWillCall = p.DeliverySchedule === \"W\";\r\n templateArgs.PpIsFillUp = p.DeliveryGallons === 0; // default set this to true\r\n templateArgs.PpDeliveryGallons = p.DeliveryGallons;\r\n templateArgs.PpDeliveryRequired = false;\r\n\r\n const tankDefault = self.args.tankSizeDefault.find(\r\n (x) => x.ProductId == cw.appEnum.ProductCode.Propane && x.ProductTankDefault\r\n );\r\n const gallonAmount = p.DeliveryGallons ?? tankDefault.UsableSize;\r\n\r\n templateArgs.PpDeliveryTotal = (gallonAmount * p.Price ?? 0).formatMoney();\r\n\r\n if (p.DeliverySchedule === \"W\") {\r\n hasWillCallProduct = true;\r\n }\r\n\r\n if (typeof p.PricingTypeCode === \"undefined\") {\r\n templateArgs.hasPpPreBuyPricing = myPrice.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n } else {\r\n templateArgs.hasPpPreBuyPricing = p.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy;\r\n }\r\n\r\n if (templateArgs.hasPpPreBuyPricing) {\r\n templateArgs.PpPreBuyGallons = p.PreBuyGallons;\r\n }\r\n\r\n var ppDelOpts = self.args.deliveryOptions.map(function (x) {\r\n return x;\r\n });\r\n\r\n templateArgs.CanRequestDeliveryNow =\r\n templateArgs.PpIsWillCall || ppDelOpts.some((x) => x.Code === \"W\"); //<--- We will never get away from this will we\r\n\r\n /*\r\n {{#isCod}}\r\n <option value=\"W\">Will Call</option>\r\n {{/isCod}}\r\n {{^isCod}}\r\n <option value=\"\">--Select--</option>\r\n {{#hasPropaneWholeHouse}}\r\n <option value=\"A\">Automatic</option>{{/hasPropaneWholeHouse}}\r\n <option value=\"W\">Will Call</option>\r\n {{^hasPropaneWholeHouse}}\r\n <option value=\"S\">Scheduled</option>{{/hasPropaneWholeHouse}}\r\n {{/isCod}}\r\n */\r\n\r\n if (myPrice) {\r\n if (\r\n [\r\n cw.appEnum.PricingTypeCode.PreBuy,\r\n cw.appEnum.PricingTypeCode.Cap,\r\n cw.appEnum.PricingTypeCode.FixedPrice,\r\n ].includes(myPrice.PricingTypeCode)\r\n ) {\r\n ppDelOpts = ppDelOpts.filter(function (x) {\r\n if (x.Code !== \"W\") {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if ([cw.appEnum.PricingTypeCode.WillCallCashPrice].includes(myPrice.PricingTypeCode)) {\r\n ppDelOpts = ppDelOpts.filter(function (x) {\r\n if (x.Code !== \"A\" && x.Code !== \"S\") {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n if (ppDelOpts && ppDelOpts.length === 1 && ppDelOpts[0].Code === \"W\") {\r\n templateArgs.PpIsWillCall = true;\r\n hasWillCallProduct = true;\r\n }\r\n }\r\n\r\n ppDelOpts.unshift({ Name: \"--Select--\" });\r\n templateArgs.PpDeliveryOptions = ppDelOpts.map(function (x) {\r\n x.isSelected = (p.DeliverySchedule && p.DeliverySchedule === x.Code) || ppDelOpts.length === 1;\r\n return x;\r\n });\r\n } else if (\r\n typeof self.args.prices !== \"undefined\" &&\r\n self.args.prices &&\r\n typeof self.args.prices.PropanePrices !== \"undefined\" &&\r\n self.args.prices.PropanePrices.length\r\n ) {\r\n var pP = self.args.prices.PropanePrices.sort(self.sortByPriceSortOrder)[0];\r\n\r\n pP.ProductIcon = \"icon-propane\";\r\n pP.ProductName = \"Propane service\";\r\n otherShipleyProducts.push(pP);\r\n }\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints[0].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length &&\r\n typeof self.args.Application.DeliveryPoints[0].PropaneProducts[0].ProductUsageCodes !==\r\n \"undefined\"\r\n ) {\r\n p = self.args.Application.DeliveryPoints[0].PropaneProducts[0];\r\n templateArgs.PropaneUsage = self.args.propageUsages.map(function (x) {\r\n x.isSelected = p.ProductUsageCodes && p.ProductUsageCodes.includes(x.ProductUsageCode);\r\n return x;\r\n });\r\n } else {\r\n templateArgs.PropaneUsage = self.args.propageUsages;\r\n }\r\n\r\n if (\r\n templateArgs.hasSelectedPropaneProduct &&\r\n !(\r\n self.args.Application.DeliveryPoints[0].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].PriceSheetLineId\r\n )\r\n ) {\r\n templateArgs.hasAllProductsSelected = false;\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].ProductUsageCodes &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].ProductUsageCodes.length > 0 &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts[0].TankOwner\r\n ) {\r\n var productCodeArgs = {\r\n TankOwnage: self.args.Application.DeliveryPoints[0].PropaneProducts[0].TankOwner,\r\n ProductUsageCodes: self.args.Application.DeliveryPoints[0].PropaneProducts[0].ProductUsageCodes,\r\n EstimatedUsage: self.args.Application.DeliveryPoints[0].PropaneProducts[0].AnnualUsage,\r\n ProductCode: cw.appEnum.ProductCode.Propane,\r\n ProductClassXref: self.args.prices.ProductClassXref,\r\n };\r\n templateArgs.propanePlans = self.getPropanePlansHtml(productCodeArgs, 4);\r\n }\r\n\r\n const serviceContractVerifyHtml = [];\r\n if (\r\n typeof self.args.Application.DeliveryPoints[0].ServiceContracts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.length > 0\r\n ) {\r\n for (i = 0; i < self.args.Application.DeliveryPoints[0].ServiceContracts.length; i++) {\r\n const sc = self.args.Application.DeliveryPoints[0].ServiceContracts[i];\r\n shipleyProducts.push({\r\n ProductIcon: \"icon-installation\",\r\n ProductName: sc.TextDescription,\r\n UtilityCode: \"Shipley\",\r\n UomName: sc.BillMonthly ? \"month\" : \"year\",\r\n PriceHtmlFormatted:\r\n \"$\" + (sc.BillMonthly ? sc.NormalPrice / 12 : sc.NormalPrice).formatMoney(),\r\n PricingPlanDescription: sc.TextDescription,\r\n ProductCode: 200,\r\n PriceSheetLineId: sc.AppContractId,\r\n });\r\n\r\n const coveredEquipment = [];\r\n sc.CoveredEquipmentIds.forEach((ce) => {\r\n const e = self.allConfiguredEquipment?.find((a) => a.AppEquipmentId === ce);\r\n if (e) {\r\n const eqType = self.args.equipmentLookups?.EquipmentTypes.find(\r\n (x) => x.EquipmentTypeId === e.EquipmentTypeId\r\n );\r\n if (eqType) {\r\n coveredEquipment.push([e.EquipmentName, eqType.EquipmentTypeName, eqType.IconCssClass]);\r\n }\r\n }\r\n });\r\n\r\n const renderedHtml = Mustache.to_html(self.args.appPricePlanTmpl, {\r\n isConfirm: true,\r\n IsFixedPrice: true,\r\n IsVariablePrice: false,\r\n PriceTypeExtendedDescription: false,\r\n BestOffer: false,\r\n PricingPlanDescription: sc.TextDescription,\r\n ChartHeader: sc.TextDescription,\r\n FirstDeliveryPrice: false,\r\n PriceToCompareFormatted: false,\r\n RenderedTosUrl: sc.TosUrl,\r\n condenseHighlights: false,\r\n PlanHighlights: sc.PlanHighlights,\r\n ProductCode: cw.appEnum.ProductCode.ServiceProduct,\r\n PricingPlan: sc.AppContractId,\r\n Price: sc.NormalPrice,\r\n PriceFormatted: `$${(sc.BillMonthly ? sc.NormalPrice / 12 : sc.NormalPrice).formatMoney()}`,\r\n UomName: sc.BillMonthly ? \"month\" : \"year\",\r\n PriceSheetLineId: sc.AppContractId,\r\n });\r\n let $renderedHtml = $(renderedHtml);\r\n if (coveredEquipment.length > 0) {\r\n coveredEquipment.unshift([\"Covered Equipment:\", \"\", \"\"]);\r\n const mapFunc = (eq) => `<li>${eq[0]} ${eq[1]}</li>`;\r\n $renderedHtml\r\n .find(\".plan-highlights\")\r\n .find(\"div\")\r\n .replaceWith(`<ul>${coveredEquipment.map(mapFunc).join(\"\")}</ul>`);\r\n }\r\n\r\n serviceContractVerifyHtml.push($renderedHtml.html());\r\n numSelectedProducts++;\r\n }\r\n } else if (self.args.prices?.ZipSupportsServiceContract) {\r\n otherShipleyProducts.push({\r\n ProductIcon: \"icon-installation\",\r\n ProductName: \"Protection Plans\",\r\n PriceHtmlFormatted: self.args.minContractPrice,\r\n UomName: null,\r\n ProductCode: 200,\r\n });\r\n }\r\n\r\n templateArgs.verifyColumnSize =\r\n numSelectedProducts >= 4 || numSelectedProducts === 0 ? 4 : 12 / numSelectedProducts;\r\n\r\n var verifyServiceContractTempl =\r\n '<div class=\"form-group col-xs-12 col-sm-6 col-md-{{verifyColumnSize}} text-center\">' +\r\n '<span class=\"product-icon icon-installation shipley-green fs-xs-34\"></span> <span class=\"selected-plan-lbl\">Your Service Plan</span>' +\r\n '<div class=\"selected-product-wrapper\">' +\r\n \"{{{selectedServicePlanHtml}}}\" +\r\n \"</div>\" +\r\n \"</div>\";\r\n\r\n templateArgs.selectedServiceContractHtml = \"\";\r\n serviceContractVerifyHtml.forEach(function (x) {\r\n templateArgs.selectedServiceContractHtml += Mustache.to_html(verifyServiceContractTempl, {\r\n verifyColumnSize: templateArgs.verifyColumnSize,\r\n selectedServicePlanHtml: x,\r\n });\r\n });\r\n\r\n templateArgs.hasElOrGasSection =\r\n templateArgs.hasNatGasSelection ||\r\n (selectedElectUtil && !self.badUtils.includes(selectedElectUtil));\r\n templateArgs.hasGasOilPropaneOrServiceSelection =\r\n templateArgs.hasNatGasSelection ||\r\n oilSelected ||\r\n propaneSelected ||\r\n templateArgs.hasServicePlanSelection;\r\n templateArgs.hasOilGasOrElSelection = oilSelected || templateArgs.hasElOrGasSection;\r\n templateArgs.hasOilGasOrElOrPropaneSelection =\r\n propaneSelected || templateArgs.hasOilGasOrElSelection;\r\n\r\n templateArgs.hasOilPropaneOrServiceSelection =\r\n oilSelected || propaneSelected || templateArgs.hasServicePlanSelection;\r\n templateArgs.hasPropaneOrServiceSelection = propaneSelected || templateArgs.hasServicePlanSelection;\r\n\r\n templateArgs.noPropaneTank = self.args.Application.DeliveryPoints[0].PropaneProducts.some(function (\r\n x\r\n ) {\r\n if (x.TankOwner === \"none\") {\r\n return true;\r\n }\r\n });\r\n templateArgs.isCustomerOwnedTank = self.args.Application.DeliveryPoints[0].PropaneProducts.some(\r\n function (x) {\r\n if (x.TankOwner === \"C\") {\r\n return true;\r\n }\r\n }\r\n );\r\n templateArgs.isSupplierOwnedTank = self.args.Application.DeliveryPoints[0].PropaneProducts.some(\r\n function (x) {\r\n if (x.TankOwner === \"V\") {\r\n return true;\r\n }\r\n }\r\n );\r\n\r\n templateArgs.CartProducts = shipleyProducts;\r\n templateArgs.OtherShipleyProducts = otherShipleyProducts;\r\n\r\n if (\r\n (templateArgs.hasElectricSelection || templateArgs.renderElectricProducts) &&\r\n self.args.prices &&\r\n self.args.prices.ElectricityPrices.length\r\n ) {\r\n var elPrices = self.args.prices.ElectricityPrices.filter(function (x) {\r\n if (x.UtilityCode === selectedElectUtil) {\r\n return x;\r\n }\r\n });\r\n if (elPrices && elPrices.length > 0) {\r\n templateArgs.electricPlans = self.renderPricePlans(\r\n self.args.appPricePlanTmpl,\r\n elPrices,\r\n templateArgs.maxPricePlansPerRow,\r\n true\r\n );\r\n }\r\n }\r\n\r\n if (\r\n (templateArgs.hasNatGasSelection || templateArgs.renderNatGasProducts) &&\r\n self.args.prices &&\r\n self.args.prices.NatGasPrices\r\n ) {\r\n var ngPrices = self.args.prices.NatGasPrices.filter(function (x) {\r\n if (x.UtilityCode === selectedNgUtil) {\r\n return x;\r\n }\r\n });\r\n if (ngPrices && ngPrices.length > 0) {\r\n templateArgs.natGasPlans = self.renderPricePlans(\r\n self.args.appPricePlanTmpl,\r\n ngPrices,\r\n templateArgs.maxPricePlansPerRow,\r\n true\r\n );\r\n }\r\n }\r\n\r\n if (\r\n (templateArgs.hasOilSelection || templateArgs.renderHeatingOilProducts) &&\r\n self.args.prices &&\r\n self.args.prices.HeatingOilPrices\r\n ) {\r\n let hoPrices = $.extend([], self.args.prices.HeatingOilPrices);\r\n if (hoPrices && hoPrices.length > 0) {\r\n hoPrices = self.filterBogoPlans(hoPrices, { ProductCode: cw.appEnum.ProductCode.HeatingOil });\r\n\r\n if (templateArgs.isAddWinterBlend) {\r\n hoPrices = hoPrices.map(function (hp) {\r\n var myHp = $.extend({}, hp);\r\n if (myHp.FirstDeliveryPrice) {\r\n myHp.FirstDeliveryPrice = myHp.FirstDeliveryPrice + myHp.WinterBlendPriceOffset;\r\n myHp.FirstDeliveryPriceFormatted = cw.utility.formatAsMoney(\r\n myHp.FirstDeliveryPrice,\r\n myHp.PriceDisplayTypeId,\r\n myHp.NumPriceDecimalPlacesDisplay\r\n );\r\n }\r\n\r\n myHp.Price = myHp.Price + myHp.WinterBlendPriceOffset;\r\n myHp.PriceHtmlFormatted = cw.utility.formatAsMoney(\r\n myHp.Price,\r\n myHp.PriceDisplayTypeId,\r\n myHp.NumPriceDecimalPlacesDisplay\r\n );\r\n return myHp;\r\n });\r\n }\r\n\r\n templateArgs.heatingOilPlans = self.renderPricePlans(\r\n self.args.appPricePlanTmpl,\r\n hoPrices,\r\n templateArgs.maxPricePlansPerRow,\r\n true\r\n );\r\n }\r\n }\r\n\r\n if (!self.args.Application.State || $.trim(self.args.Application.State) !== \"\") {\r\n templateArgs.billStates = self.args.states.map(function (x) {\r\n x.isSelected = x.StateAbbr === self.args.Application.State;\r\n return x;\r\n });\r\n } else if (\r\n typeof self.args.Application.DeliveryPoints !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints.length\r\n ) {\r\n templateArgs.billStates = self.args.states.map(function (x) {\r\n x.isSelected = x.StateAbbr === self.args.Application.DeliveryPoints[0].State;\r\n return x;\r\n });\r\n } else {\r\n templateArgs.billStates = self.args.states.map(function (x) {\r\n return x;\r\n });\r\n }\r\n\r\n if (\r\n !templateArgs.billStates.some(function (x) {\r\n if (!x.StateAbbr || x.StateAbbr === \"\") {\r\n return true;\r\n }\r\n })\r\n ) {\r\n templateArgs.billStates.unshift({\r\n StateAbbr: \"\",\r\n StateName: \"--Select--\",\r\n });\r\n }\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints.length\r\n ) {\r\n templateArgs.dpStates = self.args.states.map(function (x) {\r\n x.isSelected = x.StateAbbr === self.args.Application.DeliveryPoints[0].State;\r\n return x;\r\n });\r\n } else {\r\n templateArgs.dpStates = self.args.states.map(function (x) {\r\n return x;\r\n });\r\n }\r\n\r\n if (\r\n !templateArgs.dpStates.some(function (x) {\r\n if (!x.StateAbbr || x.StateAbbr === \"\") {\r\n return true;\r\n }\r\n })\r\n ) {\r\n templateArgs.dpStates.unshift({\r\n StateAbbr: \"\",\r\n StateName: \"--Select--\",\r\n });\r\n }\r\n\r\n templateArgs.hasOilOrPropane = templateArgs.hasOilSelection || templateArgs.hasPropaneSelection;\r\n\r\n let paymentOpts = self.args.paymentOptions.map(function (x) {\r\n x.isSelected =\r\n self.args.Application.PaymentType &&\r\n (self.args.Application.PaymentType === x.EnumVal ||\r\n self.args.Application.PaymentType === x.Key);\r\n return x;\r\n });\r\n if (hasWillCallProduct) {\r\n paymentOpts = paymentOpts.filter(function (x) {\r\n if (\r\n x.EnumVal !== cw.appEnum.PaymentProcessType.CustomerWillInitiatePayment &&\r\n x.EnumVal !== cw.appEnum.PaymentProcessType.AutomaticBankDraft &&\r\n x.EnumVal !== cw.appEnum.PaymentProcessType.AutomaticCreditCard\r\n ) {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n templateArgs.isPaymentCC =\r\n self.args.Application.PaymentType === \"CC\" ||\r\n self.args.Application.PaymentType === cw.appEnum.PaymentProcessType.AutomaticCreditCard ||\r\n self.args.Application.PaymentType === \"COD\" ||\r\n self.args.Application.PaymentTypeCOD === cw.appEnum.PaymentProcessType.COD;\r\n templateArgs.isPaymentEft =\r\n self.args.Application.PaymentType === \"EFT\" ||\r\n self.args.Application.PaymentType === cw.appEnum.PaymentProcessType.AutomaticBankDraft;\r\n templateArgs.isPaymentCustomerInit =\r\n self.args.Application.PaymentType === \"CHK\" ||\r\n self.args.Application.PaymentType === cw.appEnum.PaymentProcessType.CustomerWillInitiatePayment;\r\n\r\n templateArgs.paymentOptions = paymentOpts;\r\n templateArgs.hasCcConfigured =\r\n self.args.Application.CreditCardLast4 && self.args.Application.CreditCardLast4 !== \"\";\r\n templateArgs.CcLast4 = self.args.Application.CreditCardLast4;\r\n templateArgs.CcExpiration = self.args.Application.CreditCardExpiration;\r\n templateArgs.AuthNetPaymentProfileId = self.args.Application.AuthNetPaymentProfileId;\r\n\r\n templateArgs.ExpirationYears = [];\r\n\r\n for (i = moment().year(); i < moment().add(20, \"y\").year(); i++) {\r\n templateArgs.ExpirationYears.push(i);\r\n }\r\n\r\n templateArgs.CartProductCount = templateArgs.CartProducts ? templateArgs.CartProducts.length : null;\r\n templateArgs.HoMinimumDeliveryGallons =\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonHeatingOil;\r\n templateArgs.PpMinimumDeliveryGallons =\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonPropane;\r\n\r\n templateArgs.birthDateRequired =\r\n templateArgs.hasOilSelection ||\r\n templateArgs.hasPropaneSelection ||\r\n templateArgs.hasServicePlanSelection;\r\n templateArgs.hidePaymentPane =\r\n (templateArgs.hasElectricSelection || templateArgs.hasNatGasSelection) &&\r\n !templateArgs.hasOilSelection &&\r\n !templateArgs.hasPropaneSelection &&\r\n !templateArgs.hasServicePlanSelection;\r\n\r\n if (!backButtonClicked) {\r\n self.mapMaskedPricingTemplateArgs(templateArgs);\r\n }\r\n\r\n return templateArgs;\r\n },\r\n mapMaskedPricingTemplateArgs: function (templateArgs) {\r\n const self = this;\r\n const dp = templateArgs?.Application?.DeliveryPoints[0];\r\n\r\n if (!dp) {\r\n return false;\r\n }\r\n\r\n const ppMasks = self.getMatchingProductMasks();\r\n templateArgs.hasMaskedPrices = ppMasks.length > 0;\r\n\r\n return templateArgs;\r\n },\r\n getProductListFromApplicant: function () {\r\n var self = this;\r\n const dp = self.args.Application.DeliveryPoints[0];\r\n const products = [];\r\n\r\n if (!dp) {\r\n return products;\r\n }\r\n\r\n if (dp.ElectricProducts.length > 0) {\r\n products.push(cw.appEnum.ProductCode.Electricity);\r\n }\r\n if (dp.NatGasProducts.length > 0) {\r\n products.push(cw.appEnum.ProductCode.NaturalGas);\r\n }\r\n if (dp.HeatingOilProducts.length > 0) {\r\n products.push(cw.appEnum.ProductCode.HeatingOil);\r\n }\r\n if (dp.PropaneProducts.length > 0) {\r\n products.push(cw.appEnum.ProductCode.Propane);\r\n }\r\n return products;\r\n },\r\n getMatchingProductMasks: function () {\r\n const self = this;\r\n const maskedProducts = [];\r\n const prices = self.args.prices;\r\n const dp = self.args.Application.DeliveryPoints[0];\r\n\r\n if (!dp || !prices) {\r\n return maskedProducts;\r\n }\r\n\r\n for (const product of self.getProductListFromApplicant()) {\r\n if (self.hasMaskedPricePlans(product, prices)) {\r\n maskedProducts.push(product);\r\n }\r\n }\r\n\r\n //TODO: Service?\r\n // templateArgs.hasServiceMaskedPrices = hasMaskedPricePlans(\r\n // cw.appEnum.ProductCode.ServiceProduct,\r\n // templateArgs\r\n // );\r\n\r\n return maskedProducts;\r\n },\r\n hasMaskedPricePlans: function (productId, templateArgs) {\r\n const self = this;\r\n return getMaskedPricePlans(templateArgs, productId, \"self-signup\") !== undefined;\r\n },\r\n getmatchingProductMask: function (pricePlans) {\r\n const self = this;\r\n let productCode = undefined;\r\n const matchingMaskedProducts = self.getMatchingProductMasks();\r\n const applicantProducts = self.getProductListFromApplicant();\r\n if (pricePlans.length <= 0) {\r\n return;\r\n }\r\n\r\n if (matchingMaskedProducts.length === 1 && applicantProducts.length === 1) {\r\n productCode = matchingMaskedProducts[0];\r\n }\r\n const maskedPp = getMaskedPricePlans(self.args.prices, matchingMaskedProducts[0], \"self-signup\");\r\n\r\n return {\r\n htmlContent: maskedPp.HtmlContent,\r\n productName:\r\n applicantProducts.filter((x) => !matchingMaskedProducts.includes(x)).length <= 0 && productCode\r\n ? GetProductFullName(productCode)\r\n : \"Your Products\",\r\n };\r\n },\r\n saveFullApplication: function (callback) {\r\n const self = this;\r\n const a = self.args.Application;\r\n a.LeadSource = a.LeadSourceId;\r\n a.S1PromoCodeId = a.PromoCode?.PromoCodeId ? a.PromoCode.PromoCodeId : null;\r\n a.PaymentType = self.$wrapperEl.find(\".payment-type\").val() ?? null;\r\n\r\n //At the moment, all customers through Zip Enrollment are ShipleyEnergy\r\n a.BrandType = cw.appEnum.BrandType.ShipleyEnergy;\r\n\r\n //handle the backend db making a mess of customer type\r\n if (\r\n typeof a.CustomerTypeText === \"undefined\" ||\r\n a.CustomerTypeText === \"\" ||\r\n a.CustomerTypeText === \"U\"\r\n ) {\r\n if (typeof a.CustomerTypeFormatted !== \"undefined\" && a.CustomerTypeFormatted === \"Residential\") {\r\n a.CustomerTypeText = \"Residential\";\r\n } else if (\r\n typeof a.CustomerTypeFormatted !== \"undefined\" &&\r\n a.CustomerTypeFormatted === \"Commercial\"\r\n ) {\r\n a.CustomerTypeText = \"Commercial\";\r\n }\r\n }\r\n\r\n cw.webservices.getJson(\"CustomerApplication/save-application-header\", a, function (saveResp) {\r\n if (saveResp) {\r\n self.requiresCreditCheck = saveResp.RequiresCreditCheck;\r\n if (saveResp.WasSuccess) {\r\n self.saveDeliveryPoint(true, callback);\r\n }\r\n }\r\n });\r\n },\r\n saveDeliveryPoint: function (doSaveProducts, callback) {\r\n const self = this;\r\n cw.webservices.getJson(\r\n \"CustomerApplication/save-application-delivery-point\",\r\n self.args.Application.DeliveryPoints[0],\r\n function (dp) {\r\n if (dp && doSaveProducts) {\r\n self.saveProducts(callback);\r\n } else if (dp) {\r\n if (typeof callback === \"function\") {\r\n callback(dp);\r\n }\r\n }\r\n }\r\n );\r\n },\r\n saveProducts: function (callback) {\r\n const self = this;\r\n const p = {\r\n NatGasProducts:\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].NatGasProducts\r\n : [],\r\n ElectricProducts:\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].ElectricProducts\r\n : [],\r\n HeatingOilProducts:\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].HeatingOilProducts\r\n : [],\r\n PropaneProducts:\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts\r\n : [],\r\n ContactAboutServiceContract: self.args.Application.DeliveryPoints[0].ContactAboutServiceContract\r\n ? self.args.Application.ApplicationId\r\n : null,\r\n };\r\n\r\n if (\r\n p.NatGasProducts.length > 0 ||\r\n p.ElectricProducts.length > 0 ||\r\n p.HeatingOilProducts.length > 0 ||\r\n p.PropaneProducts.length > 0 ||\r\n p.ContactAboutServiceContract\r\n ) {\r\n cw.webservices.getJson(\"CustomerApplication/save-application-products\", p, function (numSaved) {\r\n if (typeof callback === \"function\") {\r\n callback(numSaved);\r\n }\r\n });\r\n }\r\n },\r\n deleteProduct: function (applicationId, deliveryPointId, productId, callback) {\r\n const self = this;\r\n\r\n const product = [];\r\n let prod = null;\r\n let savedProduct = null;\r\n\r\n if (self.args.Application.DeliveryPoints[deliveryPointId]) {\r\n const deliveryPoint = self.args.Application.DeliveryPoints[0];\r\n switch (productId) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n if (self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].PriceSheetLineId > 0) {\r\n prod = self.args.prices.HeatingOilPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.HeatingOilProducts[0]?.PriceSheetLineId\r\n );\r\n }\r\n savedProduct = deliveryPoint.HeatingOilProducts[0];\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts = [];\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n if (self.args.Application.DeliveryPoints[0].PropaneProducts[0]) {\r\n prod = self.args.prices.PropanePrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.PropaneProducts[0]?.PriceSheetLineId\r\n );\r\n }\r\n savedProduct = deliveryPoint.PropaneProducts[0];\r\n self.args.Application.DeliveryPoints[0].PropaneProducts = [];\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n if (self.args.Application.DeliveryPoints[0].ElectricProducts[0]) {\r\n prod = self.args.prices.ElectricityPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.ElectricProducts[0]?.PriceSheetLineId\r\n );\r\n }\r\n savedProduct = deliveryPoint.ElectricProducts[0];\r\n self.args.Application.DeliveryPoints[0].ElectricProducts = [];\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n if (self.args.Application.DeliveryPoints[0].NatGasProducts[0]) {\r\n prod = self.args.prices.NatGasPrices.find(\r\n (x) => x.PriceSheetLineId === deliveryPoint.NatGasProducts[0]?.PriceSheetLineId\r\n );\r\n }\r\n savedProduct = deliveryPoint.NatGasProducts[0];\r\n self.args.Application.DeliveryPoints[0].NatGasProducts = [];\r\n break;\r\n }\r\n\r\n if ((prod?.PriceSheetLineId ?? 0) > 0) {\r\n product.push(new analytics.Ga4EnrollmentProduct(prod, self.analyticListName));\r\n }\r\n\r\n cw.webservices.getJson(\r\n \"CustomerApplication/delete-product\",\r\n {\r\n ApplicationId: applicationId,\r\n DeliveryPointIndex: deliveryPointId,\r\n ProductId: productId,\r\n },\r\n function (wasDeleted) {\r\n if (!wasDeleted) {\r\n console.warn(\r\n `There was an error deleting product ${productId} for application ${applicationId}`\r\n );\r\n switch (productId) {\r\n case cw.appEnum.ProductCode.HeatingOil:\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts = savedProduct;\r\n break;\r\n case cw.appEnum.ProductCode.Propane:\r\n self.args.Application.DeliveryPoints[0].PropaneProducts = savedProduct;\r\n break;\r\n case cw.appEnum.ProductCode.Electricity:\r\n self.args.Application.DeliveryPoints[0].ElectricProducts = savedProduct;\r\n break;\r\n case cw.appEnum.ProductCode.NaturalGas:\r\n self.args.Application.DeliveryPoints[0].NatGasProducts = savedProduct;\r\n break;\r\n }\r\n } else {\r\n if (product.length > 0) {\r\n analytics.removeFromCart(product);\r\n }\r\n }\r\n\r\n callback(wasDeleted);\r\n }\r\n );\r\n }\r\n },\r\n validateNatGasProduct: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n const errs = [];\r\n var regExPatterns = [];\r\n var regExValid = false;\r\n var regExErrorMessage = \"\";\r\n var containsOnlyNumeric = /^\\d+$/.test(\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber\r\n );\r\n let util = self.args.prices.NatGasUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode === self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (util.UtilityAccountNumberRegex.length > 0) {\r\n regExPatterns = util.UtilityAccountNumberRegex;\r\n regExErrorMessage = util.UtilityAccountRegexMessage;\r\n for (const element of regExPatterns) {\r\n regExValid = new RegExp(element).test(\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber\r\n );\r\n if (regExValid) {\r\n break;\r\n }\r\n }\r\n }\r\n if (self.args.Application.DeliveryPoints[0].NatGasProducts.length > 0) {\r\n util = self.args.prices.NatGasUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode === self.args.Application.DeliveryPoints[0].NatGasProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (\r\n util.MeterNumberRequiredForApplication &&\r\n !self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber\r\n ) {\r\n errs.push({\r\n text: util.MeterNumberUtilityDescription + \" is required.\",\r\n $el: self.$wrapperEl.find(\".natgas-meter-number\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), false);\r\n } else if (\r\n util.MeterNumberRequiredLength &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber &&\r\n (self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber.indexOf(\"-\") !== -1 ||\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber.indexOf(\" \") !== -1)\r\n ) {\r\n errs.push({\r\n text: util.MeterNumberUtilityDescription + \" should not contain the dashes or spaces.\",\r\n $el: self.$wrapperEl.find(\".natgas-meter-number\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), false);\r\n } else if (\r\n util.MeterNumberRequiredLength &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber &&\r\n util.MeterNumberRequiredLength >\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].MeterNumber.length\r\n ) {\r\n errs.push({\r\n text:\r\n util.MeterNumberUtilityDescription +\r\n \" should be \" +\r\n util.MeterNumberRequiredLength +\r\n \" characters long.\",\r\n $el: self.$wrapperEl.find(\".natgas-meter-number\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), true);\r\n }\r\n\r\n if (\r\n !self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber ||\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber.trim() === \"\"\r\n ) {\r\n errs.push({\r\n text: util.UtilityAccountNumberDescription + \" is required.\",\r\n $el: self.$wrapperEl.find(\".natgas-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber.indexOf(\"-\") !==\r\n -1 ||\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber.indexOf(\" \") !==\r\n -1 ||\r\n (!containsOnlyNumeric && regExPatterns.length == 0)\r\n ) {\r\n errs.push({\r\n text: util.UtilityAccountNumberDescription + \" should not contain dashes or spaces.\",\r\n $el: self.$wrapperEl.find(\".natgas-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (\r\n (!$.isNumeric(self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber) &&\r\n regExPatterns.length == 0) ||\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber.length !==\r\n util.UtilityAccountNumberLength\r\n ) {\r\n errs.push(\r\n util.UtilityAccountNumberDescription +\r\n \" needs to be \" +\r\n util.UtilityAccountNumberLength +\r\n \" numeric digits in length.\"\r\n );\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (!regExValid && regExErrorMessage != \"\") {\r\n errs.push(regExErrorMessage);\r\n callback(errs, showErrs, wasClicked);\r\n } else if ((util?.S1UtilityId ?? 0) > 0) {\r\n cw.webservices.getJson(\r\n \"CustomerApplication/does-ldc-account-number-exist/\" +\r\n util.S1UtilityId +\r\n \"/\" +\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber +\r\n \"/true/\" +\r\n self.args.Application.ApplicationId +\r\n \"/0\",\r\n self.args.Application.ApplicationId,\r\n function (existsStatus) {\r\n let s = self.ldcAccountStatuses;\r\n switch (existsStatus) {\r\n case s.ExistingActiveAccount:\r\n case s.ExistingApplication:\r\n errs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber +\r\n \" has an existing account already setup or has a pending application. Please contact customer service to complete this application.\",\r\n $el: self.$wrapperEl.find(\".natgas-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), false);\r\n callback(errs, true, wasClicked);\r\n break;\r\n case s.PendingReinstateExists:\r\n errs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber +\r\n \" has a pending reinstatement request already. Please contact customer service for more information.\",\r\n $el: self.$wrapperEl.find(\".natgas-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), false);\r\n callback(errs, true, wasClicked);\r\n break;\r\n case s.ExistingAccountPendingFinal:\r\n let pnlErrs = [];\r\n pnlErrs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].NatGasProducts[0].UtilityAccountNumber +\r\n \" is pending final billing. To re-enroll with Shipley Energy, we’ll send a reinstatement request to the utility. The utility controls the start date, so this might delay enrollment and affect your agreement term, but we’ll get you set up as soon as possible.\",\r\n $el: self.$wrapperEl.find(\".natgas-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), true);\r\n self.$acctConfigStepForwardBtn.removeClass(\"disabled\");\r\n callback(errs, showErrs, wasClicked);\r\n const $errPnl = self.$acctConfigActivePnlFwdBtn.closest(\".panel-body\").find(\".pnl-err\");\r\n if ($errPnl.length > 0) {\r\n cw.alert.Alert(pnlErrs, $errPnl);\r\n if (!self.viewedReinstateWarning) {\r\n //Log that customer viewed reinstate will not be sent immediately\r\n cw.webservices.getJson(\r\n \"Common/witness/\" +\r\n self.args.pendingFinalReinstateLoggingActionTypeId +\r\n \"/null/null/\" +\r\n self.args.Application.ApplicationId +\r\n \"/\"\r\n );\r\n self.viewedReinstateWarning = true;\r\n }\r\n }\r\n break;\r\n default:\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-ldc-account\"), true);\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n },\r\n function () {\r\n //fail\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n );\r\n }\r\n } else {\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n },\r\n validateElectricProduct: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n let errs = [];\r\n let regExPatterns = [];\r\n let regExValid = false;\r\n let regExErrorMessage = \"\";\r\n let containsOnlyNumeric = /^\\d+$/.test(\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber\r\n );\r\n let util = self.args.prices.ElectricUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode === self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (util.UtilityAccountNumberRegex.length > 0) {\r\n regExPatterns = util.UtilityAccountNumberRegex;\r\n regExErrorMessage = util.UtilityAccountRegexMessage;\r\n for (const element of regExPatterns) {\r\n regExValid = new RegExp(element).test(\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber\r\n );\r\n if (regExValid) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (self.args.Application.DeliveryPoints[0].ElectricProducts.length > 0) {\r\n errs = [];\r\n util = self.args.prices.ElectricUtilities.filterSingle(function (x) {\r\n if (\r\n x.UtilityCode ===\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].ProductUtilityCode\r\n ) {\r\n return x;\r\n }\r\n });\r\n\r\n if (\r\n util.MeterNumberRequiredForApplication &&\r\n !self.args.Application.DeliveryPoints[0].ElectricProducts[0].MeterNumber\r\n ) {\r\n errs.push({\r\n text: util.MeterNumberUtilityDescription + \" is required.\",\r\n $el: self.$wrapperEl.find(\".electric-meter-number\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-meter-number\"), false);\r\n } else if (\r\n util.MeterNumberRequiredLength &&\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].MeterNumber &&\r\n util.MeterNumberRequiredLength >\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].MeterNumber.length\r\n ) {\r\n errs.push({\r\n text:\r\n util.MeterNumberUtilityDescription +\r\n \" is should be \" +\r\n util.MeterNumberRequiredLength +\r\n \" characters long.\",\r\n $el: self.$wrapperEl.find(\".electric-meter-number\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-meter-number\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-meter-number\"), true);\r\n }\r\n\r\n if (\r\n !self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber ||\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber.trim() === \"\"\r\n ) {\r\n errs.push({\r\n text: util.UtilityAccountNumberDescription + \" is required.\",\r\n $el: self.$wrapperEl.find(\".electric-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber.indexOf(\r\n \"-\"\r\n ) !== -1 ||\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber.indexOf(\r\n \" \"\r\n ) !== -1 ||\r\n (!containsOnlyNumeric && regExPatterns.length == 0)\r\n ) {\r\n errs.push({\r\n text: util.UtilityAccountNumberDescription + \" should not contain dashes or spaces.\",\r\n $el: self.$wrapperEl.find(\".electric-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".natgas-meter-number\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (\r\n (!$.isNumeric(\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber\r\n ) &&\r\n regExPatterns.length == 0) ||\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber.length !==\r\n util.UtilityAccountNumberLength\r\n ) {\r\n errs.push(\r\n util.UtilityAccountNumberDescription +\r\n \" needs to be \" +\r\n util.UtilityAccountNumberLength +\r\n \" numeric digits in length.\"\r\n );\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), false);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (!regExValid && regExErrorMessage != \"\") {\r\n errs.push(regExErrorMessage);\r\n callback(errs, showErrs, wasClicked);\r\n } else if (util?.S1UtilityId) {\r\n containsOnlyNumeric = /^\\d+$/.test(\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber\r\n );\r\n cw.webservices.getJson(\r\n \"CustomerApplication/does-ldc-account-number-exist/\" +\r\n util.S1UtilityId +\r\n \"/\" +\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber +\r\n \"/true/\" +\r\n self.args.Application.ApplicationId +\r\n \"/0\",\r\n self.args.Application.ApplicationId,\r\n function (existsStatus) {\r\n let s = self.ldcAccountStatuses;\r\n switch (existsStatus) {\r\n case s.ExistingActiveAccount:\r\n case s.ExistingApplication:\r\n errs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber +\r\n \" has an existing account already setup or has a pending application. Please contact customer service to complete this application.\",\r\n $el: self.$wrapperEl.find(\".electric-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), false);\r\n callback(errs, true, wasClicked);\r\n break;\r\n case s.PendingReinstateExists:\r\n errs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber +\r\n \" has a pending reinstatement request already. Please contact customer service for more information.\",\r\n $el: self.$wrapperEl.find(\".electric-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), false);\r\n callback(errs, true, wasClicked);\r\n break;\r\n case s.ExistingAccountPendingFinal:\r\n let pnlErrs = [];\r\n pnlErrs.push({\r\n text:\r\n util.UtilityAccountNumberDescription +\r\n \" \" +\r\n self.args.Application.DeliveryPoints[0].ElectricProducts[0].UtilityAccountNumber +\r\n \" is pending final billing. To re-enroll with Shipley Energy, we’ll send a reinstatement request to the utility. The utility controls the start date, so this might delay enrollment and affect your agreement term, but we’ll get you set up as soon as possible.\",\r\n $el: self.$wrapperEl.find(\".electric-ldc-account\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), true);\r\n self.$acctConfigStepForwardBtn.removeClass(\"disabled\");\r\n callback(errs, showErrs, wasClicked);\r\n const $errPnl = self.$acctConfigActivePnlFwdBtn.closest(\".panel-body\").find(\".pnl-err\");\r\n if ($errPnl.length > 0) {\r\n cw.alert.Alert(pnlErrs, $errPnl);\r\n if (!self.viewedReinstateWarning) {\r\n //Log that customer viewed reinstate will not be sent immediately\r\n cw.webservices.getJson(\r\n \"Common/witness/\" +\r\n self.args.pendingFinalReinstateLoggingActionTypeId +\r\n \"/null/null/\" +\r\n self.args.Application.ApplicationId +\r\n \"/\"\r\n );\r\n self.viewedReinstateWarning = true;\r\n }\r\n }\r\n break;\r\n default:\r\n self.setRequiredStarState(self.$wrapperEl.find(\".electric-ldc-account\"), true);\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n },\r\n function () {\r\n //fail\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n );\r\n }\r\n } else {\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n },\r\n calcPrebuyAmount: function (args) {\r\n const self = cw.pages.application;\r\n let total = 0.0;\r\n if (!parseInt(args.PreBuyGallons) && parseInt(args.PreBuyGallons) < 1) {\r\n return total;\r\n }\r\n\r\n if (args.ProductCode === cw.appEnum.ProductCode.Propane) {\r\n total = parseFloat(args.Price) * parseInt(args.PreBuyGallons) + self.PropanePriceCapFee;\r\n } else {\r\n total = parseFloat(args.Price) * parseInt(args.PreBuyGallons);\r\n }\r\n\r\n return parseFloat(total);\r\n },\r\n validateOilProduct: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n var errs = [];\r\n var oilProduct = self.args.Application.DeliveryPoints[0].HeatingOilProducts[0];\r\n let tankVal = self.args.Application.DeliveryPoints[0].HeatingOilProducts[0].TankSize;\r\n let optimalGallons = 0;\r\n if (tankVal > 0) {\r\n optimalGallons = self.args.tankSizeDefault.find(\r\n (x) => x.TankSize === parseInt(tankVal)\r\n ).OptimalSize;\r\n }\r\n\r\n if (typeof oilProduct !== \"undefined\" && oilProduct) {\r\n if (!oilProduct.TankSize) {\r\n errs.push({ text: \"Tank size is required.\", $el: self.$wrapperEl.find(\".ho-tank-size\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-size\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-size\"), true);\r\n if ($(\"input.ho-delivery-gallons\").val() <= 0 && $(\"input.ho-delivery-gallons\").is(\":focus\")) {\r\n $(\".ho-gallons-price-wrapper\").removeClass(\"hidden\");\r\n }\r\n if ($(\"input.ho-delivery-gallons\").val() <= 0 && !$(\"input.ho-delivery-gallons\").is(\":focus\")) {\r\n $(\"input.ho-delivery-gallons\").val(optimalGallons);\r\n $(\".ho-gallons-price-wrapper\").removeClass(\"hidden\");\r\n }\r\n }\r\n\r\n if (!oilProduct.TankLevel) {\r\n errs.push({ text: \"Tank level is required.\", $el: self.$wrapperEl.find(\".ho-tank-level\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-level\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-level\"), true);\r\n }\r\n\r\n if (!oilProduct.TankLocation) {\r\n errs.push({\r\n text: \"Tank location is required.\",\r\n $el: self.$wrapperEl.find(\".ho-tank-location\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-location\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-tank-location\"), true);\r\n }\r\n\r\n if (!oilProduct.FillLocation) {\r\n errs.push({ text: \"Fill location is required.\" });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=tankfilllocation]\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=tankfilllocation]\"), true);\r\n }\r\n\r\n if (!oilProduct.AnnualUsage) {\r\n errs.push({ text: \"Annual usage is required.\", $el: self.$wrapperEl.find(\".ho-annual-usage\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-annual-usage\"), false);\r\n } else if (!$.isNumeric(oilProduct.AnnualUsage) || oilProduct.AnnualUsage <= 0) {\r\n errs.push({\r\n text: \"Annual usage is not a valid number.\",\r\n $el: self.$wrapperEl.find(\".ho-annual-usage\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-annual-usage\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-annual-usage\"), true);\r\n }\r\n\r\n if (!oilProduct.HeatWater) {\r\n errs.push({\r\n text: \"Hot water/oil usage is required.\",\r\n $el: self.$wrapperEl.find(\"input[name=ho-hot-water]\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=ho-hot-water]\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=ho-hot-water]\"), true);\r\n }\r\n\r\n if (!oilProduct.DeliverySchedule) {\r\n errs.push({\r\n text: \"A delivery schedule is required.\",\r\n $el: self.$wrapperEl.find(\".ho-delivery-schedule\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-schedule\"), false);\r\n } else if (\r\n oilProduct.DeliverySchedule === \"S\" &&\r\n (!oilProduct.DeliveryScheduleMonths || oilProduct.DeliveryScheduleMonths === \"000000000000\")\r\n ) {\r\n errs.push({\r\n text: \"A month selection is required for scheduled delivery.\",\r\n $el: self.$wrapperEl.find(\".ho-delivery-schedule\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-schedule\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-schedule\"), true);\r\n }\r\n\r\n if (\r\n oilProduct.DeliverySchedule === \"W\" &&\r\n oilProduct.isCod &&\r\n !oilProduct.DeliveryRequested &&\r\n oilProduct.DeliveryGallons < 1\r\n ) {\r\n errs.push({\r\n text: 'On-Demand Delivery requires payment up front, please make sure \"I\\'d like a heating oil delivery now\" is checked.',\r\n $el: self.$wrapperEl.find(\".ho-delivery-now\"),\r\n });\r\n }\r\n\r\n if (\r\n oilProduct.DeliveryRequested &&\r\n oilProduct.DeliveryGallons <\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonHeatingOil\r\n ) {\r\n errs.push({\r\n text:\r\n \"A minimum of \" +\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonHeatingOil +\r\n \" gallons must be selected when requesting a delivery.\",\r\n $el: self.$wrapperEl.find(\".ho-delivery-gallons\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-gallons\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-gallons\"), true);\r\n }\r\n\r\n if (\r\n oilProduct.DeliveryRequested &&\r\n oilProduct.TankSize &&\r\n oilProduct.DeliveryGallons > oilProduct.TankSize\r\n ) {\r\n errs.push({\r\n text: \"You have requested a delivery bigger than your specified tank size\",\r\n $el: self.$wrapperEl.find(\".ho-delivery-gallons\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-gallons\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-delivery-gallons\"), true);\r\n }\r\n\r\n if (oilProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy) {\r\n var prebuyGallons = parseInt(oilProduct.PreBuyGallons);\r\n if (!prebuyGallons) {\r\n errs.push(\"Prebuy gallons are required for Prebuy Price Plan.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-prebuy-gallons\"), false);\r\n } else if (!parseInt(prebuyGallons)) {\r\n errs.push(\"Please enter a valid gallon amount.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-prebuy-gallons\"), false);\r\n } else if (parseInt(prebuyGallons) && prebuyGallons < 1) {\r\n errs.push(\"Prebuy gallons must be greater than 0.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-prebuy-gallons\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".ho-prebuy-gallons\"), true);\r\n }\r\n }\r\n }\r\n\r\n callback(errs, showErrs, wasClicked);\r\n },\r\n validatePropaneProduct: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n var errs = [];\r\n var propaneProduct = self.args.Application.DeliveryPoints[0].PropaneProducts[0];\r\n var paymentType = self.args.Application.PaymentType;\r\n\r\n if (typeof propaneProduct !== \"undefined\" && propaneProduct) {\r\n if (propaneProduct.TankOwner !== \"none\") {\r\n if (!propaneProduct.TankSize) {\r\n errs.push({\r\n text: \"Tank size is required.\",\r\n $el: self.$wrapperEl.find(\".propane-tank-size\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-size\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-size\"), true);\r\n }\r\n\r\n if (!propaneProduct.TankLevel) {\r\n errs.push({\r\n text: \"Tank level is required.\",\r\n $el: self.$wrapperEl.find(\".propane-tank-level\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-level\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-level\"), true);\r\n }\r\n\r\n if (!propaneProduct.TankLocation) {\r\n errs.push({ text: \"Tank location is required.\" });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=pTankfilllocation]:first\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=pTankfilllocation]:first\"), true);\r\n }\r\n\r\n if (!propaneProduct.TankPlacement) {\r\n errs.push({\r\n text: \"Tank placement is required.\",\r\n $el: self.$wrapperEl.find(\".propane-tank-placement\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-placement\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-tank-placement\"), true);\r\n }\r\n if (\r\n propaneProduct.DeliverySchedule === \"W\" &&\r\n propaneProduct.isCod &&\r\n !propaneProduct.DeliveryRequested &&\r\n propaneProduct.DeliveryGallons < 1\r\n ) {\r\n errs.push({\r\n text: 'On-Demand Delivery requires payment up front, please make sure \"I\\'d like a propane delivery now\" is checked.',\r\n $el: self.$wrapperEl.find(\".propane-delivery-now\"),\r\n });\r\n }\r\n\r\n if (!propaneProduct.AlternateHeat) {\r\n errs.push({\r\n text: \"Alternate heat selection is required.\",\r\n $el: self.$wrapperEl.find(\"#propane-other-heating-source-yes\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"#propane-other-heating-source-yes\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"#propane-other-heating-source-yes\"), true);\r\n }\r\n\r\n if (\r\n propaneProduct.DeliveryRequested &&\r\n propaneProduct.DeliveryGallons <\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonPropane\r\n ) {\r\n errs.push({\r\n text:\r\n \"A minimum of \" +\r\n self.args.liquidFuelDeliveryDefaults.MinimumDeliveryGallonPropane +\r\n \" gallons must be selected when requesting a delivery.\",\r\n $el: self.$wrapperEl.find(\".propane-delivery-gallons\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-delivery-gallons\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-delivery-gallons\"), true);\r\n }\r\n\r\n if (!propaneProduct.DeliverySchedule) {\r\n errs.push({\r\n text: \"A delivery schedule is required.\",\r\n $el: self.$wrapperEl.find(\".propane-delivery-schedule\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-delivery-schedule\"), false);\r\n } else if (\r\n propaneProduct.DeliverySchedule === \"S\" &&\r\n (!propaneProduct.DeliveryScheduleMonths ||\r\n propaneProduct.DeliveryScheduleMonths === \"000000000000\")\r\n ) {\r\n errs.push({\r\n text: \"A month selection is required for scheduled delivery.\",\r\n $el: self.$wrapperEl.find(\".propane-delivery-schedule\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-delivery-schedule\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".propane-delivery-schedule\"), true);\r\n }\r\n\r\n if (propaneProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy) {\r\n var prebuyGallons = parseInt(propaneProduct.PreBuyGallons);\r\n if (!prebuyGallons) {\r\n errs.push(\"Prebuy gallons are required for Prebuy Price Plan.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".po-prebuy-gallons\"), false);\r\n } else if (!parseInt(prebuyGallons)) {\r\n errs.push(\"Please enter a valid gallon amount.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".po-prebuy-gallons\"), false);\r\n } else if (parseInt(prebuyGallons) && prebuyGallons < 1) {\r\n errs.push(\"Prebuy gallons must be greater than 0.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".po-prebuy-gallons\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".po-prebuy-gallons\"), true);\r\n }\r\n }\r\n }\r\n\r\n callback(errs, showErrs, wasClicked);\r\n }\r\n },\r\n setMobileNumberIndicator: function (args) {\r\n const self = this;\r\n if (args.PhoneNumber) {\r\n if (!(\"x\" + args.PhoneNumber in self.validatedPhoneNumbers)) {\r\n self.validatedPhoneNumbers[\"x\" + args.PhoneNumber] = \"in-transit\";\r\n cw.webservices.getJson(\r\n \"CustomerApplication/validate-mobile-number\",\r\n args.PhoneNumber,\r\n function (validNumber) {\r\n self.validatedPhoneNumbers[\"x\" + args.PhoneNumber] = validNumber; //cache lookup\r\n if (typeof args.callback === \"function\") {\r\n args.callback(validNumber);\r\n }\r\n return validNumber;\r\n }\r\n );\r\n } else {\r\n if (\r\n typeof args.callback === \"function\" &&\r\n self.validatedPhoneNumbers[\"x\" + args.PhoneNumber] !== \"in-transit\"\r\n ) {\r\n args.callback(self.validatedPhoneNumbers[\"x\" + args.PhoneNumber]);\r\n }\r\n\r\n return args.callback(self.validatedPhoneNumbers[\"x\" + args.PhoneNumber]);\r\n }\r\n } else {\r\n if (typeof args.callback === \"function\") {\r\n args.callback(false);\r\n }\r\n return false;\r\n }\r\n },\r\n setPhoneValidation: function ($target, initialState, validPhone) {\r\n if (initialState) {\r\n $target.find(\".sms-verify-failed\").addClass(\"hidden\");\r\n $target.find(\".sms-verified\").addClass(\"hidden\");\r\n $target.find(\".sms-verify-failed\").tooltip(\"hide\");\r\n $target.find(\".sms-verified\").tooltip(\"hide\");\r\n } else {\r\n if (!validPhone) {\r\n $target.find(\".sms-verify-failed\").removeClass(\"hidden\");\r\n $target.find(\".sms-verified\").addClass(\"hidden\");\r\n $target.find(\".sms-verify-failed\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n $target.find(\".sms-verified\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n } else {\r\n $target.find(\".sms-verified\").removeClass(\"hidden\");\r\n $target.find(\".sms-verify-failed\").addClass(\"hidden\");\r\n $target.find(\".sms-verified\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n $target.find(\".sms-verify-failed\").tooltip({\r\n trigger: \"hover click\",\r\n html: true,\r\n });\r\n }\r\n }\r\n },\r\n validateContactInfo: function (callback, showErrs, wasClicked, sourceEl) {\r\n const self = this;\r\n var err = [];\r\n var $phoneElWrapper = $(\"input.form-control.phone\").parent();\r\n\r\n var isSmallBusiness =\r\n self.args.Application.CustomerClassification &&\r\n self.args.Application.CustomerClassification === cw.appEnum.CustomerClass.SmallBusiness;\r\n var isResidential =\r\n !self.args.Application.CustomerClassification ||\r\n (self.args.Application.CustomerClassification &&\r\n self.args.Application.CustomerClassification === cw.appEnum.CustomerClass.Residential) ||\r\n !isSmallBusiness;\r\n\r\n if (isResidential && !self.args.Application.FirstName) {\r\n err.push({ text: \"First name is required.\", $el: self.$wrapperEl.find(\".first-name\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".first-name\"), false);\r\n } else if (isResidential && self.args.Application.FirstName) {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".first-name\"), true);\r\n }\r\n\r\n if (isSmallBusiness && !self.args.Application.CompanyName) {\r\n err.push({ text: \"Company name is required.\", $el: self.$wrapperEl.find(\".company-name\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".company-name\"), false);\r\n } else if (isSmallBusiness && self.args.Application.CompanyName) {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".company-name\"), true);\r\n }\r\n if (isResidential && !self.args.Application.LastName) {\r\n err.push({ text: \"Last name is required.\", $el: self.$wrapperEl.find(\".last-name\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".last-name\"), false);\r\n } else if (isResidential) {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".last-name\"), true);\r\n }\r\n\r\n if (!self.args.Application.PhoneNumber) {\r\n err.push({ text: \"Phone is required.\", $el: self.$wrapperEl.find(\".phone\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".phone\"), false);\r\n self.setPhoneValidation($phoneElWrapper, true);\r\n } else if (self.args.Application.PhoneNumber.length !== 10) {\r\n err.push(\"Phone number must 10 digits.\");\r\n self.setRequiredStarState(self.$wrapperEl.find(\".phone\"), false);\r\n self.setPhoneValidation($phoneElWrapper, true);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".phone\"), true);\r\n if (\r\n self.args.Application.SpecialOffersByTextMessaging ||\r\n self.args.Application.SpecialOffersByTextMessagingWC\r\n ) {\r\n self.setMobileNumberIndicator({\r\n PhoneNumber: self.args.Application.PhoneNumber,\r\n callback: function (validMobileNumber) {\r\n self.setPhoneValidation($phoneElWrapper, false, validMobileNumber);\r\n },\r\n });\r\n }\r\n }\r\n\r\n if (!self.args.Application.EmailAddress) {\r\n err.push({ text: \"Email is required.\", $el: self.$wrapperEl.find(\".email\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".email\"), false);\r\n } else if (!self.args.Application.EmailAddress.isValidEmail()) {\r\n err.push({ text: \"Email appears invalid\", $el: self.$wrapperEl.find(\".email\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".email\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".email\"), true);\r\n }\r\n\r\n if (\r\n self.args.Application.DeliveryPoints[0].ElectricProducts.length < 1 &&\r\n self.args.Application.DeliveryPoints[0].NatGasProducts.length < 1 &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length < 1 &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length < 1 &&\r\n self.args.Application.DeliveryPoints[0].ServiceContracts.length < 1\r\n ) {\r\n // no products configured\r\n\r\n err.push({\r\n text: \"There are no products in your cart, please add a product before continuing.\",\r\n $el: null,\r\n });\r\n }\r\n\r\n callback(err, showErrs, wasClicked);\r\n },\r\n setRequiredStarState: function ($el, isValid) {\r\n if ($el) {\r\n const $requiredStar = $el.closest(\".form-group\").find(\".required\");\r\n if ($requiredStar && $requiredStar.length > 0) {\r\n if (isValid && $requiredStar.hasClass(\"fa-star\")) {\r\n $requiredStar.removeClass(\"shipley-blue\").removeClass(\"fa-star\");\r\n $requiredStar.addClass(\"shipley-green\").addClass(\"fa-check\");\r\n } else if (!isValid && $requiredStar.hasClass(\"fa-check\")) {\r\n $requiredStar.removeClass(\"shipley-green\").removeClass(\"fa-check\");\r\n $requiredStar.addClass(\"shipley-blue\").addClass(\"fa-star\");\r\n }\r\n }\r\n }\r\n },\r\n validateServiceAddress: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n const err = [];\r\n\r\n if (!self.args.Application.DeliveryPoints[0].AddressLine1) {\r\n err.push({ text: \"Address Line 1 is required\", $el: self.$wrapperEl.find(\".del-address1\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-address1\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-address1\"), true);\r\n }\r\n\r\n if (!self.args.Application.DeliveryPoints[0].City) {\r\n err.push({ text: \"City is required\", $el: self.$wrapperEl.find(\".del-city\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-city\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-city\"), true);\r\n }\r\n\r\n if (!self.args.Application.DeliveryPoints[0].State) {\r\n err.push({ text: \"State is required\", $el: self.$wrapperEl.find(\".del-state\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-state\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-state\"), true);\r\n }\r\n\r\n if (!self.args.Application.DeliveryPoints[0].ZipCode) {\r\n err.push({ text: \"Zip Code is required\", $el: self.$wrapperEl.find(\".del-zip\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-zip\"), false);\r\n $(\".del-zip\").removeAttr(\"disabled\");\r\n } else if (!self.zipRegEx.test(self.args.Application.DeliveryPoints[0].ZipCode)) {\r\n err.push({ text: \"Zip Code does not appear valid\", $el: self.$wrapperEl.find(\".del-zip\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-zip\"), false);\r\n $(\".del-zip\").removeAttr(\"disabled\");\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-zip\"), true);\r\n }\r\n\r\n if (\r\n (self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0 ||\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0 ||\r\n self.args.Application.DeliveryPoints[0].ServiceOrders.length > 0) &&\r\n !self.args.Application.DeliveryPoints[0].DeliveryDirections\r\n ) {\r\n err.push({\r\n text: \"Special Instructions/Delivery directions for Driver is required\",\r\n $el: self.$wrapperEl.find(\".del-special-instructions\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-special-instructions\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".del-special-instructions\"), true);\r\n }\r\n\r\n //this is needed for credit, asking across the board because looking upo credit rules at this point is a lot of overhead\r\n if (\r\n self.args.Application.DeliveryPoints[0].PropertyStatus !== \"O\" &&\r\n self.args.Application.DeliveryPoints[0].PropertyStatus !== \"R\"\r\n ) {\r\n err.push({\r\n text: \"Please indicate property ownership.\",\r\n $el: self.$wrapperEl.find(\"input[name=property-ownership]\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=property-ownership]:first\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=property-ownership]:first\"), true);\r\n }\r\n callback(err, showErrs, wasClicked);\r\n },\r\n validateBillingAddress: function (callback, showErrs, wasClicked) {\r\n const self = this;\r\n self.$wrapperEl = $(\".cw-application\").parent();\r\n const $billingSameAddress = self.$wrapperEl.find(\"#billingSame\");\r\n\r\n if ($billingSameAddress.is(\":checked\") === false) {\r\n if (!self.args.Application.AddressLine1) {\r\n err.push({\r\n text: \"Billing Address Line 1 required\",\r\n $el: self.$wrapperEl.find(\".billing-address1\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-address1\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-address1\"), true);\r\n }\r\n\r\n if (!self.args.Application.City) {\r\n err.push({ text: \"Billing City required\", $el: self.$wrapperEl.find(\".billing-city\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-city\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-city\"), true);\r\n }\r\n\r\n if (!self.args.Application.State) {\r\n err.push({ text: \"Billing State required\", $el: self.$wrapperEl.find(\".billing-state\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-state\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-state\"), true);\r\n }\r\n\r\n if (!self.args.Application.ZipCode) {\r\n err.push({ text: \"Billing Zip Code required\", $el: self.$wrapperEl.find(\".billing-zip\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-zip\"), false);\r\n } else if (!self.zipRegEx.test(self.args.Application.ZipCode)) {\r\n err.push({\r\n text: \"Billing Zip Code does not appear valid\",\r\n $el: self.$wrapperEl.find(\".billing-zip\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-zip\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".billing-zip\"), true);\r\n }\r\n callback(err, showErrs, wasClicked);\r\n }\r\n },\r\n validatePayment: function (callback, showErrs, wasClickTriggered) {\r\n const self = this;\r\n let err = [];\r\n const $paymentWrapper = self.$wrapperEl.find(\".payment-select-wrapper\");\r\n\r\n const $paymentType = self.$wrapperEl.find(\".payment-type\");\r\n const propaneProduct =\r\n typeof self.args.Application.DeliveryPoints[0].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].PropaneProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].PropaneProducts[0]\r\n : null;\r\n const oilProduct =\r\n typeof self.args.Application.DeliveryPoints[0].HeatingOilProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[0].HeatingOilProducts.length > 0\r\n ? self.args.Application.DeliveryPoints[0].HeatingOilProducts[0]\r\n : null;\r\n\r\n const hasHOLP = self.args.Application.DeliveryPoints.some(function (dp) {\r\n return (\r\n (dp.HeatingOilProducts && dp.HeatingOilProducts.length > 0) ||\r\n (dp.PropaneProducts && dp.PropaneProducts.length > 0) ||\r\n (dp.ServiceContracts && dp.ServiceContracts.length > 0)\r\n );\r\n });\r\n\r\n const requiresDateOfBirth = hasHOLP && self.$wrapperEl.find(\".payment-type\").val() === \"CHK\";\r\n\r\n if (requiresDateOfBirth) {\r\n if (!self.args.Application.ApplicantDateOfBirth) {\r\n err.push({ text: \"Date of Birth is required.\", $el: self.$wrapperEl.find(\".birth-date\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".birth-date\"), false);\r\n } else if (moment(self.args.Application.ApplicantDateOfBirth) > moment().subtract(16, \"years\")) {\r\n err.push({\r\n text: \"Please enter a valid Birth Date.\",\r\n $el: self.$wrapperEl.find(\".birth-date\"),\r\n });\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".birth-date\"), true);\r\n }\r\n }\r\n\r\n if (\r\n self.args.Application.PaymentType === \"COD\" ||\r\n (oilProduct?.DeliverySchedule && oilProduct.DeliverySchedule === \"W\")\r\n ) {\r\n if (oilProduct && oilProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.Cap) {\r\n err.push({\r\n text: \"A CAP heating oil price plan cannot be selected with will call or <i>payment at time of delivery</i> applications.\",\r\n $el: $paymentType,\r\n });\r\n }\r\n if (oilProduct && oilProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.FixedPrice) {\r\n err.push({\r\n text: \"A fixed heating oil price plan cannot be selected with will call or <i>payment at time of delivery</i> applications.\",\r\n $el: $paymentType,\r\n });\r\n }\r\n }\r\n\r\n if (\r\n oilProduct &&\r\n self.args.Application.PaymentType === \"COD\" &&\r\n oilProduct.DeliverySchedule &&\r\n oilProduct.DeliverySchedule !== \"W\"\r\n ) {\r\n err.push({\r\n text: \"Invalid oil delivery schedule. Will call should be selected when payment type is set to COD.\",\r\n $el: $paymentType,\r\n });\r\n }\r\n\r\n // Depending on state of application, price type needs to be checked in two places\r\n\r\n const pricingTypeCode = oilProduct?.PricingTypeCode ? oilProduct.PricingTypeCode : null;\r\n if (\r\n pricingTypeCode &&\r\n pricingTypeCode === cw.appEnum.PricingTypeCode.Subscription &&\r\n $paymentType.val() !== \"CC\" &&\r\n $paymentType.val() !== \"EFT\"\r\n ) {\r\n err.push({ text: \"Subscription price plans require automatic payment.\", $el: $paymentType });\r\n }\r\n\r\n if (\r\n propaneProduct?.PricingTypeCode === cw.appEnum.PricingTypeCode.Subscription &&\r\n self.args.Application.PaymentType !== \"CC\" &&\r\n self.args.Application.PaymentType !== \"EFT\"\r\n ) {\r\n err.push({\r\n text: \"Subscription propane price plans require automatic payment.\",\r\n $el: $paymentType,\r\n });\r\n }\r\n\r\n if (\r\n propaneProduct &&\r\n (self.args.Application.PaymentType === \"COD\" || propaneProduct.DeliverySchedule === \"W\") &&\r\n ![\r\n cw.appEnum.PricingTypeCode.VariablePrice,\r\n cw.appEnum.PricingTypeCode.WillCallCashPrice,\r\n ].includes(propaneProduct.PricingTypeCode)\r\n ) {\r\n err.push({\r\n text: \"A market price propane plan must be selected with will call or <i>payment at time of delivery</i> applications, either change the selected propane product or payment type\",\r\n $el: $paymentType,\r\n });\r\n }\r\n\r\n if (\r\n propaneProduct &&\r\n self.args.Application.PaymentType === \"COD\" &&\r\n propaneProduct.DeliverySchedule &&\r\n propaneProduct.DeliverySchedule !== \"W\"\r\n ) {\r\n err.push({\r\n text: \"The <i>payment at time of delivery</i> option can only be selected with <i>Will Call</i> delivery schedules for oil and propane.\",\r\n $el: $paymentType,\r\n });\r\n }\r\n\r\n if (\r\n ((oilProduct && oilProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy) ||\r\n (propaneProduct && propaneProduct.PricingTypeCode === cw.appEnum.PricingTypeCode.PreBuy)) &&\r\n (self.args.Application.PaymentType !== \"CC\" || self.args.Application.PaymentType !== \"EFT\")\r\n ) {\r\n err.push({\r\n text: \"The <i>Pre-Buy </i> Price Plan may only be used with <i>Automatic Payment.</i>\",\r\n $el: $paymentType,\r\n });\r\n }\r\n\r\n if (self.args.Application.PaymentType && self.args.Application.PaymentType !== \"null\") {\r\n //yeah I'm not sure how this got set to a literal null\r\n if (self.args.Application.PaymentType === \"CC\" || self.args.Application.PaymentType === \"COD\") {\r\n err = self.realizeCC(wasClickTriggered).errs();\r\n } else if (self.args.Application.PaymentType === \"EFT\") {\r\n err = self.realizeEft().errs();\r\n }\r\n\r\n if (\r\n self.requiresCreditCheck.IsRequired &&\r\n !self.$wrapperEl.find(\"#credit-report\").is(\":checked\")\r\n ) {\r\n err.push({\r\n text: \"A Credit check is required for this order.\",\r\n $el: self.$wrapperEl.find(\".payment-type\"),\r\n });\r\n }\r\n\r\n if (self.$wrapperEl.find(\".payment-type\").length > 0) {\r\n self.setRequiredStarState(self.$wrapperEl.find(\".payment-type\"), true);\r\n }\r\n } else if (!$paymentWrapper.hasClass(\"hidden\")) {\r\n err.push({ text: \"A Payment Type is required.\", $el: self.$wrapperEl.find(\".payment-type\") });\r\n self.setRequiredStarState(self.$wrapperEl.find(\".payment-type\"), false);\r\n }\r\n\r\n const $budgetOpts = $paymentWrapper.find(\"input[name=budget]\");\r\n if ($budgetOpts.length > 0 && $paymentWrapper.find(\"input[name=budget]:checked\").length === 0) {\r\n err.push({\r\n text: \"A budget selection is required.\",\r\n $el: self.$wrapperEl.find(\"input[name=budget]\"),\r\n });\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=budget]\"), false);\r\n } else {\r\n self.setRequiredStarState(self.$wrapperEl.find(\"input[name=budget]\"), true);\r\n }\r\n\r\n callback(err, showErrs, wasClickTriggered);\r\n },\r\n realizeCC: function (wasClickedTriggered) {\r\n return {\r\n $ccNum: $(\"#credit-card-number\"),\r\n $cardHolderName: $(\"#credit-card-cardholder-name\"),\r\n $ccExpMonth: $(\"#cc-exp-month\"),\r\n $ccExpYear: $(\"#cc-exp-year\"),\r\n $ccCvv: $(\"#credit-card-cvv\"),\r\n $ccBillingZip: $(\"#credit-card-billing-zip\"),\r\n $ccPaymentProfileId: $(\".remove-credit-card\"),\r\n ccNum: function () {\r\n return this.$ccNum.val().replace(/[^0-9 ]+/g, \"\");\r\n },\r\n cardHolderName: function () {\r\n return this.$cardHolderName.val().trim();\r\n },\r\n ccExpMonth: function () {\r\n return this.$ccExpMonth.val();\r\n },\r\n ccExpYear: function () {\r\n return this.$ccExpYear.val();\r\n },\r\n ccCvv: function () {\r\n return this.$ccCvv.val().trim();\r\n },\r\n ccBillingZip: function () {\r\n return this.$ccBillingZip.val().trim();\r\n },\r\n errs: function () {\r\n const e = [];\r\n\r\n if (\r\n this.$ccPaymentProfileId.length > 0 &&\r\n this.$ccPaymentProfileId.data(\"paymentProfileId\") &&\r\n this.$ccPaymentProfileId.data(\"paymentProfileId\") > 0\r\n ) {\r\n //should be good at this point\r\n return [];\r\n }\r\n\r\n if (!this.ccNum()) {\r\n e.push({ text: \"Credit Card Number is required\", $el: this.$ccNum });\r\n cw.pages.application.setRequiredStarState(this.$ccNum, false);\r\n } else if (!this.ccNum().luhnCheck()) {\r\n e.push({ text: \"Credit Card Number appears invalid\", $el: this.$ccNum });\r\n cw.pages.application.setRequiredStarState(this.$ccNum, false);\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccNum, true);\r\n }\r\n\r\n if (!this.cardHolderName()) {\r\n e.push({ text: \"Card Holder's Name is required\", $el: this.$cardHolderName });\r\n cw.pages.application.setRequiredStarState(this.$cardHolderName, false);\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$cardHolderName, true);\r\n }\r\n\r\n let badMonth = false;\r\n if (!this.ccExpMonth()) {\r\n e.push({ text: \"Credit Card Expiration month is required\", $el: this.$ccExpMonth });\r\n cw.pages.application.setRequiredStarState(this.$ccExpMonth, false);\r\n badMonth = true;\r\n } else if (\r\n !$.isNumeric(this.ccExpMonth()) ||\r\n parseInt(this.ccExpMonth()) > 12 ||\r\n parseInt(this.ccExpMonth()) < 1\r\n ) {\r\n e.push({ text: \"Credit Card Expiration month appears invalid\", $el: this.$ccExpMonth });\r\n cw.pages.application.setRequiredStarState(this.$ccExpMonth, false);\r\n badMonth = true;\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccExpMonth, true);\r\n }\r\n\r\n let badYear = false;\r\n if (!this.ccExpYear()) {\r\n e.push({ text: \"Credit Card Expiration year is required\", $el: this.$ccExpYear });\r\n badYear = true;\r\n } else if (!$.isNumeric(this.ccExpYear()) || parseInt(this.ccExpYear()) < moment().year()) {\r\n e.push({ text: \"Credit Card Expiration year appears invalid\", $el: this.$ccExpYear });\r\n badYear = true;\r\n }\r\n\r\n if (!badMonth || !badYear) {\r\n const ccExpMoment = moment(\r\n parseInt(this.ccExpMonth()) + \"/1/\" + parseInt(this.ccExpYear()),\r\n \"M/D/YYYY\"\r\n ).endOf(\"month\");\r\n\r\n if (ccExpMoment.isBefore(moment().endOf(\"day\"))) {\r\n e.push({ text: \"Credit Card Expiration year appears expired\", $el: this.$ccExpYear });\r\n cw.pages.application.setRequiredStarState(this.$ccExpYear, false);\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccExpYear, true);\r\n }\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccExpYear, true);\r\n }\r\n\r\n if (this.ccCvv() === \"\") {\r\n e.push({ text: \"Credit card security/cvv code required\", $el: this.$ccCvv });\r\n cw.pages.application.setRequiredStarState(this.$ccCvv, false);\r\n } else if (!$.isNumeric(this.ccCvv()) || this.ccCvv().length < 3 || this.ccCvv().length > 4) {\r\n e.push({ text: \"Credit card security/cvv code appears invalid\", $el: this.$ccCvv });\r\n cw.pages.application.setRequiredStarState(this.$ccCvv, false);\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccCvv, true);\r\n }\r\n\r\n if (this.ccBillingZip() === \"\") {\r\n e.push({ text: \"Credit card billing zip is required\", $el: this.$ccBillingZip });\r\n cw.pages.application.setRequiredStarState(this.$ccBillingZip, false);\r\n } else if (!$.isNumeric(this.ccBillingZip()) || this.ccBillingZip().length !== 5) {\r\n e.push({ text: \"Credit card billing zip appears invalid\", $el: this.$ccBillingZip });\r\n cw.pages.application.setRequiredStarState(this.$ccBillingZip, false);\r\n } else {\r\n cw.pages.application.setRequiredStarState(this.$ccBillingZip, true);\r\n }\r\n\r\n if (\r\n e.length === 0 &&\r\n !wasClickedTriggered &&\r\n !(\r\n this.$ccPaymentProfileId.length > 0 &&\r\n this.$ccPaymentProfileId.data(\"paymentProfileId\") &&\r\n this.$ccPaymentProfileId.data(\"paymentProfileId\") > 0\r\n )\r\n ) {\r\n e.push({ text: cw.pages.application.CC_NOT_SAVED_ERR_TEXT });\r\n }\r\n\r\n return e;\r\n },\r\n };\r\n },\r\n realizeEft: function () {\r\n return {\r\n bankName: $(\"#bank-name\").val().trim(),\r\n accountType: $(\"input[name=eft-account-type]:checked\").val(),\r\n bankRoutingNumber: $(\"#bank-routing-number\").val().trim(),\r\n bankAccountNumber: $(\"#bank-account-number\").val().trim(),\r\n errs: function () {\r\n const errs = [];\r\n\r\n if (!this.accountType) {\r\n errs.push({\r\n text: \"A Bank Account Type is required\",\r\n $el: $(\"input[name=eft-account-type]\"),\r\n });\r\n cw.pages.application.setRequiredStarState($(\"input[name=eft-account-type]:first\"), false);\r\n } else {\r\n cw.pages.application.setRequiredStarState($(\"input[name=eft-account-type]:first\"), true);\r\n }\r\n\r\n if (!this.bankName) {\r\n errs.push({ text: \"Bank Name is required\", $el: $(\"#bank-name\") });\r\n cw.pages.application.setRequiredStarState($(\"#bank-name\"), false);\r\n } else {\r\n cw.pages.application.setRequiredStarState($(\"#bank-name\"), true);\r\n }\r\n\r\n if (this.bankRoutingNumber.length !== 9) {\r\n errs.push({ text: \"Routing Number must be 9 digits\", $el: $(\"#bank-routing-number\") });\r\n cw.pages.application.setRequiredStarState($(\"#bank-routing-number\"), false);\r\n } else {\r\n cw.pages.application.setRequiredStarState($(\"#bank-routing-number\"), true);\r\n }\r\n\r\n if (this.bankAccountNumber === \"\") {\r\n errs.push({ text: \"Account Number is required\", $el: $(\"#bank-account-number\") });\r\n cw.pages.application.setRequiredStarState($(\"#bank-account-number\"), false);\r\n } else if (!$.isNumeric(this.bankAccountNumber)) {\r\n errs.push({ text: \"Account Number should only be numbers\", $el: $(\"#bank-account-number\") });\r\n cw.pages.application.setRequiredStarState($(\"#bank-account-number\"), false);\r\n } else {\r\n cw.pages.application.setRequiredStarState($(\"#bank-account-number\"), true);\r\n }\r\n\r\n return errs;\r\n },\r\n };\r\n },\r\n recalcChargeNowPrice: function (isDomFired) {\r\n const self = this;\r\n let chargeNowPrice = 0,\r\n hoPrice = 0,\r\n ppPrice = 0;\r\n var i, j, h, myProd;\r\n var $noPaymentEl = self.$wrapperEl.find(\".no-payment-needed-wrapper\");\r\n var $paymentConfigEl = self.$wrapperEl.find(\".payment-select-wrapper\");\r\n var $dueNow = self.$wrapperEl.find(\"#due-now\");\r\n var $dueNowLabel = self.$wrapperEl.find(\"#due-now-label\");\r\n var $heatingOilTotal = self.$wrapperEl.find(\".ho-delivery-total\");\r\n var $propaneTotal = self.$wrapperEl.find(\".propane-delivery-total\");\r\n var requiresPaymentConfiguration = false;\r\n let isWillCallCash = false,\r\n isMarketPrice = false,\r\n hasUnknownTankSize = false,\r\n hasEmptyTankSize = false;\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints.length > 0\r\n ) {\r\n for (i = 0; i < self.args.Application.DeliveryPoints.length; i++) {\r\n if (\r\n typeof self.args.Application.DeliveryPoints[i].HeatingOilProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[i].HeatingOilProducts.length > 0\r\n ) {\r\n requiresPaymentConfiguration = true;\r\n for (j = 0; j < self.args.Application.DeliveryPoints[i].HeatingOilProducts.length; j++) {\r\n var prodPrice = 0;\r\n myProd = self.args.Application.DeliveryPoints[i].HeatingOilProducts[j];\r\n\r\n isWillCallCash = myProd.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice;\r\n isMarketPrice = myProd.PricingTypeCode === cw.appEnum.PricingTypeCode.VariablePrice;\r\n hasUnknownTankSize = $.isNumeric(myProd.TankSize) && parseInt(myProd.TankSize) === 1;\r\n\r\n if (myProd.DeliveryRequested && (isWillCallCash || isMarketPrice)) {\r\n chargeNowPrice +=\r\n myProd.DeliveryGallons * myProd.Price + (myProd.DeliveryFee ? myProd.DeliveryFee : 0);\r\n prodPrice =\r\n myProd.DeliveryGallons * myProd.Price + (myProd.DeliveryFee ? myProd.DeliveryFee : 0);\r\n }\r\n\r\n if (typeof myProd.InitialCharge !== \"undefined\" && myProd.InitialCharge > 0) {\r\n chargeNowPrice += myProd.InitialCharge;\r\n prodPrice += myProd.InitialCharge;\r\n }\r\n\r\n if (parseInt(myProd.PreBuyGallons) && parseInt(myProd.PreBuyGallons) > 0) {\r\n chargeNowPrice += self.calcPrebuyAmount(myProd);\r\n }\r\n\r\n hoPrice += prodPrice;\r\n }\r\n }\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints[i].PropaneProducts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[i].PropaneProducts.length > 0\r\n ) {\r\n requiresPaymentConfiguration = true;\r\n for (j = 0; j < self.args.Application.DeliveryPoints[i].PropaneProducts.length; j++) {\r\n prodPrice = 0;\r\n myProd = self.args.Application.DeliveryPoints[i].PropaneProducts[j];\r\n\r\n isWillCallCash = myProd.PricingTypeCode === cw.appEnum.PricingTypeCode.WillCallCashPrice;\r\n isMarketPrice = myProd.PricingTypeCode === cw.appEnum.PricingTypeCode.VariablePrice;\r\n hasUnknownTankSize = $.isNumeric(myProd.TankSize) && parseInt(myProd.TankSize) === 1;\r\n hasEmptyTankSize =\r\n !$.isNumeric(myProd.TankSize) || myProd.TankSize === \"\" || !myProd.TankSize;\r\n\r\n if (typeof myProd.InitialCharge !== \"undefined\" && myProd.InitialCharge > 0) {\r\n chargeNowPrice += myProd.InitialCharge;\r\n prodPrice = myProd.InitialCharge;\r\n }\r\n\r\n if (myProd.DeliveryRequested && (isWillCallCash || isMarketPrice)) {\r\n chargeNowPrice +=\r\n myProd.DeliveryGallons * myProd.Price + (myProd.DeliveryFee ? myProd.DeliveryFee : 0);\r\n prodPrice +=\r\n myProd.DeliveryGallons * myProd.Price + (myProd.DeliveryFee ? myProd.DeliveryFee : 0);\r\n }\r\n\r\n if (parseInt(myProd.PreBuyGallons) && parseInt(myProd.PreBuyGallons) > 0) {\r\n chargeNowPrice += self.calcPrebuyAmount(myProd);\r\n }\r\n\r\n ppPrice += prodPrice;\r\n }\r\n }\r\n\r\n if (\r\n typeof self.args.Application.DeliveryPoints[i].ServiceContracts !== \"undefined\" &&\r\n self.args.Application.DeliveryPoints[i].ServiceContracts.length > 0\r\n ) {\r\n requiresPaymentConfiguration = true;\r\n }\r\n }\r\n }\r\n\r\n self.recalcBudget(isDomFired);\r\n\r\n $paymentConfigEl.addClass(\"hidden\");\r\n $noPaymentEl.removeClass(\"hidden\");\r\n $dueNow.html(\"\").removeClass(\"require-cc-payment\");\r\n $dueNowLabel.addClass(\"hidden\");\r\n\r\n if (chargeNowPrice > 0 && (!hasUnknownTankSize || !hasEmptyTankSize)) {\r\n $noPaymentEl.addClass(\"hidden\");\r\n $dueNowLabel.removeClass(\"hidden\");\r\n $dueNow.html(\"$\" + chargeNowPrice.formatMoney(2)).addClass(\"require-cc-payment\");\r\n $paymentConfigEl.removeClass(\"hidden\");\r\n } else if (requiresPaymentConfiguration) {\r\n $noPaymentEl.addClass(\"hidden\");\r\n $paymentConfigEl.removeClass(\"hidden\");\r\n $dueNowLabel.addClass(\"hidden\");\r\n }\r\n\r\n if (hasEmptyTankSize) {\r\n $propaneTotal.html(\"$ --\");\r\n } else {\r\n $heatingOilTotal.html(\"$\" + (hoPrice ?? 0).formatMoney(2));\r\n $propaneTotal.html(\"$\" + (ppPrice ?? 0).formatMoney(2));\r\n }\r\n\r\n return { total: chargeNowPrice, HeatingOilTotal: hoPrice, PropaneTotal: ppPrice };\r\n },\r\n myBudgetStartDate: function (application) {\r\n const now = moment();\r\n if (application.BudgetStartDate) {\r\n return moment(application.BudgetStartDate);\r\n } else if (now.date() === 1) {\r\n return now.millisecond(0).seconds(0).minute(0).hour(0);\r\n } else {\r\n return moment()\r\n .millisecond(0)\r\n .seconds(0)\r\n .minute(0)\r\n .hour(0)\r\n .month(now.month() + 1)\r\n .date(1);\r\n }\r\n },\r\n budgetExtendedExpirationDate: function (app) {\r\n const self = this;\r\n return self.budgetEndDate(app).add(1, \"years\");\r\n },\r\n budgetFirstYearMonths: function (application) {\r\n const self = this;\r\n return Math.abs(self.myBudgetStartDate(application).diff(self.budgetCutOffDate, \"months\")) + 1;\r\n },\r\n budgetExtendedMonths: function (app) {\r\n const self = this;\r\n return (\r\n Math.abs(self.myBudgetStartDate(app).diff(self.budgetExtendedExpirationDate(app), \"months\")) + 1\r\n );\r\n },\r\n budgetEndDate: function (app) {\r\n const self = this;\r\n return self.myBudgetStartDate(app).add(self.budgetFirstYearMonths(app), \"months\").add(-1, \"days\");\r\n },\r\n recalcBudget: function (isDomFired) {\r\n const self = this;\r\n var i;\r\n var j;\r\n var minProductExpiration;\r\n var m;\r\n var shortenedBudgetPayment;\r\n var extendedBudgetPayment;\r\n var oilCost = 0;\r\n var propaneCost = 0;\r\n var totalFuelCost = 0;\r\n var feeTotal = 0;\r\n var myAnnualUsage;\r\n var budgetHtml = \"\";\r\n let hasBudgetProducts = false;\r\n var tankSetFee = 0;\r\n var tankRentalFee = 0;\r\n var serviceContractPrices = 0;\r\n var invalidProducts = [];\r\n let hasWillCall = false;\r\n var hasUnbudgetablePlan = false;\r\n var pricingTypeCode;\r\n var app = self.args.Application;\r\n\r\n if (app.PaymentType !== \"COD\") {\r\n if (app.DeliveryPoints) {\r\n for (i = 0; i < app.DeliveryPoints.length; i++) {\r\n if (app.DeliveryPoints[i].HeatingOilProducts) {\r\n if (app.DeliveryPoints[i].HeatingOilProducts) {\r\n for (j = 0; j < app.DeliveryPoints[i].HeatingOilProducts.length; j++) {\r\n if (\r\n app.DeliveryPoints[i].HeatingOilProducts[j].DeliverySchedule &&\r\n app.DeliveryPoints[i].HeatingOilProducts[j].DeliverySchedule === \"W\"\r\n ) {\r\n hasWillCall = true;\r\n }\r\n\r\n pricingTypeCode = app.DeliveryPoints[i].HeatingOilProducts[j].PricingTypeCode\r\n ? app.DeliveryPoints[i].HeatingOilProducts[j].PricingTypeCode\r\n : app.DeliveryPoints[i].HeatingOilProducts[j].SelectedPricePlan\r\n ? app.DeliveryPoints[i].HeatingOilProducts[j].SelectedPricePlan.PricingTypeCode\r\n : null;\r\n if (pricingTypeCode === cw.appEnum.PricingTypeCode.Subscription) {\r\n hasUnbudgetablePlan = true;\r\n }\r\n\r\n if (app.DeliveryPoints[i].HeatingOilProducts[j].PriceTermExpirationDate) {\r\n m = moment(app.DeliveryPoints[i].HeatingOilProducts[j].PriceTermExpirationDate);\r\n\r\n if (!minProductExpiration) {\r\n minProductExpiration = m;\r\n } else if (m.isBefore(minProductExpiration)) {\r\n minProductExpiration = m;\r\n }\r\n }\r\n\r\n if (\r\n app.DeliveryPoints[i].HeatingOilProducts[j].Fee &&\r\n $.isNumeric(app.DeliveryPoints[i].HeatingOilProducts[j].Fee)\r\n ) {\r\n feeTotal += parseFloat(app.DeliveryPoints[i].HeatingOilProducts[j].Fee);\r\n }\r\n\r\n if (\r\n app.DeliveryPoints[i].HeatingOilProducts[j].AnnualUsage &&\r\n $.isNumeric(app.DeliveryPoints[i].HeatingOilProducts[j].AnnualUsage) &&\r\n app.DeliveryPoints[i].HeatingOilProducts[j].AnnualUsage > 0\r\n ) {\r\n hasBudgetProducts = true;\r\n myAnnualUsage = parseFloat(app.DeliveryPoints[i].HeatingOilProducts[j].AnnualUsage);\r\n oilCost +=\r\n myAnnualUsage *\r\n (app.DeliveryPoints[i].HeatingOilProducts[j].Price +\r\n (app.DeliveryPoints[i].HeatingOilProducts[j].PricingTypeCode === 1\r\n ? self.args.marketPriceBudgetBuffer\r\n : 0.0));\r\n } else {\r\n if (invalidProducts.indexOf(\"heating oil\") === -1) {\r\n invalidProducts.push(\"heating oil\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (app.DeliveryPoints[i].PropaneProducts) {\r\n for (j = 0; j < app.DeliveryPoints[i].PropaneProducts.length; j++) {\r\n if (\r\n app.DeliveryPoints[i].PropaneProducts[j].DeliverySchedule &&\r\n app.DeliveryPoints[i].PropaneProducts[j].DeliverySchedule === \"W\"\r\n ) {\r\n hasWillCall = true;\r\n }\r\n\r\n pricingTypeCode = app.DeliveryPoints[i].PropaneProducts[j].PricingTypeCode\r\n ? app.DeliveryPoints[i].PropaneProducts[j].PricingTypeCode\r\n : null;\r\n if (pricingTypeCode === cw.appEnum.PricingTypeCode.Subscription) {\r\n hasUnbudgetablePlan = true;\r\n }\r\n\r\n if (app.DeliveryPoints[i].PropaneProducts[j].PriceTermExpirationDate) {\r\n m = moment(app.DeliveryPoints[i].PropaneProducts[j].PriceTermExpirationDate);\r\n\r\n if (!minProductExpiration) {\r\n minProductExpiration = m;\r\n } else if (m.isBefore(minProductExpiration)) {\r\n minProductExpiration = m;\r\n }\r\n }\r\n\r\n if (\r\n app.DeliveryPoints[i].PropaneProducts[j].Fee &&\r\n $.isNumeric(app.DeliveryPoints[i].PropaneProducts[j].Fee)\r\n ) {\r\n feeTotal += parseFloat(app.DeliveryPoints[i].PropaneProducts[j].Fee);\r\n }\r\n\r\n if (\r\n app.DeliveryPoints[i].PropaneProducts[j].AnnualUsage &&\r\n $.isNumeric(app.DeliveryPoints[i].PropaneProducts[j].AnnualUsage) &&\r\n app.DeliveryPoints[i].PropaneProducts[j].AnnualUsage > 0\r\n ) {\r\n hasBudgetProducts = true;\r\n myAnnualUsage = parseFloat(app.DeliveryPoints[i].PropaneProducts[j].AnnualUsage);\r\n propaneCost +=\r\n myAnnualUsage *\r\n (app.DeliveryPoints[i].PropaneProducts[j].Price +\r\n (app.DeliveryPoints[i].PropaneProducts[j].PricingTypeCode === 1\r\n ? self.args.marketPriceBudgetBuffer\r\n : 0.0));\r\n } else {\r\n if (invalidProducts.indexOf(\"propane\") === -1) {\r\n invalidProducts.push(\"propane\");\r\n }\r\n }\r\n\r\n if (app.DeliveryPoints[i].PropaneProducts[j].TankSetFee) {\r\n tankSetFee += app.DeliveryPoints[i].PropaneProducts[j].TankSetFee;\r\n }\r\n\r\n if (app.DeliveryPoints[i].PropaneProducts[j].TankRentalFee) {\r\n tankRentalFee += app.DeliveryPoints[i].PropaneProducts[j].TankRentalFee;\r\n }\r\n }\r\n }\r\n\r\n if (app.DeliveryPoints[i].ServiceContracts) {\r\n for (j = 0; j < app.DeliveryPoints[i].ServiceContracts.length; j++) {\r\n var sc = app.DeliveryPoints[i].ServiceContracts[j];\r\n if (sc.NormalPrice && sc.NormalPrice > 0) {\r\n hasBudgetProducts = true;\r\n serviceContractPrices += sc.NormalPrice;\r\n }\r\n }\r\n }\r\n }\r\n\r\n totalFuelCost = propaneCost + oilCost;\r\n\r\n if (hasBudgetProducts && invalidProducts.length === 0 && !hasWillCall && !hasUnbudgetablePlan) {\r\n if (self.budgetFirstYearMonths(app) > 6) {\r\n //need at least 6 months for Regular/shortened budget\r\n shortenedBudgetPayment =\r\n Math.ceil(\r\n (totalFuelCost + serviceContractPrices + tankRentalFee + feeTotal + tankSetFee) /\r\n self.budgetFirstYearMonths(app) /\r\n 10\r\n ) * 10;\r\n\r\n budgetHtml += Mustache.to_html(self.budgetItemTmpl, {\r\n BudgetPayment: shortenedBudgetPayment,\r\n BudgetMonths: self.budgetFirstYearMonths(app),\r\n BudgetStartDateFormatted: self.myBudgetStartDate(app).toISOString(),\r\n isBudgetYes: isDomFired\r\n ? $('[data-budget-key=\"shortenedBudget\"]:checked').length > 0\r\n : (app.Budget || app.Budget === \"True\") &&\r\n app.BudgetMonths === self.budgetFirstYearMonths(app),\r\n BudgetName:\r\n \"Regular/shortened budget (\" +\r\n self.budgetFirstYearMonths(app) +\r\n \" months): $\" +\r\n shortenedBudgetPayment.formatMoney(2),\r\n BudgetKey: \"shortenedBudget\",\r\n });\r\n }\r\n\r\n // Extended budget is always available\r\n extendedBudgetPayment =\r\n Math.ceil(\r\n ((totalFuelCost + serviceContractPrices + tankRentalFee) * 2 + feeTotal + tankSetFee) /\r\n self.budgetExtendedMonths(app) /\r\n 10\r\n ) * 10;\r\n budgetHtml += Mustache.to_html(self.budgetItemTmpl, {\r\n BudgetPayment: extendedBudgetPayment,\r\n BudgetMonths: self.budgetExtendedMonths(app),\r\n BudgetStartDateFormatted: self.myBudgetStartDate(app).toISOString(),\r\n isBudgetYes: isDomFired\r\n ? $('[data-budget-key=\"extendedBudget\"]:checked').length > 0\r\n : (app.Budget || app.Budget === \"True\") &&\r\n app.BudgetMonths === self.budgetExtendedMonths(app),\r\n BudgetName:\r\n \"Extended budget (\" +\r\n self.budgetExtendedMonths(app) +\r\n \" months): $\" +\r\n extendedBudgetPayment.formatMoney(2),\r\n BudgetKey: \"extendedBudget\",\r\n });\r\n\r\n budgetHtml += Mustache.to_html(self.budgetItemTmpl, {\r\n BudgetPayment: null,\r\n BudgetMonths: null,\r\n BudgetStartDateFormatted: null,\r\n isBudgetYes: isDomFired\r\n ? $('[data-budget-key=\"noBudget\"]:checked').length > 0\r\n : !app.Budget || app.Budget === \"False\",\r\n BudgetName: \"No Budget\",\r\n BudgetKey: \"noBudget\",\r\n });\r\n }\r\n }\r\n } else {\r\n budgetHtml +=\r\n '<div class=\"row\"><div class=\"col-md-12\">Budget not available for COD applications</div></div><div class=\"hidden\">';\r\n budgetHtml += Mustache.to_html(self.budgetItemTmpl, {\r\n BudgetPayment: null,\r\n BudgetMonths: null,\r\n BudgetStartDate: null,\r\n isBudgetYes: true,\r\n BudgetName: \"No Budget\",\r\n BudgetKey: \"noBudget\",\r\n });\r\n budgetHtml += \"</div>\";\r\n }\r\n\r\n $(\".budget-wrapper\").empty().html(budgetHtml);\r\n },\r\n },\r\n },\r\n });\r\n})((window.cw = window.cw || {}), jQuery);\r\n","/*! rangeslider.js - v2.3.2 | (c) 2018 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */\n(function(factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function($) {\n 'use strict';\n\n // Polyfill Number.isNaN(value)\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\n Number.isNaN = Number.isNaN || function(value) {\n return typeof value === 'number' && value !== value;\n };\n\n /**\n * Range feature detection\n * @return {Boolean}\n */\n function supportsRange() {\n var input = document.createElement('input');\n input.setAttribute('type', 'range');\n return input.type !== 'text';\n }\n\n var pluginName = 'rangeslider',\n pluginIdentifier = 0,\n hasInputRangeSupport = supportsRange(),\n defaults = {\n polyfill: true,\n orientation: 'horizontal',\n rangeClass: 'rangeslider',\n disabledClass: 'rangeslider--disabled',\n activeClass: 'rangeslider--active',\n horizontalClass: 'rangeslider--horizontal',\n verticalClass: 'rangeslider--vertical',\n fillClass: 'rangeslider__fill',\n handleClass: 'rangeslider__handle',\n startEvent: ['mousedown', 'touchstart', 'pointerdown'],\n moveEvent: ['mousemove', 'touchmove', 'pointermove'],\n endEvent: ['mouseup', 'touchend', 'pointerup']\n },\n constants = {\n orientation: {\n horizontal: {\n dimension: 'width',\n direction: 'left',\n directionStyle: 'left',\n coordinate: 'x'\n },\n vertical: {\n dimension: 'height',\n direction: 'top',\n directionStyle: 'bottom',\n coordinate: 'y'\n }\n }\n };\n\n /**\n * Delays a function for the given number of milliseconds, and then calls\n * it with the arguments supplied.\n *\n * @param {Function} fn [description]\n * @param {Number} wait [description]\n * @return {Function}\n */\n function delay(fn, wait) {\n var args = Array.prototype.slice.call(arguments, 2);\n return setTimeout(function(){ return fn.apply(null, args); }, wait);\n }\n\n /**\n * Returns a debounced function that will make sure the given\n * function is not triggered too much.\n *\n * @param {Function} fn Function to debounce.\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\n * @return {Function}\n */\n function debounce(fn, debounceDuration) {\n debounceDuration = debounceDuration || 100;\n return function() {\n if (!fn.debouncing) {\n var args = Array.prototype.slice.apply(arguments);\n fn.lastReturnVal = fn.apply(window, args);\n fn.debouncing = true;\n }\n clearTimeout(fn.debounceTimeout);\n fn.debounceTimeout = setTimeout(function(){\n fn.debouncing = false;\n }, debounceDuration);\n return fn.lastReturnVal;\n };\n }\n\n /**\n * Check if a `element` is visible in the DOM\n *\n * @param {Element} element\n * @return {Boolean}\n */\n function isHidden(element) {\n return (\n element && (\n element.offsetWidth === 0 ||\n element.offsetHeight === 0 ||\n // Also Consider native `<details>` elements.\n element.open === false\n )\n );\n }\n\n /**\n * Get hidden parentNodes of an `element`\n *\n * @param {Element} element\n * @return {[type]}\n */\n function getHiddenParentNodes(element) {\n var parents = [],\n node = element.parentNode;\n\n while (isHidden(node)) {\n parents.push(node);\n node = node.parentNode;\n }\n return parents;\n }\n\n /**\n * Returns dimensions for an element even if it is not visible in the DOM.\n *\n * @param {Element} element\n * @param {String} key (e.g. offsetWidth …)\n * @return {Number}\n */\n function getDimension(element, key) {\n var hiddenParentNodes = getHiddenParentNodes(element),\n hiddenParentNodesLength = hiddenParentNodes.length,\n inlineStyle = [],\n dimension = element[key];\n\n // Used for native `<details>` elements\n function toggleOpenProperty(element) {\n if (typeof element.open !== 'undefined') {\n element.open = (element.open) ? false : true;\n }\n }\n\n if (hiddenParentNodesLength) {\n for (var i = 0; i < hiddenParentNodesLength; i++) {\n\n // Cache style attribute to restore it later.\n inlineStyle[i] = hiddenParentNodes[i].style.cssText;\n\n // visually hide\n if (hiddenParentNodes[i].style.setProperty) {\n hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\n } else {\n hiddenParentNodes[i].style.cssText += ';display: block !important';\n }\n hiddenParentNodes[i].style.height = '0';\n hiddenParentNodes[i].style.overflow = 'hidden';\n hiddenParentNodes[i].style.visibility = 'hidden';\n toggleOpenProperty(hiddenParentNodes[i]);\n }\n\n // Update dimension\n dimension = element[key];\n\n for (var j = 0; j < hiddenParentNodesLength; j++) {\n\n // Restore the style attribute\n hiddenParentNodes[j].style.cssText = inlineStyle[j];\n toggleOpenProperty(hiddenParentNodes[j]);\n }\n }\n return dimension;\n }\n\n /**\n * Returns the parsed float or the default if it failed.\n *\n * @param {String} str\n * @param {Number} defaultValue\n * @return {Number}\n */\n function tryParseFloat(str, defaultValue) {\n var value = parseFloat(str);\n return Number.isNaN(value) ? defaultValue : value;\n }\n\n /**\n * Capitalize the first letter of string\n *\n * @param {String} str\n * @return {String}\n */\n function ucfirst(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n }\n\n /**\n * Plugin\n * @param {String} element\n * @param {Object} options\n */\n function Plugin(element, options) {\n this.$window = $(window);\n this.$document = $(document);\n this.$element = $(element);\n this.options = $.extend( {}, defaults, options );\n this.polyfill = this.options.polyfill;\n this.orientation = this.$element[0].getAttribute('data-orientation') || this.options.orientation;\n this.onInit = this.options.onInit;\n this.onSlide = this.options.onSlide;\n this.onSlideEnd = this.options.onSlideEnd;\n this.DIMENSION = constants.orientation[this.orientation].dimension;\n this.DIRECTION = constants.orientation[this.orientation].direction;\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle;\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\n\n // Plugin should only be used as a polyfill\n if (this.polyfill) {\n // Input range support?\n if (hasInputRangeSupport) { return false; }\n }\n\n this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);\n this.startEvent = this.options.startEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\n this.moveEvent = this.options.moveEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\n this.endEvent = this.options.endEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;\n this.toFixed = (this.step + '').replace('.', '').length - 1;\n this.$fill = $('<div class=\"' + this.options.fillClass + '\" />');\n this.$handle = $('<div class=\"' + this.options.handleClass + '\" />');\n this.$range = $('<div class=\"' + this.options.rangeClass + ' ' + this.options[this.orientation + 'Class'] + '\" id=\"' + this.identifier + '\" />').insertAfter(this.$element).prepend(this.$fill, this.$handle);\n\n // visually hide the input\n this.$element.css({\n 'position': 'absolute',\n 'width': '1px',\n 'height': '1px',\n 'overflow': 'hidden',\n 'opacity': '0'\n });\n\n // Store context\n this.handleDown = $.proxy(this.handleDown, this);\n this.handleMove = $.proxy(this.handleMove, this);\n this.handleEnd = $.proxy(this.handleEnd, this);\n\n this.init();\n\n // Attach Events\n var _this = this;\n this.$window.on('resize.' + this.identifier, debounce(function() {\n // Simulate resizeEnd event.\n delay(function() { _this.update(false, false); }, 300);\n }, 20));\n\n this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);\n\n // Listen to programmatic value changes\n this.$element.on('change.' + this.identifier, function(e, data) {\n if (data && data.origin === _this.identifier) {\n return;\n }\n\n var value = e.target.value,\n pos = _this.getPositionFromValue(value);\n _this.setPosition(pos);\n });\n }\n\n Plugin.prototype.init = function() {\n this.update(true, false);\n\n if (this.onInit && typeof this.onInit === 'function') {\n this.onInit();\n }\n };\n\n Plugin.prototype.update = function(updateAttributes, triggerSlide) {\n updateAttributes = updateAttributes || false;\n\n if (updateAttributes) {\n this.min = tryParseFloat(this.$element[0].getAttribute('min'), 0);\n this.max = tryParseFloat(this.$element[0].getAttribute('max'), 100);\n this.value = tryParseFloat(this.$element[0].value, Math.round(this.min + (this.max-this.min)/2));\n this.step = tryParseFloat(this.$element[0].getAttribute('step'), 1);\n }\n\n this.handleDimension = getDimension(this.$handle[0], 'offset' + ucfirst(this.DIMENSION));\n this.rangeDimension = getDimension(this.$range[0], 'offset' + ucfirst(this.DIMENSION));\n this.maxHandlePos = this.rangeDimension - this.handleDimension;\n this.grabPos = this.handleDimension / 2;\n this.position = this.getPositionFromValue(this.value);\n\n // Consider disabled state\n if (this.$element[0].disabled) {\n this.$range.addClass(this.options.disabledClass);\n } else {\n this.$range.removeClass(this.options.disabledClass);\n }\n\n this.setPosition(this.position, triggerSlide);\n };\n\n Plugin.prototype.handleDown = function(e) {\n e.preventDefault();\n\n // Only respond to mouse main button clicks (usually the left button)\n if (e.button && e.button !== 0) { return; }\n\n this.$document.on(this.moveEvent, this.handleMove);\n this.$document.on(this.endEvent, this.handleEnd);\n\n // add active class because Firefox is ignoring\n // the handle:active pseudo selector because of `e.preventDefault();`\n this.$range.addClass(this.options.activeClass);\n\n // If we click on the handle don't set the new position\n if ((' ' + e.target.className + ' ').replace(/[\\n\\t]/g, ' ').indexOf(this.options.handleClass) > -1) {\n return;\n }\n\n var pos = this.getRelativePosition(e),\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\n handlePos = this.getPositionFromNode(this.$handle[0]) - rangePos,\n setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\n\n this.setPosition(setPos);\n\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\n this.grabPos = pos - handlePos;\n }\n };\n\n Plugin.prototype.handleMove = function(e) {\n e.preventDefault();\n var pos = this.getRelativePosition(e);\n var setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);\n this.setPosition(setPos);\n };\n\n Plugin.prototype.handleEnd = function(e) {\n e.preventDefault();\n this.$document.off(this.moveEvent, this.handleMove);\n this.$document.off(this.endEvent, this.handleEnd);\n\n this.$range.removeClass(this.options.activeClass);\n\n // Ok we're done fire the change event\n this.$element.trigger('change', { origin: this.identifier });\n\n if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {\n this.onSlideEnd(this.position, this.value);\n }\n };\n\n Plugin.prototype.cap = function(pos, min, max) {\n if (pos < min) { return min; }\n if (pos > max) { return max; }\n return pos;\n };\n\n Plugin.prototype.setPosition = function(pos, triggerSlide) {\n var value, newPos;\n\n if (triggerSlide === undefined) {\n triggerSlide = true;\n }\n\n // Snapping steps\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\n newPos = this.getPositionFromValue(value);\n\n // Update ui\n this.$fill[0].style[this.DIMENSION] = (newPos + this.grabPos) + 'px';\n this.$handle[0].style[this.DIRECTION_STYLE] = newPos + 'px';\n this.setValue(value);\n\n // Update globals\n this.position = newPos;\n this.value = value;\n\n if (triggerSlide && this.onSlide && typeof this.onSlide === 'function') {\n this.onSlide(newPos, value);\n }\n };\n\n // Returns element position relative to the parent\n Plugin.prototype.getPositionFromNode = function(node) {\n var i = 0;\n while (node !== null) {\n i += node.offsetLeft;\n node = node.offsetParent;\n }\n return i;\n };\n\n Plugin.prototype.getRelativePosition = function(e) {\n // Get the offset DIRECTION relative to the viewport\n var ucCoordinate = ucfirst(this.COORDINATE),\n rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],\n pageCoordinate = 0;\n\n if (typeof e.originalEvent['client' + ucCoordinate] !== 'undefined') {\n pageCoordinate = e.originalEvent['client' + ucCoordinate];\n }\n else if (\n e.originalEvent.touches &&\n e.originalEvent.touches[0] &&\n typeof e.originalEvent.touches[0]['client' + ucCoordinate] !== 'undefined'\n ) {\n pageCoordinate = e.originalEvent.touches[0]['client' + ucCoordinate];\n }\n else if(e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== 'undefined') {\n pageCoordinate = e.currentPoint[this.COORDINATE];\n }\n\n return pageCoordinate - rangePos;\n };\n\n Plugin.prototype.getPositionFromValue = function(value) {\n var percentage, pos;\n percentage = (value - this.min)/(this.max - this.min);\n pos = (!Number.isNaN(percentage)) ? percentage * this.maxHandlePos : 0;\n return pos;\n };\n\n Plugin.prototype.getValueFromPosition = function(pos) {\n var percentage, value;\n percentage = ((pos) / (this.maxHandlePos || 1));\n value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;\n return Number((value).toFixed(this.toFixed));\n };\n\n Plugin.prototype.setValue = function(value) {\n if (value === this.value && this.$element[0].value !== '') {\n return;\n }\n\n // Set the new value and fire the `input` event\n this.$element\n .val(value)\n .trigger('input', { origin: this.identifier });\n };\n\n Plugin.prototype.destroy = function() {\n this.$document.off('.' + this.identifier);\n this.$window.off('.' + this.identifier);\n\n this.$element\n .off('.' + this.identifier)\n .removeAttr('style')\n .removeData('plugin_' + pluginName);\n\n // Remove the generated markup\n if (this.$range && this.$range.length) {\n this.$range[0].parentNode.removeChild(this.$range[0]);\n }\n };\n\n // A really lightweight plugin wrapper around the constructor,\n // preventing against multiple instantiations\n $.fn[pluginName] = function(options) {\n var args = Array.prototype.slice.call(arguments, 1);\n\n return this.each(function() {\n var $this = $(this),\n data = $this.data('plugin_' + pluginName);\n\n // Create a new instance.\n if (!data) {\n $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));\n }\n\n // Make it possible to access methods from public.\n // e.g `$element.rangeslider('method');`\n if (typeof options === 'string') {\n data[options].apply(data, args);\n }\n });\n };\n\n return 'rangeslider.js is available in jQuery context e.g $(selector).rangeslider(options);';\n\n}));\n","/*!\n * Responsive Bootstrap Toolkit\n * Author: Maciej Gurban\n * License: MIT\n * Version: 2.6.3 (2016-06-21)\n * Origin: https://github.com/maciej-gurban/responsive-bootstrap-toolkit\n */\nvar ResponsiveBootstrapToolkit = (function($){\n\n // Internal methods\n var internal = {\n\n /**\n * Breakpoint detection divs for each framework version\n */\n detectionDivs: {\n // Bootstrap 3\n bootstrap: {\n 'xs': $('<div class=\"device-xs visible-xs visible-xs-block\"></div>'),\n 'sm': $('<div class=\"device-sm visible-sm visible-sm-block\"></div>'),\n 'md': $('<div class=\"device-md visible-md visible-md-block\"></div>'),\n 'lg': $('<div class=\"device-lg visible-lg visible-lg-block\"></div>')\n },\n // Foundation 5\n foundation: {\n 'small': $('<div class=\"device-xs show-for-small-only\"></div>'),\n 'medium': $('<div class=\"device-sm show-for-medium-only\"></div>'),\n 'large': $('<div class=\"device-md show-for-large-only\"></div>'),\n 'xlarge': $('<div class=\"device-lg show-for-xlarge-only\"></div>')\n }\n },\n\n /**\n * Append visibility divs after DOM laoded\n */\n applyDetectionDivs: function() {\n $(document).ready(function(){\n $.each(self.breakpoints, function(alias){\n self.breakpoints[alias].appendTo('.responsive-bootstrap-toolkit');\n });\n });\n },\n\n /**\n * Determines whether passed string is a parsable expression\n */\n isAnExpression: function( str ) {\n return (str.charAt(0) == '<' || str.charAt(0) == '>');\n },\n\n /**\n * Splits the expression in into <|> [=] alias\n */\n splitExpression: function( str ) {\n\n // Used operator\n var operator = str.charAt(0);\n // Include breakpoint equal to alias?\n var orEqual = (str.charAt(1) == '=') ? true : false;\n\n /**\n * Index at which breakpoint name starts.\n *\n * For: >sm, index = 1\n * For: >=sm, index = 2\n */\n var index = 1 + (orEqual ? 1 : 0);\n\n /**\n * The remaining part of the expression, after the operator, will be treated as the\n * breakpoint name to compare with\n */\n var breakpointName = str.slice(index);\n\n return {\n operator: operator,\n orEqual: orEqual,\n breakpointName: breakpointName\n };\n },\n\n /**\n * Returns true if currently active breakpoint matches the expression\n */\n isAnyActive: function( breakpoints ) {\n var found = false;\n $.each(breakpoints, function( index, alias ) {\n // Once first breakpoint matches, return true and break out of the loop\n if( self.breakpoints[ alias ].is(':visible') ) {\n found = true;\n return false;\n }\n });\n return found;\n },\n\n /**\n * Determines whether current breakpoint matches the expression given\n */\n isMatchingExpression: function( str ) {\n\n var expression = internal.splitExpression( str );\n\n // Get names of all breakpoints\n var breakpointList = Object.keys(self.breakpoints);\n\n // Get index of sought breakpoint in the list\n var pos = breakpointList.indexOf( expression.breakpointName );\n\n // Breakpoint found\n if( pos !== -1 ) {\n\n var start = 0;\n var end = 0;\n\n /**\n * Parsing viewport.is('<=md') we interate from smallest breakpoint ('xs') and end\n * at 'md' breakpoint, indicated in the expression,\n * That makes: start = 0, end = 2 (index of 'md' breakpoint)\n *\n * Parsing viewport.is('<md') we start at index 'xs' breakpoint, and end at\n * 'sm' breakpoint, one before 'md'.\n * Which makes: start = 0, end = 1\n */\n if( expression.operator == '<' ) {\n start = 0;\n end = expression.orEqual ? ++pos : pos;\n }\n /**\n * Parsing viewport.is('>=sm') we interate from breakpoint 'sm' and end at the end\n * of breakpoint list.\n * That makes: start = 1, end = undefined\n *\n * Parsing viewport.is('>sm') we start at breakpoint 'md' and end at the end of\n * breakpoint list.\n * Which makes: start = 2, end = undefined\n */\n if( expression.operator == '>' ) {\n start = expression.orEqual ? pos : ++pos;\n end = undefined;\n }\n\n var acceptedBreakpoints = breakpointList.slice(start, end);\n\n return internal.isAnyActive( acceptedBreakpoints );\n\n }\n }\n\n };\n\n // Public methods and properties\n var self = {\n\n /**\n * Determines default debouncing interval of 'changed' method\n */\n interval: 300,\n\n /**\n *\n */\n framework: null,\n\n /**\n * Breakpoint aliases, listed from smallest to biggest\n */\n breakpoints: null,\n\n /**\n * Returns true if current breakpoint matches passed alias\n */\n is: function( str ) {\n if( internal.isAnExpression( str ) ) {\n return internal.isMatchingExpression( str );\n }\n return self.breakpoints[ str ] && self.breakpoints[ str ].is(':visible');\n },\n\n /**\n * Determines which framework-specific breakpoint detection divs to use\n */\n use: function( frameworkName, breakpoints ) {\n self.framework = frameworkName.toLowerCase();\n\n if( self.framework === 'bootstrap' || self.framework === 'foundation') {\n self.breakpoints = internal.detectionDivs[ self.framework ];\n } else {\n self.breakpoints = breakpoints;\n }\n\n internal.applyDetectionDivs();\n },\n\n /**\n * Returns current breakpoint alias\n */\n current: function(){\n var name = 'unrecognized';\n $.each(self.breakpoints, function(alias){\n if (self.is(alias)) {\n name = alias;\n }\n });\n return name;\n },\n\n /*\n * Waits specified number of miliseconds before executing a callback\n */\n changed: function(fn, ms) {\n var timer;\n return function(){\n clearTimeout(timer);\n timer = setTimeout(function(){\n fn();\n }, ms || self.interval);\n };\n }\n\n };\n\n // Create a placeholder\n $(document).ready(function(){\n $('<div class=\"responsive-bootstrap-toolkit\"></div>').appendTo('body');\n });\n\n if( self.framework === null ) {\n self.use('bootstrap');\n }\n\n return self;\n\n})(jQuery);\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = ResponsiveBootstrapToolkit;\n}\n","// Generated by CoffeeScript 1.6.2\n/**\n@license Sticky-kit v1.1.3 | WTFPL | Leaf Corcoran 2015 | http://leafo.net\n*/\n\n\n(function() {\n var $, win;\n\n $ = this.jQuery || window.jQuery;\n\n win = $(window);\n\n $.fn.stick_in_parent = function(opts) {\n var doc, elm, enable_bottoming, inner_scrolling, manual_spacer, offset_top, outer_width, parent_selector, recalc_every, sticky_class, _fn, _i, _len;\n\n if (opts == null) {\n opts = {};\n }\n sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, recalc_every = opts.recalc_every, parent_selector = opts.parent, offset_top = opts.offset_top, manual_spacer = opts.spacer, enable_bottoming = opts.bottoming;\n if (offset_top == null) {\n offset_top = 0;\n }\n if (parent_selector == null) {\n parent_selector = void 0;\n }\n if (inner_scrolling == null) {\n inner_scrolling = true;\n }\n if (sticky_class == null) {\n sticky_class = \"is_stuck\";\n }\n doc = $(document);\n if (enable_bottoming == null) {\n enable_bottoming = true;\n }\n outer_width = function(el) {\n var computed, w, _el;\n\n if (window.getComputedStyle) {\n _el = el[0];\n computed = window.getComputedStyle(el[0]);\n w = parseFloat(computed.getPropertyValue(\"width\")) + parseFloat(computed.getPropertyValue(\"margin-left\")) + parseFloat(computed.getPropertyValue(\"margin-right\"));\n if (computed.getPropertyValue(\"box-sizing\") !== \"border-box\") {\n w += parseFloat(computed.getPropertyValue(\"border-left-width\")) + parseFloat(computed.getPropertyValue(\"border-right-width\")) + parseFloat(computed.getPropertyValue(\"padding-left\")) + parseFloat(computed.getPropertyValue(\"padding-right\"));\n }\n return w;\n } else {\n return el.outerWidth(true);\n }\n };\n _fn = function(elm, padding_bottom, parent_top, parent_height, top, height, el_float, detached) {\n var bottomed, detach, fixed, last_pos, last_scroll_height, offset, parent, recalc, recalc_and_tick, recalc_counter, spacer, tick;\n\n if (elm.data(\"sticky_kit\")) {\n return;\n }\n elm.data(\"sticky_kit\", true);\n last_scroll_height = doc.height();\n parent = elm.parent();\n if (parent_selector != null) {\n parent = parent.closest(parent_selector);\n }\n if (!parent.length) {\n throw \"failed to find stick parent\";\n }\n fixed = false;\n bottomed = false;\n spacer = manual_spacer != null ? manual_spacer && elm.closest(manual_spacer) : $(\"<div />\");\n if (spacer) {\n spacer.css('position', elm.css('position'));\n }\n recalc = function() {\n var border_top, padding_top, restore;\n\n if (detached) {\n return;\n }\n last_scroll_height = doc.height();\n border_top = parseInt(parent.css(\"border-top-width\"), 10);\n padding_top = parseInt(parent.css(\"padding-top\"), 10);\n padding_bottom = parseInt(parent.css(\"padding-bottom\"), 10);\n parent_top = parent.offset().top + border_top + padding_top;\n parent_height = parent.height();\n if (fixed) {\n fixed = false;\n bottomed = false;\n if (manual_spacer == null) {\n elm.insertAfter(spacer);\n spacer.detach();\n }\n elm.css({\n position: \"\",\n top: \"\",\n width: \"\",\n bottom: \"\"\n }).removeClass(sticky_class);\n restore = true;\n }\n top = elm.offset().top - (parseInt(elm.css(\"margin-top\"), 10) || 0) - offset_top;\n height = elm.outerHeight(true);\n el_float = elm.css(\"float\");\n if (spacer) {\n spacer.css({\n width: outer_width(elm),\n height: height,\n display: elm.css(\"display\"),\n \"vertical-align\": elm.css(\"vertical-align\"),\n \"float\": el_float\n });\n }\n if (restore) {\n return tick();\n }\n };\n recalc();\n if (height === parent_height) {\n return;\n }\n last_pos = void 0;\n offset = offset_top;\n recalc_counter = recalc_every;\n tick = function() {\n var css, delta, recalced, scroll, will_bottom, win_height;\n\n if (detached) {\n return;\n }\n recalced = false;\n if (recalc_counter != null) {\n recalc_counter -= 1;\n if (recalc_counter <= 0) {\n recalc_counter = recalc_every;\n recalc();\n recalced = true;\n }\n }\n if (!recalced && doc.height() !== last_scroll_height) {\n recalc();\n recalced = true;\n }\n scroll = win.scrollTop();\n if (last_pos != null) {\n delta = scroll - last_pos;\n }\n last_pos = scroll;\n if (fixed) {\n if (enable_bottoming) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n if (bottomed && !will_bottom) {\n bottomed = false;\n elm.css({\n position: \"fixed\",\n bottom: \"\",\n top: offset\n }).trigger(\"sticky_kit:unbottom\");\n }\n }\n if (scroll < top) {\n fixed = false;\n offset = offset_top;\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.detach();\n }\n css = {\n position: \"\",\n width: \"\",\n top: \"\"\n };\n elm.css(css).removeClass(sticky_class).trigger(\"sticky_kit:unstick\");\n }\n if (inner_scrolling) {\n win_height = win.height();\n if (height + offset_top > win_height) {\n if (!bottomed) {\n offset -= delta;\n offset = Math.max(win_height - height, offset);\n offset = Math.min(offset_top, offset);\n if (fixed) {\n elm.css({\n top: offset + \"px\"\n });\n }\n }\n }\n }\n } else {\n if (scroll > top) {\n fixed = true;\n css = {\n position: \"fixed\",\n top: offset\n };\n css.width = elm.css(\"box-sizing\") === \"border-box\" ? elm.outerWidth() + \"px\" : elm.width() + \"px\";\n elm.css(css).addClass(sticky_class);\n if (manual_spacer == null) {\n elm.after(spacer);\n if (el_float === \"left\" || el_float === \"right\") {\n spacer.append(elm);\n }\n }\n elm.trigger(\"sticky_kit:stick\");\n }\n }\n if (fixed && enable_bottoming) {\n if (will_bottom == null) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n }\n if (!bottomed && will_bottom) {\n bottomed = true;\n if (parent.css(\"position\") === \"static\") {\n parent.css({\n position: \"relative\"\n });\n }\n return elm.css({\n position: \"absolute\",\n bottom: padding_bottom,\n top: \"auto\"\n }).trigger(\"sticky_kit:bottom\");\n }\n }\n };\n recalc_and_tick = function() {\n recalc();\n return tick();\n };\n detach = function() {\n detached = true;\n win.off(\"touchmove\", tick);\n win.off(\"scroll\", tick);\n win.off(\"resize\", recalc_and_tick);\n $(document.body).off(\"sticky_kit:recalc\", recalc_and_tick);\n elm.off(\"sticky_kit:detach\", detach);\n elm.removeData(\"sticky_kit\");\n elm.css({\n position: \"\",\n bottom: \"\",\n top: \"\",\n width: \"\"\n });\n parent.position(\"position\", \"\");\n if (fixed) {\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.remove();\n }\n return elm.removeClass(sticky_class);\n }\n };\n win.on(\"touchmove\", tick);\n win.on(\"scroll\", tick);\n win.on(\"resize\", recalc_and_tick);\n $(document.body).on(\"sticky_kit:recalc\", recalc_and_tick);\n elm.on(\"sticky_kit:detach\", detach);\n return setTimeout(tick, 0);\n };\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n elm = this[_i];\n _fn($(elm));\n }\n return this;\n };\n\n}).call(this);\n","export enum AuthenticationType {\r\n Unknown = 0,\r\n NeverAuthenticate = 1,\r\n AuthenticateViaActiveDirectory = 2,\r\n AuthenticateViaKronos = 3,\r\n S1Auth = 4,\r\n}\r\n","export enum S1CustomerType {\r\n Unknown = 0,\r\n Residential = 1,\r\n Commercial = 2,\r\n}\r\n\r\nconst s1CustomerTypeDisplay: Map<S1CustomerType, string> = new Map<S1CustomerType, string>([\r\n [S1CustomerType.Unknown, \"Unknown\"],\r\n [S1CustomerType.Residential, \"Residential\"],\r\n [S1CustomerType.Commercial, \"Commercial\"],\r\n]);\r\n\r\nexport const GetS1CustomerTypeDisplay = (value?: S1CustomerType): string => s1CustomerTypeDisplay.get(value ?? S1CustomerType.Unknown) ?? \"Unknown\";","import { Ga4AnalyticsProduct } from \"./Ga4AnalyticsProduct\";\r\n\r\n/**\r\n * Class used for Application Products to be converted into an Ga4AnalyticsProduct\r\n */\r\nexport class Ga4AnalyticsApplicationProduct {\r\n private _ga4Product: Ga4AnalyticsProduct;\r\n\r\n public GetAnalyticProduct = (): Ga4AnalyticsProduct => this._ga4Product;\r\n\r\n constructor(\r\n pricePlan: any,\r\n list?: string,\r\n brandType?: string,\r\n discount?: number,\r\n coupon?: string,\r\n quantity?: number\r\n ) {\r\n const pp = {\r\n Price: pricePlan.Price,\r\n PricePlan: pricePlan.PricePlanId ?? pricePlan.PricingPlanId,\r\n ProductCodeFormatted: pricePlan.SelectedPricePlan?.Description ?? pricePlan.ProductName,\r\n UtilityCode: pricePlan.UtilityCode ?? brandType,\r\n BrandTypeName: brandType ?? pricePlan.BrandType ?? \"\",\r\n ItemCategory: pricePlan.ItemCategory ?? pricePlan.ProductName,\r\n MarketingHeading: pricePlan.MarketingHeading ?? pricePlan.ProductName,\r\n PricingPlanDescription: pricePlan.PricingPlanDescription ?? pricePlan.ProductName,\r\n };\r\n\r\n this._ga4Product = new Ga4AnalyticsProduct(pp, list, undefined, discount, coupon, quantity);\r\n }\r\n}\r\n","import { Ga4AnalyticsProduct } from \"./Ga4AnalyticsProduct\";\r\n\r\nexport class Ga4EnrollmentProduct {\r\n private _ga4Product: Ga4AnalyticsProduct;\r\n\r\n public GetAnalyticProduct = (): Ga4AnalyticsProduct => this._ga4Product;\r\n\r\n constructor(\r\n pricePlan: any,\r\n list?: string,\r\n brandType?: string,\r\n discount?: number,\r\n coupon?: string,\r\n quantity?: number\r\n ) {\r\n const pp = {\r\n Price: pricePlan.Price,\r\n PricePlan: pricePlan.PricePlanCode ?? pricePlan.PricePlanId,\r\n ProductCodeFormatted: pricePlan.ProductCodeFormatted ?? pricePlan.ProductName,\r\n UtilityCode: pricePlan.UtilityCode ?? brandType,\r\n UtilityDescription: pricePlan.UtilityCode ?? brandType,\r\n BrandTypeName: brandType ?? pricePlan.BrandType ?? \"\",\r\n ItemCategory: pricePlan.ItemCategory ?? pricePlan.ProductName ?? pricePlan.ProductCodeFormatted ?? \"\",\r\n MarketingHeading:\r\n pricePlan.PricingPlanDescription ?? pricePlan.MarketingHeading ?? pricePlan.ProductName,\r\n PricingPlanDescription: pricePlan.PricingPlanDescription ?? pricePlan.ProductName,\r\n };\r\n\r\n this._ga4Product = new Ga4AnalyticsProduct(pp, list, undefined, discount, coupon, quantity);\r\n }\r\n}\r\n","import { ref } from \"vue\";\r\nimport * as events from \"../googleAnalyticsEvents\";\r\nimport { IAnalyticState } from \"../interfaces/IAnalyticState\";\r\nimport { Ga4AnalyticsProduct } from \"../interfaces/Ga4AnalyticsProduct\";\r\nimport { Ga4AnalyticsApplicationProduct } from \"../interfaces/Ga4AnalyticsApplicationProduct\";\r\nimport { Ga4AnalyticServiceProduct } from \"../interfaces/Ga4AnalyticServiceProduct\";\r\nimport { Ga4EnrollmentProduct } from \"../interfaces/Ga4EnrollmentProduct\";\r\nimport { GetS1CustomerTypeDisplay, S1CustomerType } from \"@appEnum/S1CustomerType\";\r\nimport { IPushEcommEvent, IPushEvent } from \"../interfaces/IPushEvent\";\r\nimport { CheckoutStep } from \"../interfaces/CheckoutStep\";\r\n\r\nexport const useAnalyticState = () => {\r\n const analyticState = ref<IAnalyticState>({} as IAnalyticState);\r\n\r\n const setAnalyticState = (state: IAnalyticState): void => {\r\n if (state.ZipCode) {\r\n analyticState.value.ZipCode = state.ZipCode;\r\n }\r\n if (state.CustomerType) {\r\n analyticState.value.CustomerType = state.CustomerType;\r\n }\r\n if (state.ZipPriceInquiryType) {\r\n analyticState.value.ZipPriceInquiryType = state.ZipPriceInquiryType;\r\n }\r\n if (state.BrandType?.BrandTypeName) {\r\n analyticState.value.BrandType = state.BrandType;\r\n }\r\n if (state.ListName) {\r\n analyticState.value.ListName = state.ListName;\r\n }\r\n if (state.DeliveryZipCode) {\r\n analyticState.value.DeliveryZipCode = state.DeliveryZipCode;\r\n }\r\n if ((state.Products ?? []).length > 0) {\r\n analyticState.value.Products = state.Products;\r\n }\r\n };\r\n\r\n const addToCart = (products: Array<Ga4AnalyticsProduct>) => {\r\n if ((products ?? []).length === 0) return;\r\n\r\n analyticState.value.Products = analyticState.value.Products ?? [];\r\n\r\n for (const product of products) {\r\n if (!(analyticState.value.Products ?? []).some((x) => product.item_id === x.item_id)) {\r\n analyticState.value.Products.push(product);\r\n }\r\n }\r\n\r\n events.AddToCart(products, analyticState.value.ListName);\r\n };\r\n\r\n const removeFromCart = (products: Array<Ga4AnalyticsProduct>) => {\r\n if ((products ?? []).length === 0) return;\r\n\r\n analyticState.value.Products = analyticState.value.Products ?? [];\r\n\r\n if ((analyticState.value.Products ?? []).length > 0) {\r\n for (const product of products) {\r\n analyticState.value.Products = analyticState.value.Products.filter(\r\n (x) => x.item_id !== product.item_id\r\n );\r\n }\r\n }\r\n\r\n events.RemoveFromCart(products, analyticState.value.ListName);\r\n };\r\n\r\n const addBillingAddressInfo = (zipCode: string) => {\r\n events.AddAddressInfo(\r\n \"billing\",\r\n zipCode,\r\n analyticState.value.BrandType?.BrandTypeName ?? \"\",\r\n analyticState.value.ListName\r\n );\r\n };\r\n\r\n const addDeliveryAddressInfo = (zipCode: string) => {\r\n events.AddAddressInfo(\r\n \"delivery\",\r\n zipCode,\r\n analyticState.value.BrandType?.BrandTypeName ?? \"\",\r\n analyticState.value.ListName\r\n );\r\n };\r\n\r\n const setExistingCustomer = (isExistingCustomer: boolean) => {\r\n events.PushEcommEvent({\r\n List: analyticState.value.ListName,\r\n EventName: \"Application Existing Customer Click\",\r\n ExistingCustomer: isExistingCustomer ? \"Y\" : \"N\",\r\n });\r\n };\r\n\r\n const startNewApplication = (overrideEvent?: string) => {\r\n events.StartNewApplication(overrideEvent, analyticState.value.ListName);\r\n };\r\n\r\n const productImpressions = (products: Array<Ga4AnalyticsProduct>, productCode?: string) => {\r\n events.ProductImpressions(\r\n products,\r\n analyticState.value.ZipCode,\r\n GetS1CustomerTypeDisplay(analyticState.value.CustomerType),\r\n productCode,\r\n analyticState.value.ListName\r\n );\r\n };\r\n\r\n const productDetails = (product: Ga4AnalyticsProduct) => {\r\n events.PushEcommEvent({\r\n Action: \"detail\",\r\n EventName: \"productDetail\",\r\n Products: [product],\r\n List: analyticState.value.ListName,\r\n });\r\n };\r\n\r\n const addZipCode = (zipCode?: string, customerType?: number, eventName?: string) => {\r\n analyticState.value.ZipCode = zipCode ?? analyticState.value.ZipCode;\r\n if (customerType) {\r\n analyticState.value.CustomerType = customerType;\r\n }\r\n events.AddZipCode(\r\n analyticState.value.ZipCode ?? \"\",\r\n analyticState.value.ListName,\r\n GetS1CustomerTypeDisplay(analyticState.value.CustomerType),\r\n eventName\r\n );\r\n };\r\n\r\n const addPromotion = (promoCode: string, discount?: number) => {\r\n events.ProductPromotion(promoCode, discount ?? 0, \"select\", analyticState.value.ListName);\r\n };\r\n\r\n const removePromotion = (promoCode: string) => {\r\n events.ProductPromotion(promoCode, 0, \"remove\", analyticState.value.ListName);\r\n };\r\n\r\n const addContactInfo = (firstName: string, lastName: string, phone: string) => {\r\n events.ContactInformation(\r\n firstName,\r\n lastName,\r\n phone,\r\n analyticState.value.ListName,\r\n analyticState.value.BrandType?.BrandTypeName ?? \"\"\r\n );\r\n };\r\n\r\n const addPaymentInfo = (event: IPushEvent) => {\r\n if (!event.List) {\r\n event.List = analyticState.value.ListName;\r\n }\r\n if (!event.ZipCode) {\r\n event.ZipCode = analyticState.value.ZipCode;\r\n }\r\n if (!event.BrandType) {\r\n event.BrandType = analyticState.value.BrandType?.BrandTypeName;\r\n }\r\n if ((event.Products ?? [])?.length === 0) {\r\n event.Products = analyticState.value.Products ?? [];\r\n }\r\n events.AddPaymentInfo(event);\r\n };\r\n\r\n const productSetup = (event: IPushEvent) => {\r\n if (!event.List) {\r\n event.List = analyticState.value.ListName;\r\n }\r\n if (!event.ZipCode) {\r\n event.ZipCode = analyticState.value.ZipCode;\r\n }\r\n if (!event.BrandType) {\r\n event.BrandType = analyticState.value.BrandType?.BrandTypeName;\r\n }\r\n if ((event.Products ?? [])?.length === 0) {\r\n event.Products = analyticState.value.Products ?? [];\r\n }\r\n events.ProductSetup(event);\r\n };\r\n\r\n const addBrandType = () => {\r\n events.AddBrandType({\r\n List: analyticState.value.ListName,\r\n ZipCode: analyticState.value.ZipCode,\r\n BrandType: analyticState.value.BrandType?.BrandTypeName,\r\n Products: analyticState.value.Products ?? [],\r\n });\r\n };\r\n\r\n const purchaseEvent = (event: IPushEcommEvent) => {\r\n if (!event.List) {\r\n event.List = analyticState.value.ListName;\r\n }\r\n if (!event.ZipCode) {\r\n event.ZipCode = analyticState.value.ZipCode;\r\n }\r\n if (!event.BrandType) {\r\n event.BrandType = analyticState.value.BrandType?.BrandTypeName;\r\n }\r\n if ((event.Products ?? [])?.length === 0) {\r\n event.Products = analyticState.value.Products ?? [];\r\n }\r\n events.PurchaseEvent(event);\r\n };\r\n\r\n const checkoutEvent = (\r\n checkoutStep?: CheckoutStep,\r\n orderAmount?: number,\r\n transactionId?: string,\r\n customerNumber?: number,\r\n deliveryFee?: number,\r\n promoCode?: string\r\n ) => {\r\n events.Checkout(\r\n analyticState.value.Products,\r\n orderAmount ?? 0,\r\n transactionId,\r\n customerNumber,\r\n deliveryFee,\r\n promoCode,\r\n analyticState.value.ListName,\r\n analyticState.value.BrandType?.BrandTypeName,\r\n checkoutStep,\r\n \"checkout\"\r\n );\r\n };\r\n\r\n return {\r\n setAnalyticState,\r\n addToCart,\r\n removeFromCart,\r\n addBillingAddressInfo,\r\n addDeliveryAddressInfo,\r\n startNewApplication,\r\n productImpressions,\r\n addZipCode,\r\n addPromotion,\r\n removePromotion,\r\n addContactInfo,\r\n addPaymentInfo,\r\n productSetup,\r\n productDetails,\r\n addBrandType,\r\n purchaseEvent,\r\n checkoutEvent,\r\n setExistingCustomer,\r\n Ga4AnalyticsProduct,\r\n Ga4AnalyticsApplicationProduct,\r\n Ga4AnalyticServiceProduct,\r\n Ga4EnrollmentProduct,\r\n };\r\n};\r\n","import { ServiceContract } from \"@interfaces/pricing/service/ServiceContract\";\r\nimport { Ga4AnalyticsProduct } from \"./Ga4AnalyticsProduct\";\r\nimport { GetProductFullName, ProductCode } from \"@appEnum/ProductCode\";\r\n\r\n/**\r\n * Class used for Service Products to be converted into an Ga4AnalyticsProduct\r\n */\r\n\r\nexport class Ga4AnalyticServiceProduct {\r\n public list?: string;\r\n private _contract: ServiceContract;\r\n\r\n public AnalyticProducts: Ga4AnalyticsProduct[] = [];\r\n\r\n constructor(\r\n contract: ServiceContract,\r\n brandType: string,\r\n list?: string,\r\n limitToEquipmentTypeIds?: number[]\r\n ) {\r\n this.AnalyticProducts = contract.AllEquipmentTypeIds.filter((x) =>\r\n (limitToEquipmentTypeIds?.length ?? 0) > 0 ? limitToEquipmentTypeIds?.includes(x.EquipmentTypeId) : true\r\n ).map((x) => {\r\n const pricePlan = {\r\n Price: x.Price,\r\n PricePlan: contract.CargasServiceContractId.toString(),\r\n ProductCodeFormatted: `${contract.ContractDescriptionOverride} - ${x.EquipmentType}`,\r\n BrandTypeName: brandType,\r\n ItemCategory: GetProductFullName(ProductCode.ServiceProduct),\r\n };\r\n return new Ga4AnalyticsProduct(pricePlan, list);\r\n });\r\n\r\n this._contract = contract;\r\n this.list = list;\r\n }\r\n}\r\n","import {\r\n HubConnectionBuilder,\r\n HttpTransportType,\r\n IHttpConnectionOptions,\r\n HubConnectionState,\r\n} from \"@microsoft/signalr\";\r\n\r\n//https://learn.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-8.0\r\n//The only circumstances in which sticky sessions aren't required for the app are: (S1 requires non-sticky sessions)\r\n//When all clients are configured to only use WebSockets, and the SkipNegotiation setting is enabled in the client configuration.\r\n//\r\n// more options are documented here: https://learn.microsoft.com/en-us/aspnet/core/signalr/configuration?view=aspnetcore-8.0&tabs=dotnet#configure-additional-options\r\nconst getDefaultSignalRConnectionOptions = (): IHttpConnectionOptions => ({\r\n skipNegotiation: true,\r\n transport: HttpTransportType.WebSockets,\r\n});\r\n\r\nexport { HubConnectionBuilder, getDefaultSignalRConnectionOptions, HubConnectionState };\r\n"],"names":["analytics","cw","$","undefined","extend","pages","application","$wrapperEl","args","PropanePriceCapFee","embeddedContentApp","analyticListName","promoCodeValidationResponse","Unknown","Valid","PromoExpired","PromoNotFound","equipmentTypeId","AirConditioner","HeatPump","HeatingUnit","applicationPaymentResponse","Success","PaymentFailed","NoBalanceOnFile","NoApplicationFound","NoCCOnFile","ApplicationAlreadyHasCharge","ApplicationHasValidationErrors","serviceContractState","contractPanelsDisplay","contractModalDisplay","contractModalUpgradePlanDisplay","ldcAccountStatuses","ExistingApplication","ExistingActiveAccount","ExistingSuspendedAccount","NotFound","ExistingLitigationAccount","PendingReinstateExists","ExistingAccountPendingFinal","oilAutoPayRequired","propaneAutoPayRequired","CONTACT_INTERACTION_ID","LIFETIME_VALUE_ATTRIBUTE_ID","validatedPhoneNumbers","applicationEquipment","contractPlanArgs","CC_NOT_SAVED_ERR_TEXT","propaneWasManualInput","monthlyScheduleSelectors","winterBlendPrice","badUtils","acctConfigSaveTimer","budgetItemTmpl","marketPriceBudgetBuffer","defaultStatusSelections","defaultDeliveryNowDeliveryFee","liquidFuelDeliveryDefaults","zipRegex","budgetCutOffDate","requiresCreditCheck","$acctConfigActivePnlFwdBtn","$acctConfigStepForwardBtn","$acctConfigStepForwardBtnInterior","$confirmationPanel","planDetailCache","propaneDisclaimerVApp","winterBlendPricePlanAttributeId","worryFreeRenewalAttributeId","heatingOilWinterBlendHtml","allConfiguredEquipment","offerWorriedFreeRenewalOption","RequireRenewal","OptionalRenewal","ngWorryFreeOptionComponent","elWorryFreeOptionComponent","viewedReinstateWarning","mountedMaskedComponent","init","self","this","zipRegEx","RegExp","parent","bindInteractions","setAnalyticStateData","setAnalyticsZip","AppSource","addZipCode","analyticState","ListName","ZipCode","setAnalyticState","document","off","on","$this","removeItemFromCart","data","find","first","empty","text","attr","e","preventDefault","closest","addClass","removeClass","slideToggle","hasClass","Step","bindStep1","bindPlanSelection","bindAcctConfig","bindAcctVerify","poopOverTmpl","popover","trigger","html","template","content","brandObj","BrandName","placement","container","tooltip","$parent","parents","$details","selectBox","pricePlanId","parseInt","val","priceSheetLineId","productId","hasWinterBlendSelected","is","pricePlanMatch","getPriceByPricePlanPriceSheetLine","productPricePlans","getPricesByProductCode","pricePlanCode","pricePlanSheetLineId","vApp","x","app","unmount","attributeList","MarketingAttributes","filteredAttributes","filterMarketingAttributesForWinterBlend","filterMarketingAttributesForWorryFree","hasWorryFreeOptionSelected","mountPricePlanAttributes","productDetails","Ga4EnrollmentProduct","GetAnalyticProduct","sigrConn","withUrl","Application","ApplicationId","withAutomaticReconnect","build","CsrUser","BackingAuthSystem","AuthenticateViaActiveDirectory","webservices","getJson","modal","Open","title","closable","modalBody","DisplayName","buttons","start","then","console","info","connectionId","catch","err","error","setPageHeader","msg","$header","productCode","appEnum","ProductCode","HeatingOil","prices","HeatingOilPrices","Propane","PropanePrices","Electricity","ElectricityPrices","NaturalGas","NatGasPrices","ServiceProduct","PricePlanCode","PriceSheetLineId","pricePlan","marketingAttributes","mount","querySelector","selectedPricePlan","HtmlContents","hideIcons","badge","showInternal","filter","push","getAcceptJsNewCcResp","resp","$errPnl","alert","ClearAlert","authNetData","JSON","stringify","applicationId","zipCode","DeliveryPoints","WasSuccess","hasCcConfigured","CreditCardLast4","ccLast4Digits","CreditCardExpiration","expirationDate","AuthNetPaymentProfileId","paymentProfileId","$nextBtn","append","recalcValidationPanelContents","element","Errors","message","$btn","$cartIcon","Alert","$btnEnroll","$addressValidation","$errMsgPnl","each","$planHighlights","hoProd","HeatingOilProducts","length","isWinterBlend","$selectedValidatedAddress","$loadingInd","$btnEnrollText","finalizeApplication","IsRequired","CreditCheckLoggingActionTypeId","setFinalizeTemplate","tmplData","tmplKey","remove","BrandTypeId","PageId","LimitToKeys","templateData","newHtml","forEach","HtmlContent","obj","templating","GetRenderedTemplateHTML","TemplateType","CwWidget","renderedHtml","window","scrollTop","clearTimeout","saveFullApplication","finalizeResp","setLifetimeValues","purchaseEvent","Id","Products","getAnalyticCheckoutProducts","List","Affiliation","Revenue","getAnalyticCheckoutRevenue","Tax","Shipping","PromoCode","specialOfferPromoObj","myObj","wasSuccess","DeliveryRequested","OilDeliveryRequested","RequiresCustomerServiceReview","requiresCustomerServiceReview","CreditCardProcessResult","ResultCode","label","cssClass","autospin","action","mr","templateArgs","setSelectedProductTemplateArgs","sideBarHtml","replaceWith","acctConfigJumpPanel","close","$uspsAddr1","$uspsAddr2","$uspsCity","$uspsState","$uspsZip","AddressLine1","trim","AddressLine2","City","State","saveDeliveryPoint","dp","$el","ElectricProducts","FixedRenewal","NatGasProducts","acctConfigPostPayment","$target","verifyColumnSize","uspsVerifyResp","HasError","Address1","toLowerCase","Address2","Zip5","hasUspsAddress","UspsAddressLine1","UspsAddressLine2","UspsCity","UspsState","UspsZipCode","tmpl","acctConfigExpressAddToCart","async","loadingIndicator","btnText","isNextBtnDisabled","renderHeatingOilProducts","renderPropaneProducts","renderElectricProducts","showElectric","renderNatGasProducts","showNatGas","maxPricePlansPerRow","pickProduct","ProductName","heatingOilPlans","miniAddProducts","productExtra","hasOilSelection","DeliveryZipCode","zipError","propanePlans","hasSelectedPropaneProduct","ElectricUtilities","ProductUtilityCode","showUtilitySelector","SelectedElectricUtilityName","electricPlans","hasSelectedElectricProduct","NatGasUtilities","SelectedNatGasUtilityName","natGasPlans","hasSelectedNatGasProduct","ZipSupportsServiceContract","isGuidedExperience","zip","countyFips","CountyId","customerClassificationType","CustomerClassification","existingApplication","existingAccount","brandTypeFilter","isSelfService","zipPricing","isExpressCheckout","renderModal","modalHtml","buttonText","selectedProductCode","size","$thisBtn","getData","$zipWrapper","$modalBody","$propaneSubclassWrapper","$productSelectorWrapper","$estimatedUsageText","$utilitySelector","$zipInput","doCartRebind","$selectedPricePlan","price","isNumeric","tankOwnership","estimatedAnnualUsage","usageCodes","$me","productSelectFunction","tmplTmp","acctConfigHtml","$sidebarParent","setAccountCfgBreadCrumbs","productCodeArgs","TankOwnage","ProductUsageCodes","map","get","EstimatedUsage","ProductClassXref","getPropanePlansHtml","getPlanImpressions","selectedUtil","includes","prod","DeliveryPointId","pricePlanHtml","$modalHeader","$fwdBtn","$modalFooter","myZip","test","d","Equipment","PropaneProducts","ServiceContracts","ServiceOrders","custType","CustomerType","CustomerTypeText","deliveryPoint","customerType","$zipError","County","SelectedStateAbbr","$utilWrapper","prepUtilitySelection","pCode","utils","prodType","UtilityCode","UtilityName","hoPrices","expressPricePlanId","selectedPrice","filterSingle","PricingPlan","isSelected","hoHtml","renderPricePlans","appPricePlanTmpl","rangeslider","polyfill","onSlide","position","value","onSlideEnd","utl","$ServiceContractProductTarget","bindServiceContractsAndEquipment","onShownCallback","$existingCustomerBtn","showExistingCustomerModal","prepend","$productWrapper","adjustPriceForWinterBlend","focus","$submitBtn","keyCode","click","change","propaneValidFunc","showPlanButton","propaneSubclassSelector","stop","getCwOffset","cwOffset","showSpecialOffers","utility","focusElement","$birthDate","$specialOffers","$futurePriceOptions","$sendEmail","$sendText","$creditReport","$textSpecialOffersWc","$textSpecialOffers","$delAddress1","$delAddress2","$delCity","$delState","$delZip","$billingSameAddress","$useSrvAsBillAddr","$billAddress1","$billAddress2","$billCity","$billState","$billZip","$hoTankSize","$hoDeliverySchedule","$hoDeliverNow","$hoDeliveryGallons","$hoDeliverNowWrapper","$hoScheduleMonthsWrapper","$hoDeliverNowGalWrapper","$hoMinGalWarningWrapper","$hoTankSizeToSmallWarningWrapper","$hoPreBuyGallonWrapper","$pTankSize","$PpTankFill","$pDeliveryGallons","$pDeliverySchedule","$pDeliverNow","$pDeliveryFee","$ppMinGalWarningWrapper","$pTankSizeToSmallWarningWrapper","$pDeliverNowWrapper","$pScheduleMonthsWrapper","$pDeliveryInputWrapper","$pPreBuyGallonWrapper","$paymentType","$ccConfigFormWrapper","$eftConfigFormWrapper","$sideBarWrapperElParent","$btnRewind","bindCartSpecialOffers","hasHOLP","some","datetimepicker","format","date","ApplicantDateOfBirth","$thisPnl","$thisPnlInner","$prevPnl","prevAll","$prevPnlInner","collapse","refreshPaymentOptions","existingPayType","hasRequestedHoCOD","hasRequestedPpCOD","hasWillCall","hasNotSureTankSizeWillCall","hoPricePlan","getCurrentHeatingOilPricePlan","PricingTypeCode","WillCallCashPrice","a","PricePlanAttributeName","ppPricePlan","getCurrentPropanePricePlan","requireAutoPay","paymentHtml","paymentOptions","Key","PaymentProcessType","CustomerWillInitiatePayment","AutomaticBankDraft","AutomaticCreditCard","EnumVal","COD","Value","join","hoDeliveryChangeFunc","delSchVal","propaneDeliveryChangeFunc","pDeliverySch","refreshFillUpOptions","hasPropanePreBuy","PreBuy","hasOilPreBuy","isChecked","recalcChargeNowPrice","pPWarningFunc","gallons","tankSize","hasWarning","MinimumDeliveryGallonPropane","$appendTank","$disclaimer","tankDefault","tankSizeDefault","ProductId","TankSize","UsableSize","setPpOrderNowState","$fillTankWrapper","$priceWrapper","placeholderText","pp","prop","defaultDeliveryNowDeliveryFeePp","formatMoney","isSmallBusiness","CustomerClass","SmallBusiness","classes","split","newClasses","idx","item","startsWith","endsWith","imgUrl","Zip","inputChangeFunc","pProfileId","dialogRef","removeResp","hoWarningFunc","MinimumDeliveryGallonHeatingOil","pnlClass","acctConfigInputUpdateFunc","$emailHidden","$textHidden","$creditReportHide","has","acctConfigInitValidation","checkoutEvent","Option","expressProductCode","$baseUrl","sessionStorage","getItem","history","pushState","path","css","opacity","removeItem","location","reload","eligibleForWorryFreeRenewal","bindWorryFreeRenewalComponent","myNgPrice","myElPrice","WorryFreeRenewalOption","elProduct","ngProduct","hasElectricProduct","hasNatGasProduct","mountWorryFreeRenewal","component","mountPoint","selectedProduct","product","worryFreeComponent","default","worryFreeChecked","onOptionChecked","log","PricingPlanId","$pnlInner","cartStepObj","step","option","myPrice","ho","LifeTimeValue","Price","PreBuyGallons","DeliveryGallons","PricePlanAttributeId","AttributeValue","lp","revenue","i","NormalPrice","analyticProducts","name","PricingPlanDescription","id","list","brand","category","quantity","sc","TextDescription","ContractTemplateId","acctConfigBtnForwardErrorFunc","$stepErrPnl","pnlsWithErrors","$title","acctConfigShowErrFunc","acctConfigRealizeForm","$firstName","$lastName","$companyName","$phone","$email","$languagePreference","$specialOffersText","$specialOffersTextWC","$delInstructions","$elLdcAcct","$elBudget","$elMeterNumber","$ngLdcAcct","$ngBudget","$ngMeterNumber","$hoFillLoc","$hoTankLoc","$hoTankLevel","$hoAnnualUsage","$hoHotWater","$hoPreBuyWrapper","$pTankFillLoc","$pTankPlacement","$pTankLevel","$pOtherHeatingSrc","pIsFillup","$pDeliveryGallonInput","$poPreBuyWrapper","contactName","FirstName","LastName","CompanyName","PhoneNumber","replace","BestContactPhone","EmailAddress","LanguageId","SpecialOffersByEmail","SpecialOffersByPhoneOrMail","SpecialOffersByTextMessaging","SpecialOffersByTextMessagingWC","FuturePricingOptionsByEmail","EmailInvoicing","ContactName","DeliveryDirections","$delPropertyStatus","PropertyStatus","PaymentType","$budget","Budget","BudgetMonths","BudgetPayment","parseFloat","BudgetStartDate","UtilityAccountNumber","MeterNumber","OnBudget","FillLocation","TankLocation","TankLevel","AnnualUsage","HeatWater","DeliverySchedule","DeliveryFee","defaultDeliveryNowDeliveryFeeHo","DeliveryScheduleMonths","TankPlacement","AlternateHeat","ProductTankDefault","IsFillUp","hasInvalidPrice","elPsdl","deleteProduct","ngPsdl","hoPsdl","ppPsdl","hasAnyCartProducts","closeable","tmplArgs","acctConfigValidationCallback","pnlErrs","showErrs","wasClickTriggered","$panel","paymentNextClickFunc","acctConfigNextPnlClickFunc","acctConfigNextPnlFunc","$nextPnl","nextAll","$nextPnlInner","setTimeout","interaction","processesCartStepInteractions","interationData","email","Phone","Email","Object","keys","showErr","$thisPanel","validateContactInfo","validateServiceAddress","validateBillingAddress","validateElectricProduct","validateNatGasProduct","validateOilProduct","validatePropaneProduct","validatePayment","processPaymentWhenRequired","textTitle","c","jmpTo","p","paymentType","$paymentBtn","$btnIconWrap","$btnText","ccNumber","ccExpMonth","ccExpYear","ccZip","ccName","ccCVV2","acceptJsResp","secureData","authData","cardData","cardNumber","month","year","fullName","cardCode","clientKey","PublicClientKey","apiLoginID","ApiLoginId","Accept","dispatchData","bankName","accountType","bankRoutingNumber","bankAccountNumber","eftSaveResp","$myPnl","$myPnlInner","initValidationFunc","errs","$next","tankOwner","propaneUsageCodes","analyticAddProduct","analyticRemoveProduct","hoPrice","hoPriceRemove","fFillPrice","FirstDeliveryPrice","WinterBlendPriceOffset","hoPPG","PriceSheetId","PricingSheetCode","InitialCharge","PlanSelected","PriceTermExpirationDate","Expiration","Fee","MinimumPurchase","RemotePriceRecordPkId","RemoteWinterBlendPriceRecordPkId","hoProdCopy","pPrice","pPriceRemove","PriceWithOffset","FirstDeliveryPriceWithOffset","ProductClass","ProductSubCode","TankOwner","elPrice","elPriceRemove","ngPrice","ngPriceRemove","removeFromCart","addToCart","saveProducts","planSelectionNextButtonState","$btnForward","$btnForwardMiniCart","$miniCartForwardBtn","allProductsSelected","anyProductSelected","ContactAboutServiceContract","ContactedAboutServiceContractDate","getPricePlansForImpressions","$parentEl","pricePlans","productPrices","myCopiedPrices","parse","productImpressions","PublicDomain","$panelTop","$serviceTarget","$electPanel","$natgasPanel","$oilPanel","$propanePanel","$servicePanel","$btnGetPropanePlans","$propaneRangSlider","$propaneProductClassSelectionWrapper","$propaneProductPlanWrapper","$winterBlend","$maskedMountTarget","mountMaskedProductPanel","$myParentPnl","$myInner","$e","$eInner","bindProductSelection","enablePropanePlans","href","removeProduct","next","$panelCollapse","before","renderContent","htmlContent","matchingProductMask","getmatchingProductMask","HtmlContentHtml","renderTemplateData","productName","cartSpecialOffers","cartSpecialOffersApp","inCartContracts","onSpecialOfferAddedToCart","contracts","promoObject","rebindMiniCart","hvacServiceContractPicker","protectionPlansApp","equipmentTypes","brandTypeId","onAddedToCart","configuredEquipment","Array","isArray","eq","onDeletedFromCart","deletedAppContractIds","indexOf","AppContractId","onEquipmentLookupsLoaded","equipLookups","equipmentLookups","$pricePlansWrapper","$myParent","priceObj","priceFormated","firstFillFormatted","Subscription","firstFill","priceDisplayType","PriceDisplayType","DollarsPerUnit","PriceDisplayTypeId","NumPriceDecimalPlacesDisplay","CentsPerUnit","toFixed","vueApp","winterBlendAttribute","isWorryFree","worryFreeAttribute","setExistingCustomer","CustomerService800Number","CustomerService800NumberFormatted","$promoText","$promoWrapper","$zip","$zipSubmitBtn","$zipIcon","$zipLoadingInd","$productSelectionTarget","$nextWrapper","$zipErr","$promoErr","$promoApplyBtn","$productSelectTitle","$commercialPricing","$commercialPricingWrapper","$changeZip","$selectedZipCode","$zipInputContainer","$zipInputSuccess","setItem","toggleClass","invalidateZipSelection","zipBtnState","applyPromoFunc","successCallback","validationResp","Response","S1PromoCodeId","Code","CodeText","PromoCodeId","addPromotion","$btnIcon","$btnLoadingInd","S1CustomerType","Commercial","submitStep1","$myUrl","$startUrl","zipUrl","targetElId","prodMultiSelect","productTypeMultiSelectApp","productsSelected","getProductListFromApplicant","onNextButtonClicked","productTypes","electUtility","ngUtility","el","updateAppProduct","prodEnum","utilObj","appProductEntity","appEntity","deleteContract","numSaved","onProductTypeSelectionValid","onProductTypeSelectionInvalid","ContentWidgets","filterBogoPlans","bogoPlans","HasBogoAdjustment","propaneBogoRequirements","heatingOilBogoRequirements","pricePlanTypes","plansPerRow","myPlans","OriginalPropanePrices","MinEstimatedUsage","MaxEstimatedUsage","myPP","PriceFormatted","formatAsMoney","PriceHtmlFormatted","FirstDeliveryPriceFormatted","sortByPriceSortOrder","b","PriceSortOrder","maxNumPerRow","condensePlanHighlights","rtn","sort","chunk","y","ChartFooter","condenseHighlights","PriceToCompare","PriceToCompareFormatted","appContractId","DeleteReferencedEquipment","cartItemIdentifier","Confirm","modalRef","backButtonClicked","selectedNgUtil","ngUtilObj","selectedElectUtil","elUtilObj","oilSelected","propaneSelected","shipleyProducts","otherShipleyProducts","hasWillCallProduct","numSelectedProducts","hasShipleyServices","Shipley800","highlightedProductCssClass","isResidential","Residential","hasAllProductsSelected","formatAsPhone","BestContactPhoneFormatted","FuturePriceOptions","DeliveryState","DeliveryAddressLine1","DeliveryAddressLine2","DeliveryCity","DeliveryInstructions","SpecialInstructions","PropertyOwnershipOwn","PropertyOwnershipRent","BillingAddressLine1","BillingAddressLine2","BillingCity","BillingState","BillingZipCode","promoCode","lang","languages","hasElectricSelection","preselectedProduct","hasNatGasSelection","hasPropaneSelection","hasServicePlanSelection","PropaneAnnualUsage","hasProductsInZip","util","isDuke","isAep","SelectedElectricUtilityLdcNumDigits","UtilityAccountNumberLength","SelectedElectricUtilityAccountNumberDescription","UtilityAccountNumberDescription","SelectedElectricUtilityBillImage","BillSampleImageURL","SelectedElectricUtilityMeterNumberRequiredForApplication","MeterNumberRequiredForApplication","SelectedElectricUtilityMeterNumberUtilityDescription","MeterNumberUtilityDescription","SelectedElectricUtilityMeterNumberRequiredLength","MeterNumberRequiredLength","ElectricLdcNumber","OnElBudgetNo","OnElBudgetYes","ElectricMeterNumber","ProductIcon","Utility","UtilityDescription","PricePlanCustomerClassId","SupportsElBudget","BudgetAvailable","isConfirm","selectedElectricPlanHtml","elP","utilName","SelectedNatGasUtilityLdcNumDigits","SelectedNatGasUtilityAccountNumberDescription","SelectedNatGasUtilityBillImage","SelectedNatGasUtilityMeterNumberRequiredForApplication","SelectedNatGasUtilityMeterNumberUtilityDescription","SelectedNatGasUtilityMeterNumberRequiredLength","NatGasLdcNumber","OnNgBudgetNo","OnNgBudgetYes","NatGasMeterNumber","SupportsNgBudget","selectedNatGasPlanHtml","ngP","hasSelectedOilProduct","isAddWinterBlend","HoDeliveryFeeFormatted","RegulatoryFee","selectedOilPlanHtml","IsCod","HoAnnualUsage","HoTankLevel0","HoTankLevel25","HoTankLevel50","HoTankLevel75","HoTankLevel100","HoTankSize275","HoTankSize500","HoTankSize550","HoTankSize1000","HoTankSize1","HoTankLocB","HoTankLocG","HoTankLocI","HoTankLocO","HoTankLocP","HoTankLocU","HoFillLoc07","HoFillLoc09","HoFillLoc11","HoFillLoc12","HoFillLoc01","HoFillLoc03","HoFillLoc05","HoFillLoc06","HoHotWatterYes","HoHotWatterNo","HoIsScheduledDelivery","HoDeliveryRequested","HoDeliveryGallons","hasHOPreBuyPricing","HoPreBuyGallons","hoDelOpts","deliveryOptions","Cap","FixedPrice","VariablePrice","HoIsWillCall","HoDeliveryOptions","hoP","myPpProd","TankOwnagePriceOffset","PpDeliveryFeeFormatted","selectedPropanePlanHtml","IsPpCod","PpFillLocation07","PpFillLocation09","PpFillLocation11","PpFillLocation12","PpFillLocation01","PpFillLocation03","PpFillLocation05","PpFillLocation06","PpTankPlacementO","PpTankPlacementU","PpTankSize25","PpTankSize50","PpTankSize100","PpTankSize250","PpTankSize500","PpTankSize1000","PpTankSize1","PpFillLevel0","PpFillLevel05","PpFillLevel10","PpFillLevel15","PpFillLevel20","PpFillLevel25","PpFillLevel30","PpFillLevel35","PpFillLevel40","PpFillLevel45","PpFillLevel50","PpFillLevel55","PpFillLevel60","PpFillLevel65","PpFillLevel70","PpFillLevel75","PpFillLevel80","PpFillLevel85","PpFillLevel90","PpFillLevel95","PpFillLevel100","PpNumTanks1","TankCount","PpNumTanks2","PpNumTanks3","PpNumTanks4","PpOtherHeatSourceYes","PpOtherHeatSourceNo","PpIsScheduledDelivery","PpIsWillCall","PpIsFillUp","PpDeliveryGallons","PpDeliveryRequired","gallonAmount","PpDeliveryTotal","hasPpPreBuyPricing","PpPreBuyGallons","ppDelOpts","CanRequestDeliveryNow","unshift","Name","PpDeliveryOptions","pP","PropaneUsage","propageUsages","ProductUsageCode","serviceContractVerifyHtml","UomName","BillMonthly","coveredEquipment","CoveredEquipmentIds","ce","AppEquipmentId","eqType","EquipmentTypes","EquipmentTypeId","EquipmentName","EquipmentTypeName","IconCssClass","IsFixedPrice","IsVariablePrice","PriceTypeExtendedDescription","BestOffer","ChartHeader","RenderedTosUrl","TosUrl","PlanHighlights","$renderedHtml","mapFunc","minContractPrice","selectedServiceContractHtml","selectedServicePlanHtml","hasElOrGasSection","hasGasOilPropaneOrServiceSelection","hasOilGasOrElSelection","hasOilGasOrElOrPropaneSelection","hasOilPropaneOrServiceSelection","hasPropaneOrServiceSelection","noPropaneTank","isCustomerOwnedTank","isSupplierOwnedTank","CartProducts","OtherShipleyProducts","elPrices","ngPrices","hp","myHp","billStates","states","StateAbbr","StateName","dpStates","hasOilOrPropane","paymentOpts","isPaymentCC","PaymentTypeCOD","isPaymentEft","isPaymentCustomerInit","CcLast4","CcExpiration","ExpirationYears","add","CartProductCount","HoMinimumDeliveryGallons","PpMinimumDeliveryGallons","birthDateRequired","hidePaymentPane","mapMaskedPricingTemplateArgs","ppMasks","getMatchingProductMasks","hasMaskedPrices","products","maskedProducts","hasMaskedPricePlans","matchingMaskedProducts","applicantProducts","callback","LeadSource","LeadSourceId","BrandType","ShipleyEnergy","CustomerTypeFormatted","saveResp","RequiresCreditCheck","doSaveProducts","deliveryPointId","savedProduct","DeliveryPointIndex","wasDeleted","warn","wasClicked","regExPatterns","regExValid","regExErrorMessage","containsOnlyNumeric","UtilityAccountNumberRegex","UtilityAccountRegexMessage","setRequiredStarState","S1UtilityId","existsStatus","s","pendingFinalReinstateLoggingActionTypeId","calcPrebuyAmount","total","oilProduct","tankVal","optimalGallons","OptimalSize","isCod","prebuyGallons","propaneProduct","setMobileNumberIndicator","validNumber","setPhoneValidation","initialState","validPhone","sourceEl","$phoneElWrapper","validMobileNumber","isValidEmail","isValid","$requiredStar","removeAttr","$paymentWrapper","subtract","pricingTypeCode","realizeCC","realizeEft","wasClickedTriggered","$ccNum","$cardHolderName","$ccExpMonth","$ccExpYear","$ccCvv","$ccBillingZip","$ccPaymentProfileId","ccNum","cardHolderName","ccCvv","ccBillingZip","luhnCheck","badMonth","badYear","endOf","isBefore","isDomFired","chargeNowPrice","ppPrice","j","myProd","$noPaymentEl","$paymentConfigEl","$dueNow","$dueNowLabel","$heatingOilTotal","$propaneTotal","requiresPaymentConfiguration","isWillCallCash","isMarketPrice","hasUnknownTankSize","hasEmptyTankSize","prodPrice","recalcBudget","HeatingOilTotal","PropaneTotal","myBudgetStartDate","now","millisecond","seconds","minute","hour","budgetExtendedExpirationDate","budgetEndDate","budgetFirstYearMonths","Math","abs","diff","budgetExtendedMonths","minProductExpiration","m","shortenedBudgetPayment","extendedBudgetPayment","oilCost","propaneCost","totalFuelCost","feeTotal","budgetHtml","hasBudgetProducts","tankSetFee","tankRentalFee","serviceContractPrices","invalidProducts","hasUnbudgetablePlan","SelectedPricePlan","TankSetFee","TankRentalFee","ceil","BudgetStartDateFormatted","toISOString","isBudgetYes","BudgetName","BudgetKey","jQuery","factory","Number","isNaN","input","pluginName","pluginIdentifier","hasInputRangeSupport","createElement","setAttribute","type","defaults","orientation","rangeClass","disabledClass","activeClass","horizontalClass","verticalClass","fillClass","handleClass","startEvent","moveEvent","endEvent","constants","horizontal","dimension","direction","directionStyle","coordinate","vertical","isHidden","offsetWidth","offsetHeight","open","getDimension","key","hiddenParentNodes","node","parentNode","getHiddenParentNodes","hiddenParentNodesLength","inlineStyle","toggleOpenProperty","style","cssText","setProperty","height","overflow","visibility","tryParseFloat","str","defaultValue","ucfirst","charAt","toUpperCase","substr","Plugin","options","$window","$document","$element","getAttribute","onInit","DIMENSION","DIRECTION","DIRECTION_STYLE","COORDINATE","identifier","$fill","$handle","$range","insertAfter","handleDown","proxy","handleMove","handleEnd","fn","debounceDuration","_this","wait","prototype","slice","call","arguments","apply","delay","update","debouncing","lastReturnVal","debounceTimeout","origin","target","pos","getPositionFromValue","setPosition","updateAttributes","triggerSlide","min","max","round","handleDimension","rangeDimension","maxHandlePos","grabPos","disabled","button","className","getRelativePosition","rangePos","getBoundingClientRect","handlePos","getPositionFromNode","setPos","cap","newPos","getValueFromPosition","setValue","offsetLeft","offsetParent","ucCoordinate","pageCoordinate","originalEvent","touches","currentPoint","percentage","destroy","removeData","removeChild","ResponsiveBootstrapToolkit","internal","detectionDivs","bootstrap","foundation","applyDetectionDivs","ready","breakpoints","alias","appendTo","isAnExpression","splitExpression","operator","orEqual","index","breakpointName","isAnyActive","found","isMatchingExpression","expression","breakpointList","end","acceptedBreakpoints","interval","framework","use","frameworkName","current","changed","ms","timer","module","exports","win","stick_in_parent","opts","doc","elm","enable_bottoming","inner_scrolling","manual_spacer","offset_top","outer_width","parent_selector","recalc_every","sticky_class","_fn","_i","_len","spacer","bottoming","computed","w","getComputedStyle","getPropertyValue","outerWidth","padding_bottom","parent_top","parent_height","top","el_float","detached","bottomed","detach","fixed","last_pos","last_scroll_height","offset","recalc","recalc_and_tick","recalc_counter","tick","border_top","padding_top","restore","width","bottom","outerHeight","display","delta","recalced","scroll","will_bottom","win_height","after","body","AuthenticationType","s1CustomerTypeDisplay","Map","GetS1CustomerTypeDisplay","Ga4AnalyticsApplicationProduct","_ga4Product","constructor","brandType","discount","coupon","PricePlan","PricePlanId","ProductCodeFormatted","Description","BrandTypeName","ItemCategory","MarketingHeading","Ga4AnalyticsProduct","useAnalyticState","state","ZipPriceInquiryType","item_id","addBillingAddressInfo","addDeliveryAddressInfo","startNewApplication","overrideEvent","eventName","removePromotion","addContactInfo","firstName","lastName","phone","addPaymentInfo","event","productSetup","Action","EventName","addBrandType","checkoutStep","orderAmount","transactionId","customerNumber","deliveryFee","isExistingCustomer","ExistingCustomer","Ga4AnalyticServiceProduct","_contract","AnalyticProducts","contract","limitToEquipmentTypeIds","AllEquipmentTypeIds","CargasServiceContractId","toString","ContractDescriptionOverride","EquipmentType","getDefaultSignalRConnectionOptions","skipNegotiation","transport","WebSockets"],"sourceRoot":""}