{"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 &amp; 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>&cent;</sup>\";\r\n                  if (firstFill) {\r\n                    firstFillFormatted =\r\n                      (firstFill * 100).toFixed(priceObj.NumPriceDecimalPlacesDisplay) + \"<sup>&cent;</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":""}