{"version":3,"file":"5670.3f42221cb8cbd689e567.js","mappings":"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","sources":["webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/cw.pages.dashboard.js","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/cw.dtTools.js","webpack://shipley-du-lib/./node_modules/js-cookie/src/js.cookie.js","webpack://shipley-du-lib/./common/js/du/utility/storageHelpers.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/Dashboard.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/InvoiceHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/PaymentHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/AccountSettings.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/DocumentHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/PendingDeliveries.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/Rewards.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/BudgetManager.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/pageInstances/DeliveryHistory.ts","webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/lib/pageManagement/composables/pageManager.ts","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue?be2d","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue","webpack://shipley-du-lib/./common/js/du/components/form/checkbox.vue?f028","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue?5d6e","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue?9576","webpack://shipley-du-lib/./common/js/du/components/utility/pdfViewer.vue"],"sourcesContent":["import moment from \"moment\";\r\nimport Mustache from \"mustache\";\r\nimport \"../lib/bootstrap-datetimepicker/bootstrap-datetime-4.7.14\";\r\nimport \"flot\";\r\nimport \"flot/jquery.flot.time\";\r\nimport \"flot/jquery.flot.stack\";\r\nimport \"flot/jquery.flot.categories\";\r\nimport \"flot/jquery.flot.pie\";\r\nimport \"jquery.flot.tooltip\";\r\nimport \"chosen-js\";\r\nimport \"bootstrap/dist/js/bootstrap\";\r\nimport * as Cookies from \"js-cookie\";\r\nimport * as BootstrapDialog from \"bootstrap3-dialog\";\r\nimport \"../cw/lib/cw.dtTools\";\r\nimport { createNonRoutedApp } from \"@du/AppStartup\";\r\nimport pdfViewer from \"@components/utility/pdfViewer.vue\";\r\nimport notificationWidget from \"@du/masterTemplates/components/templates/notificationWidget.vue\";\r\nimport { switchPage } from \"../cw/lib/pageManagement/composables/pageManager\";\r\n\r\n(function (cw, $) {\r\n  \"use strict\";\r\n  $.extend(true, cw, {\r\n    pages: {\r\n      dashboard: {\r\n        args: null,\r\n        selectedS1AccountId: null,\r\n        phoneEditDataTable: null,\r\n        phoneTypeList: null,\r\n        locationData: null,\r\n        $viewport: null,\r\n        url: \"/account\",\r\n        title: \"Account Overview\",\r\n        $wrapperEl: null,\r\n        sigRconn: null,\r\n        notificationWidget: null,\r\n        autopayConfigComponenent: null,\r\n        init: function (args) {\r\n          const self = this;\r\n          self.args = args;\r\n          self.$wrapperEl = $(\".customer-dashboard-page-wrapper\");\r\n          self.bindApplicationEvents(args);\r\n          self.setAutoPaymentStatus(args.AccountBalances);\r\n\r\n          /* Menu */\r\n\r\n          //Rewards\r\n          const $menuItemReward = $('a[href=\"/account/rewards\"]').closest(\"li\");\r\n          if ($menuItemReward.length > 0) {\r\n            if (args.CanViewRewards) {\r\n              $menuItemReward.removeClass(\"hidden\");\r\n            } else {\r\n              $menuItemReward.addClass(\"hidden\");\r\n            }\r\n          }\r\n\r\n          //Add Product\r\n          const $menuItemAddProd = $('a[href=\"#add-product\"]').closest(\"li\");\r\n          if ($menuItemAddProd.length > 0 && args.WholesaleCustomerPortal) {\r\n            $menuItemAddProd.addClass(\"hidden\");\r\n          }\r\n\r\n          //Request Delivery\r\n          const $reqDeliveryBtn = $(\".request-delivery\").closest(\"a\");\r\n          if ($reqDeliveryBtn.length > 0 && args.WholesaleCustomerPortal) {\r\n            $reqDeliveryBtn.addClass(\"hidden\");\r\n          }\r\n\r\n          /* Handle our Bindings last*/\r\n          self.bindInteractions(args);\r\n          self.bindRewardsAndCarouselItems(args.RewardsPoints);\r\n          setTimeout(function () {\r\n            import(\"@components/customer/payment/autopayConfig.vue\").then(function (x) {\r\n              self.autopayConfigComponenent = x.default;\r\n            });\r\n          }, 100);\r\n        },\r\n        switchPage: function (url) {\r\n          const self = this;\r\n\r\n          if (\r\n            $(\".edit-s1-account\").length > 0 &&\r\n            $(\".edit-s1-account\").data(\"s1AccountId\") !== self.selectedS1AccountId\r\n          ) {\r\n            Cookies.set(self.args.selectedS1AccountCookieKey, self.selectedS1AccountId);\r\n            self.refreshS1AccountSelector(self.selectedS1AccountId);\r\n          }\r\n\r\n          cw.analytics(function () {\r\n            _hsq.push([\"setPath\", url]);\r\n            _hsq.push([\"trackPageView\"]);\r\n          });\r\n\r\n          const { Title } = switchPage(url, self);\r\n\r\n          if (window.history && location.pathname.toLowerCase() !== url) {\r\n            window.history.pushState({ url: url, title: Title }, Title, url);\r\n          }\r\n\r\n          $(\".menu-left li, .mobile-menu li\").removeClass(\"active\");\r\n          $(\".mobile-menu\").removeClass(\"open\");\r\n          $('.menu-left a[href=\"' + url + '\"], .mobile-menu  a[href=\"' + url + '\"]')\r\n            .closest(\"li\")\r\n            .addClass(\"active\");\r\n        },\r\n        bindApplicationEvents: function (args) {\r\n          const self = this;\r\n          this.selectedS1AccountId = args.selectedS1AccountId;\r\n          let vueAddProductApp;\r\n          let $vueAddProductDiv;\r\n          let vueAddProductAppMounted = false;\r\n          const mobileMenuAnchorSelector = \".mobile-menu a\";\r\n          const vueAppMenuClickFunc = function (e) {\r\n            const $this = $(this);\r\n            if ($this.closest(\".mobile-menu\").length > 0 && vueAddProductApp && vueAddProductAppMounted) {\r\n              vueAddProductAppMounted = false;\r\n              vueAddProductApp?.unmount();\r\n              $vueAddProductDiv?.remove();\r\n              $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n            }\r\n          };\r\n\r\n          self.$viewport = $(\".dashboard-viewport\");\r\n\r\n          $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n          $(\"body\").on(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n\r\n          $(\"body\").on(\"click\", \".breadcrumb a\", function (e) {\r\n            e.preventDefault();\r\n            const url = $(this).attr(\"href\");\r\n            self.switchPage(url);\r\n          });\r\n\r\n          window.addEventListener(\"popstate\", function (oEvent) {\r\n            let url = location.pathname.toLowerCase();\r\n            if (oEvent.state?.url) {\r\n              url = oEvent.state.url;\r\n            }\r\n\r\n            self.switchPage(url);\r\n          });\r\n\r\n          if (args.S1AccountNotificationToken) {\r\n            self.rebindNotificationListener(args.S1AccountNotificationToken);\r\n          }\r\n\r\n          $(\".billing-account-selector\").off(\"click\");\r\n          $(\".billing-account-selector\").on(\"click\", self.s1AccountSelectorClickHandler);\r\n\r\n          // close custom dropdowns\r\n          $(document).on(\"click\", function () {\r\n            $(\".billing-account-selector, .billing-account-selector-wrapper\").removeClass(\"active\");\r\n          });\r\n\r\n          $('a[href^=\"/account\"]').off(\"click\");\r\n          $('a[href^=\"/account\"]').on(\"click\", function (e) {\r\n            const $this = $(this);\r\n            if ($this.attr(\"target\") !== \"_blank\") {\r\n              e.preventDefault();\r\n              self.switchPage($this.attr(\"href\"));\r\n            }\r\n          });\r\n\r\n          $('a[href=\"#add-product\"], a.add-product').off(\"click\");\r\n          $('a[href=\"#add-product\"], a.add-product').on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const dpMap = $this.data(\"deliveryPointMap\");\r\n            const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n            const selZipCode = $this.attr(\"data-dp-zip\"); //.data('dpZip') was turning this into a number\r\n            const selProductCode = $this.data(\"productCode\");\r\n            const productAddId = \"s1-product-add-wizard-wrapper\";\r\n\r\n            $vueAddProductDiv = document.getElementById(productAddId);\r\n            if ($vueAddProductDiv) {\r\n              $vueAddProductDiv.replaceChildren();\r\n            } else {\r\n              $vueAddProductDiv = document.createElement(\"div\");\r\n              $vueAddProductDiv.id = productAddId;\r\n              document.body.appendChild($vueAddProductDiv);\r\n            }\r\n            $(\".hamburger-menu.open\").trigger(\"click\"); //really bro? Why I gotta close you?\r\n\r\n            import(\"@components/products/productAddWizard.vue\").then((productAddWizard) => {\r\n              vueAddProductApp = createNonRoutedApp(productAddWizard.default, {\r\n                brandTypeId: self.args.brandObj.BrandTypeId,\r\n                s1AcctId: self.selectedS1AccountId,\r\n                customerTypeIds: custTypes,\r\n                selectedDeliveryPointMap: dpMap,\r\n                selectedZipCode: selZipCode,\r\n                selectedProductCode: selProductCode,\r\n                minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n                onMounted() {\r\n                  vueAddProductAppMounted = true;\r\n                },\r\n                onWizardClosed() {\r\n                  vueAddProductApp.unmount();\r\n                  $vueAddProductDiv?.remove();\r\n                  $(\"body\").off(\"click\", mobileMenuAnchorSelector, vueAppMenuClickFunc);\r\n                  vueAddProductAppMounted = false;\r\n                },\r\n                onProductAddedSuccessfully(productAddRequest, productAddResponse) {\r\n                  self.loadDashboard(self.selectedS1AccountId);\r\n                },\r\n                onHvacAppointmentSuccessfullyScheduled() {\r\n                  self.loadDashboard(self.selectedS1AccountId);\r\n                },\r\n              });\r\n              vueAddProductApp.mount(`#${productAddId}`);\r\n            });\r\n          });\r\n\r\n          $(\"body\").off(\"click\", \".notification-detail\");\r\n          $(\"body\").on(\"click\", \".notification-detail\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const href = $this.data(\"href\");\r\n            const hasHref = href && href !== window.location.href;\r\n            cw.modal.Open({\r\n              title: $this.html(),\r\n              modalBody: $(\r\n                '<div class=\"clearfix notification-item' +\r\n                  (hasHref ? \" clickable-notification\" : \"\") +\r\n                  '\" ' +\r\n                  (hasHref ? 'data-notification-url=\"' + href + '\"' : \"\") +\r\n                  \">\" +\r\n                  '    <div class=\"date-sent fs-xs-12\" > ' +\r\n                  moment($this.data(\"dateSent\")).format(\"L LT\") +\r\n                  ' <a href=\"#\" class=\"dismiss-notification\" data-user-notification-id=\"' +\r\n                  $this.data(\"userNotificationId\") +\r\n                  '\"><i class=\"fa fa-trash\"></i></a></div> ' +\r\n                  '    <div class=\"message fs-xs-12 pt5\">' +\r\n                  $this.data(\"notificationBody\").replace(/\\n+$/g, \"\").replaceAll(\"\\n\", \"<br />\") +\r\n                  \"</div>\" +\r\n                  \"</div>\"\r\n              ),\r\n              onShownCallback: function (mr) {\r\n                mr.$modalBody.find(\".clickable-notification\").on(\"click\", function (e) {\r\n                  e.preventDefault();\r\n                  window.location.href = $(this).data(\"notificationUrl\");\r\n                });\r\n\r\n                mr.$modalBody.find(\".dismiss-notification\").on(\"click\", function (e) {\r\n                  e.preventDefault();\r\n                  const $this = $(this);\r\n                  cw.webservices.getJson(\r\n                    \"S1AccountManager/dismiss-notification/\" + self.selectedS1AccountId,\r\n                    [$this.data(\"userNotificationId\")],\r\n                    function (wasDismissed) {},\r\n                    function () {}\r\n                  );\r\n                  mr.close();\r\n                });\r\n              },\r\n            });\r\n          });\r\n          self.rebindS1AccountSelector();\r\n        },\r\n        rebindNotificationListener: function (s1AccountNotificationToken) {\r\n          this.getNotificationWidget(this.args.selectedS1AccountId);\r\n        },\r\n        bindInteractions: function (args) {\r\n          const self = this;\r\n\r\n          //budget menu\r\n          const $menuItem = $('a[href=\"/account/manage-budget\"]').closest(\"li\");\r\n          if (\r\n            args.AccountBalances?.some(function (x) {\r\n              return x.OnBudget;\r\n            }) ||\r\n            args.CustomerBudgetResponse?.HasPendingBudget\r\n          ) {\r\n            $menuItem.removeClass(\"hidden\");\r\n          } else if (args.CustomerBudgetResponse?.IsEligible) {\r\n            $menuItem\r\n              .empty()\r\n              .append(\r\n                '<a href=\"#\" title=\"Enroll in a Budget\" class=\"budget-signup\"> <i class=\"fa fa-fw fa-regular fa-square-check\"></i> <span class=\"nav-label\">Enroll in a Budget</span> </a>'\r\n              );\r\n          } else {\r\n            $menuItem.addClass(\"hidden\");\r\n          }\r\n\r\n          if (args.analyticsFireLoginEvent) {\r\n            const analyticsObj = {\r\n              event: \"customerWebLogin\",\r\n            };\r\n\r\n            if (args.analyticsCustomerType) {\r\n              analyticsObj.customerType = args.analyticsCustomerType;\r\n            }\r\n\r\n            if (args.analyticsUserId) {\r\n              analyticsObj.userId = args.analyticsUserId;\r\n            }\r\n\r\n            analyticsObj.hasRewardsAccess = args.anaylyticsIsRewardsUser;\r\n            analyticsObj.isRewardsRedeemer = args.anaylyticsIsRewardsRedeemer;\r\n\r\n            cw.analytics(function () {\r\n              dataLayer.push(analyticsObj);\r\n            });\r\n\r\n            if (args.email) {\r\n              cw.analytics(function () {\r\n                _hsq.push([\r\n                  \"identify\",\r\n                  {\r\n                    email: args.email,\r\n                    last_customer_web_login_date: args.loginTime,\r\n                  },\r\n                ]);\r\n              });\r\n            }\r\n\r\n            args.analyticsFireLoginEvent = false;\r\n          }\r\n\r\n          self.$viewport = $(\".dashboard-viewport\");\r\n\r\n          $(\".service-location-filter\").each(function () {\r\n            $(this)\r\n              .removeClass(\"hidden\")\r\n              .chosen({\r\n                width: \"100%\",\r\n                \".chosen-select\": {},\r\n                \".chosen-select-deselect\": { allow_single_deselect: false },\r\n                \".chosen-select-no-single\": { disable_search_threshold: 10 },\r\n                \".chosen-select-no-results\": { no_results_text: \"Nothing found.\" },\r\n              });\r\n          });\r\n\r\n          $(\".service-location-filter\").on(\"change\", function () {\r\n            self.updateLocationFilter($(this).val());\r\n          });\r\n\r\n          $('[data-toggle=\"tooltip\"]').tooltip(\"destroy\");\r\n          $('[data-toggle=\"tooltip\"]').tooltip({ html: true });\r\n          $('[data-toggle=\"dropdown\"]').dropdown();\r\n\r\n          $(\"a.view-latest-invoice\").off(\"click\");\r\n          $(\"a.view-latest-invoice\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const docId = $this.data(\"documentId\");\r\n            const invoiceId = $this.data(\"invoiceId\");\r\n\r\n            if (docId && invoiceId) {\r\n              if (window.innerWidth <= 991) {\r\n                window.open(\"/gen-asset/document-viewer/\" + docId);\r\n              } else {\r\n                cw.modal.Open({\r\n                  data: { docId: docId },\r\n                  title: \"Invoice #\" + invoiceId,\r\n                  modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                  size: BootstrapDialog.SIZE_WIDE,\r\n                  successCallback: function (modalRef) {\r\n                    modalRef.close();\r\n                  },\r\n                  onShownCallback: function (modalRef) {\r\n                    const doc = modalRef.getData(\"docId\");\r\n\r\n                    createNonRoutedApp(pdfViewer, {\r\n                      pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n                      allowDownload: true,\r\n                      onPdfLoaded() {\r\n                        cw.loadingIndicator.stop();\r\n                      },\r\n                    }).mount(\"#pdf-target\");\r\n                  },\r\n                });\r\n              }\r\n            }\r\n          });\r\n          $(\"a.budget-signup, button.budget-signup\").off(\"click\");\r\n          $(\"a.budget-signup, button.budget-signup\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            cw.loadingIndicator.start();\r\n            cw.pages.budgetManager.budgetEnroll({\r\n              CustomerBudgetResponse: self.args.CustomerBudgetResponse,\r\n              ServiceLocations: self.args.ServiceLocations,\r\n              AccountBalances: self.args.AccountBalances,\r\n              S1AccountId: self.selectedS1AccountId,\r\n              successCallback: function () {\r\n                self.loadDashboard(self.selectedS1AccountId);\r\n              },\r\n              cancelCallback: function (rtnData) {\r\n                self.args.CustomerBudgetResponse = rtnData;\r\n              },\r\n            });\r\n          });\r\n\r\n          $(\"a.request-delivery\").off(\"click\");\r\n          $(\"a.request-delivery\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            if ($(this).data(\"isLitigationStatus\")) {\r\n              cw.modal.Alert({\r\n                title: \"Unable to Request Delivery\",\r\n                text: `<div>\r\n                           <div class=\"after-hours-message error-wrapper alert alert-info mb10 p10 full-width flex\">\r\n                               <div><i class=\"fa fa-info-circle fs-xs-34 mr15 ml5\" aria-hidden=\"true\"></i></div>\r\n                               <div>If this is an emergency, you are out of oil, or need a restart, please call Customer Service at ${self.args.brandObj.CustomerService800NumberFormatted}, they can offer additional expedited delivery options.</div>\r\n                           </div>\r\n                           <div>Your account is not able to request delivery due to being in litigation.</div>\r\n                       </div>`,\r\n              });\r\n            } else {\r\n              cw.widget.deliveryRequest.init({\r\n                brandObj: self.args.brandObj,\r\n                s1AccountId: self.selectedS1AccountId,\r\n                productCode: $this.data(\"productCode\"),\r\n                productSubclass: $this.data(\"productSubclass\"),\r\n                isWinterBlend: $this.data(\"isWinterBlend\"),\r\n                deliveryPointMap: $this.data(\"deliveryPointMap\"),\r\n                tankSize: $this.data(\"tankCapacity\"),\r\n                usableTankSize: $this.data(\"usableTankSize\"),\r\n                deliverySchedule: $this.data(\"deliverySchedule\"),\r\n                customerType: $this.data(\"customerTypeId\"),\r\n                paymentTerms: $this.data(\"paymentTerms\"),\r\n                existingBalance: $this.data(\"billingAccountBalance\"),\r\n                minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n                minimumGallonDeliveryFee: self.args.minimumGallonDeliveryFee,\r\n                creditStatusOk: $this.data(\"creditStatusOk\"),\r\n                equipmentId: $this.data(\"equipmentId\"),\r\n                paymentUpfrontRequired: $this.data(\"paymentUpfrontRequired\"),\r\n                division: $this.data(\"division\"),\r\n                successCallback: function () {\r\n                  self.loadDashboard(self.selectedS1AccountId);\r\n                },\r\n              });\r\n            }\r\n          });\r\n\r\n          $(\"a.view-usage-history\").off(\"click\");\r\n          $(\"a.view-usage-history\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const dpMap = $this.data(\"deliveryPointMap\");\r\n            const productCode = $this.data(\"productCode\");\r\n            const equipmentId = $this.data(\"equipmentId\");\r\n            self.viewUsageHistory(productCode, dpMap, equipmentId);\r\n          });\r\n\r\n          $(\"a.view-pending-delivery\").off(\"click\");\r\n          $(\"a.view-pending-delivery\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const dpMap = $this.data(\"deliveryPointMap\");\r\n            self.viewPendingDelivery(dpMap);\r\n          });\r\n\r\n          $(\"a.edit-location\").off(\"click\");\r\n          $(\"a.edit-location\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            cw.loadingIndicator.start();\r\n            const $this = $(this);\r\n            const $dpHash = $this.data(\"deliveryPointHash\");\r\n            const dpMap = $this.data(\"deliveryPointMap\");\r\n\r\n            //refresh backend data to get an updated DeliveryPointHash\r\n            self.updateServiceLocationData(self.selectedS1AccountId, function () {\r\n              let servLocHash;\r\n              for (const element of self.args.ServiceLocations) {\r\n                if (element.DeliveryPointHash === $dpHash) {\r\n                  servLocHash = element.ServiceLocationHash;\r\n                }\r\n              }\r\n\r\n              self.editServiceLocation(dpMap, self.selectedS1AccountId, servLocHash);\r\n            });\r\n          });\r\n\r\n          $(\"a.view-delivery-history\").off(\"click\");\r\n          $(\"a.view-delivery-history\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const dpMap = $this.data(\"deliveryPointMap\");\r\n            const productCode = $this.data(\"productCode\");\r\n            cw.pages.deliveryHistory.init({\r\n              deliveryPointMap: dpMap,\r\n              productCode: productCode,\r\n              selectedS1AccountId: self.selectedS1AccountId,\r\n              $viewport: self.$viewport,\r\n            });\r\n          });\r\n\r\n          $(\"a.view-pending-delivery-alert\").off(\"click\");\r\n          $(\"a.view-pending-delivery-alert\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            cw.pages.pendingDeliveries.init({\r\n              selectedS1AccountId: self.selectedS1AccountId,\r\n              $viewport: self.$viewport,\r\n            });\r\n          });\r\n\r\n          let panelCollapse = false;\r\n          $(\".panel-group .panel-collapse\").on(\"show.bs.collapse\", function () {\r\n            $(this).siblings(\".panel-heading\").addClass(\"active\");\r\n            $(\".expand-collapse-all-btn\").html('<i class=\"fa fa-compress\"></i> Collapse All');\r\n            panelCollapse = false;\r\n          });\r\n\r\n          $(\".panel-group .panel-collapse\").on(\"hide.bs.collapse\", function () {\r\n            $(this).siblings(\".panel-heading\").removeClass(\"active\");\r\n              $(\".expand-collapse-all-btn\").html('<i class=\"fa fa-up-right-and-down-left-from-center\"></i> Expand All');\r\n            panelCollapse = true;\r\n          });\r\n\r\n          $(\".expand-collapse-all-btn\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            if (panelCollapse) {\r\n              $(\".panel-group .panel-collapse\").collapse(\"show\");\r\n            } else {\r\n              $(\".panel-group .panel-collapse\").collapse(\"hide\");\r\n            }\r\n          });\r\n\r\n          if ($(\".panel-group\").length <= 3) {\r\n            $(\".panel-group .panel-collapse\").collapse(\"show\");\r\n          }\r\n\r\n          $(\"a.view-delivery-ticket\").off(\"click\");\r\n          $(\"a.view-delivery-ticket\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const docId = $this.data(\"documentId\");\r\n            const ticketNumber = $this.data(\"ticketNumber\");\r\n            if (docId) {\r\n              if (window.innerWidth <= 991) {\r\n                window.open(\"/gen-asset/document-viewer/\" + docId);\r\n              } else {\r\n                cw.modal.Open({\r\n                  data: { docId: docId },\r\n                  title: \"Delivery Ticket #\" + ticketNumber,\r\n                  modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                  size: BootstrapDialog.SIZE_WIDE,\r\n                  successCallback: function (modalRef) {\r\n                    modalRef.close();\r\n                  },\r\n                  onShownCallback: function (modalRef) {\r\n                    const doc = modalRef.getData(\"docId\");\r\n                    createNonRoutedApp(pdfViewer, {\r\n                      pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n                      allowDownload: true,\r\n                      onPdfLoaded() {\r\n                        cw.loadingIndicator.stop();\r\n                      },\r\n                    }).mount(\"#pdf-target\");\r\n                  },\r\n                });\r\n              }\r\n            }\r\n          });\r\n\r\n          $(\"a.view-service-call-invoice\").off(\"click\");\r\n          $(\"a.view-service-call-invoice\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const docId = $this.data(\"documentId\");\r\n            const invoiceId = $this.data(\"invoiceId\");\r\n            if (docId) {\r\n              if (window.innerWidth <= 991) {\r\n                window.open(\"/gen-asset/document-viewer/\" + docId);\r\n              } else {\r\n                cw.modal.Open({\r\n                  data: { docId: docId },\r\n                  title: \"Invoice #\" + invoiceId,\r\n                  modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                  size: BootstrapDialog.SIZE_WIDE,\r\n                  successCallback: function (modalRef) {\r\n                    modalRef.close();\r\n                  },\r\n                  onShownCallback: function (modalRef) {\r\n                    const doc = modalRef.getData(\"docId\");\r\n                    createNonRoutedApp(pdfViewer, {\r\n                      pdfUrl: \"/gen-asset/document-viewer/\" + doc,\r\n                      allowDownload: true,\r\n                      onPdfLoaded() {\r\n                        cw.loadingIndicator.stop();\r\n                      },\r\n                    }).mount(\"#pdf-target\");\r\n                  },\r\n                });\r\n              }\r\n            }\r\n          });\r\n\r\n          $(\"a.make-a-payment\").off(\"click\");\r\n          $(\"a.make-a-payment\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            if (!$(this).hasClass(\"disabled\")) {\r\n              let customerBudgetResp;\r\n              if (self.args.CustomerBudgetResponse) {\r\n                customerBudgetResp = self.args.CustomerBudgetResponse;\r\n                self.args.CustomerBudgetResponse.MonthlyPaymentAmountFormatted =\r\n                  \"$\" + (Math.ceil(self.args.CustomerBudgetResponse.MonthlyPaymentAmount / 5) * 5).toFixed(2);\r\n                customerBudgetResp.ServiceLocations = self.args.ServiceLocations.filter(function (x) {\r\n                  return x.LocationBudgetEligibility.IsEligible;\r\n                });\r\n              }\r\n\r\n              cw.widget.payment.init(\r\n                self.selectedS1AccountId,\r\n                null,\r\n                null,\r\n                function () {\r\n                  self.loadDashboard(self.selectedS1AccountId);\r\n                },\r\n                customerBudgetResp\r\n              );\r\n            }\r\n          });\r\n\r\n          $(\"a.invoice-history\").off(\"click\");\r\n          $(\"a.invoice-history\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            cw.pages.invoiceHistory.init({\r\n              selectedS1AccountId: self.selectedS1AccountId,\r\n              $viewport: self.$viewport,\r\n            });\r\n          });\r\n\r\n          $(\"a.payment-history\").off(\"click\");\r\n          $(\"a.payment-history\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            cw.pages.paymentHistory.init({\r\n              selectedS1AccountId: self.selectedS1AccountId,\r\n              $viewport: self.$viewport,\r\n            });\r\n          });\r\n\r\n          $(\"a.payment-profile, label.payment-profile, button.payment-profile\").off(\"click\");\r\n          $(\"a.payment-profile, label.payment-profile, button.payment-profile\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            if (!$(this).hasClass(\"disabled\")) {\r\n              self.launchPaymentProfile();\r\n              $(this).tooltip(\"hide\");\r\n            }\r\n          });\r\n\r\n          $(\".view-pending-service-req\").off(\"click\");\r\n          $(\".view-pending-service-req\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            self.showPendingServiceRequest($this.data(\"workerOrderDocId\"), $this.data(\"serviceTicketId\"));\r\n          });\r\n\r\n          $(\".view-contract-coverage\").off(\"click\");\r\n          $(\".view-contract-coverage\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const $title = $this.closest(\".product-wrapper\").find(\".product-title\").clone();\r\n            $title.find(\"br\").remove();\r\n            $title.find(\".shipley-blue\").each(function () {\r\n              $(this).removeClass(\"shipley-blue\").addClass(\"inline-block\");\r\n            });\r\n            self.showContractEquipment(\r\n              $this.data(\"contractId\"),\r\n              $this.data(\"remoteAccountMap\"),\r\n              $title.html()\r\n            );\r\n          });\r\n\r\n          $(\".view-pricing-terms\").off(\"click\");\r\n          $(\".view-pricing-terms\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            if (window.innerWidth <= 991) {\r\n              window.open($this.data(\"tosUrl\"));\r\n            } else {\r\n              cw.modal.Open({\r\n                title: \"Terms of Service\",\r\n                modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                size: BootstrapDialog.SIZE_WIDE,\r\n                successCallback: function (modalRef) {\r\n                  modalRef.close();\r\n                },\r\n                onShownCallback: function (modalRef) {\r\n                  createNonRoutedApp(pdfViewer, {\r\n                    pdfUrl: $this.data(\"tosUrl\"),\r\n                    allowDownload: true,\r\n                    onPdfLoaded() {\r\n                      cw.loadingIndicator.stop();\r\n                    },\r\n                  }).mount(\"#pdf-target\");\r\n                },\r\n              });\r\n            }\r\n          });\r\n\r\n          $(\".make-billing-account-payment\").off(\"click\");\r\n          $(\".make-billing-account-payment\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            cw.widget.payment.init(\r\n              self.selectedS1AccountId,\r\n              null,\r\n              $this.data(\"remoteAccountMap\"),\r\n              function () {\r\n                self.loadDashboard(self.selectedS1AccountId);\r\n              }\r\n            );\r\n          });\r\n\r\n          $(\".update-billing-account-settings\").off(\"click\");\r\n          $(\".update-billing-account-settings\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const remoteAccountMap = $(this).data(\"remoteAccountMap\");\r\n\r\n            cw.pages.accountSettingsEdit.init({\r\n              shipleyOneNumberId: self.selectedS1AccountId,\r\n              remoteSystemId: remoteAccountMap.RemoteSystemId,\r\n              remoteSystemAccountId: remoteAccountMap.RemoteSystemAccountId,\r\n              remoteSystemAccountNumber: remoteAccountMap.RemoteSystemAccountNumber,\r\n              $viewport: self.$viewport,\r\n              brandObj: self.args.brandObj,\r\n            });\r\n\r\n            if (window.history) {\r\n              window.history.pushState(\r\n                { url: cw.pages.accountSettings.url, title: cw.pages.accountSettings.title },\r\n                cw.pages.accountSettings.title,\r\n                cw.pages.accountSettings.url\r\n              );\r\n            }\r\n          });\r\n\r\n          $(\".view-notes\").off(\"click\");\r\n          $(\".view-notes\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            self.viewNotes(self.selectedS1AccountId);\r\n          });\r\n\r\n          $(\".view-service-call-history\").off(\"click\");\r\n          $(\".view-service-call-history\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            self.showServiceCallHistory(\r\n              $this.data(\"deliveryPointMap\"),\r\n              $this.closest(\".panel\").find(\".location-address\").html()\r\n            );\r\n          });\r\n\r\n          $(\"body\").off(\"click\", \".get-renewal-offers\");\r\n          $(\"body\").on(\"click\", \".get-renewal-offers\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            self.showRenewalOffers(\r\n              $this.data(\"customerCorrespondenceQueueId\"),\r\n              $this.data(\"billingAccountId\"),\r\n              $this.data(\"deliveryPointId\"),\r\n              $this.data(\"renewalPin\")\r\n            );\r\n          });\r\n\r\n          self.loadDashboardQuickActionButtons();\r\n          self.loadSpecialOffers();\r\n        },\r\n        bindRewardsAndCarouselItems: function (rewardObj) {\r\n          const self = this;\r\n          const $car = $(\".acct-summary #rewards-carousel\");\r\n          const $rewardWapper = $(\".rewards-target\");\r\n          const $menuItem = $('a[href=\"/account/rewards\"]').closest(\"li\");\r\n          let $graphTarget;\r\n          $rewardWapper.empty();\r\n          let graphData;\r\n          const options = {\r\n            legend: {\r\n              show: false,\r\n            },\r\n            series: {\r\n              pie: {\r\n                show: true,\r\n                innerRadius: 0.92,\r\n                radius: 1,\r\n              },\r\n            },\r\n            grid: {\r\n              hoverable: false,\r\n            },\r\n            label: {\r\n              show: false,\r\n              formatter: function () {\r\n                return \"\";\r\n              },\r\n            },\r\n            tooltip: false,\r\n            tooltipOpts: {\r\n              cssClass: \"flotTip\",\r\n              content: \"%p pts. %s\",\r\n              defaultTheme: false,\r\n            },\r\n          };\r\n          if (rewardObj && !rewardObj.IsOptedOut) {\r\n            const $href = $(\r\n              '<a href=\"' +\r\n                cw.pages.rewards.url +\r\n                '\" title=\"' +\r\n                (rewardObj.UnusedPointTotal ? rewardObj.UnusedPointTotal : \"\") +\r\n                ' Rewards Points\" >' +\r\n                (rewardObj.UnusedPointTotal\r\n                  ? '<span class=\"notification-badge rewards-badge\">' + rewardObj.UnusedPointTotal + \"</span>\"\r\n                  : \"\") +\r\n                '<i class=\"fa fa-fw fa-star shipley-blue fs-xs-24\"></i></a>'\r\n            );\r\n            $href.on(\"click\", function (e) {\r\n              e.preventDefault();\r\n              self.switchPage(cw.pages.rewards.url);\r\n            });\r\n\r\n            $rewardWapper.append($href);\r\n            $rewardWapper.removeClass(\"hidden\");\r\n            $menuItem.removeClass(\"hidden\");\r\n\r\n            $graphTarget = $(\".graph-target\");\r\n            graphData = [\r\n              {\r\n                label: \"\", //\"New this billing period\",\r\n                data: rewardObj.RecentlyAddedPointAmount,\r\n                color: cw.constants.shipleyGreen,\r\n              },\r\n              {\r\n                label: \"\", // \"Existing\",\r\n                data: rewardObj.ExistingPoints,\r\n                color: cw.constants.shipleyBlue,\r\n              },\r\n            ];\r\n\r\n            if (rewardObj.PendingTransactionPoints) {\r\n              graphData.push({\r\n                label: \"\", // \"Pending Transaction\",\r\n                data: rewardObj.PendingTransactionPoints,\r\n                color: cw.constants.ctaOrange,\r\n              });\r\n            }\r\n\r\n            if (\r\n              rewardObj.PendingTransactionPoints === 0 ||\r\n              (rewardObj.ExpiringIn30DaysPointTotal > 0 && rewardObj.PendingTransactionPoints > 0)\r\n            ) {\r\n              graphData.unshift({\r\n                label: \"\", //\"Expiring within 30 days\",\r\n                data: rewardObj.ExpiringIn30DaysPointTotal,\r\n                color: cw.constants.ctaYellow,\r\n              });\r\n            }\r\n\r\n            //make it look pretty when we have no data\r\n            if (rewardObj.UnusedPointTotal === 0 && rewardObj.PendingTransactionPoints <= 0) {\r\n              graphData = [\r\n                {\r\n                  label: \"\",\r\n                  data: 1,\r\n                  color: cw.constants.shipleyBlue,\r\n                },\r\n              ];\r\n            }\r\n          } else if (!$car || $car.length < 1) {\r\n            $rewardWapper.addClass(\"hidden\");\r\n            $menuItem.addClass(\"hidden\");\r\n          }\r\n\r\n          if ($car.length > 0) {\r\n            const $existingItems = $car.find(\".carousel-inner\").find(\".item\");\r\n            const $energyRewards = $car\r\n              .find(\".carousel-inner\")\r\n              .find(\".item\")\r\n              .has(\"a img[alt*='Frequently'] \");\r\n            const $budgetPlan = $car.find(\".carousel-inner\").find(\".item\").has(\".budget-item\");\r\n            $energyRewards.addClass(\"energyRewards\");\r\n            $budgetPlan.addClass(\"budgetPlan\");\r\n            const mq = window.matchMedia(\"screen and (max-width: 768px)\");\r\n\r\n            $existingItems.removeClass(\"active\");\r\n            if ($graphTarget && $graphTarget.length > 0) {\r\n              $car\r\n                .find(\".carousel-inner\")\r\n                .prepend($graphTarget.addClass(\"item active responsive-card\").removeClass(\"hidden\"));\r\n\r\n              if (mq.matches) {\r\n                $graphTarget.css({ height: \"183.92px\" });\r\n                $energyRewards.height($graphTarget.height());\r\n                $budgetPlan.height($graphTarget.height());\r\n              } else {\r\n                $graphTarget.css({ height: \"260px\" });\r\n                $energyRewards.height($graphTarget.height());\r\n                $budgetPlan.height($graphTarget.height());\r\n              }\r\n\r\n              const $inner = $graphTarget.find(\".graph-inner\");\r\n              if ($inner.height() < $graphTarget.height()) {\r\n                $inner.height($graphTarget.height());\r\n              }\r\n\r\n              $.plot($inner, graphData, options);\r\n\r\n              $graphTarget\r\n                .find(\".points-amount\")\r\n                .html(\r\n                  ' <span class=\"points-amount-val fs-xxs-24 fs-xs-32 fs-sm-24 fs-md-24 fs-lg-34\">' +\r\n                    rewardObj.UnusedPointTotal +\r\n                    '</span><span class=\"fs-xs-14 pos-rel\">pts</span>'\r\n                );\r\n\r\n              $graphTarget.on(\"click\", function (e) {\r\n                self.switchPage(cw.pages.rewards.url);\r\n              });\r\n            }\r\n\r\n            $car.find(\".carousel-inner .item\").each(function (idx) {\r\n              const $me = $(this);\r\n              if ($me.height() == 0) {\r\n                $me.css({ height: \"267px\" });\r\n              }\r\n\r\n              if (idx === 0) {\r\n                $me.addClass(\"active\");\r\n              }\r\n            });\r\n\r\n            $car.carousel();\r\n          }\r\n        },\r\n        showRenewalOffers: function (customerCorrespondenceQueueId) {\r\n          const self = this;\r\n\r\n          cw.loadingIndicator.start();\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-pending-renewals/\" +\r\n              self.selectedS1AccountId +\r\n              \"/\" +\r\n              customerCorrespondenceQueueId,\r\n            null,\r\n            function (rtnObj) {\r\n              if (rtnObj) {\r\n                const openModal = function (renewalOptions, productTmpl) {\r\n                  let autoRenewHtml = \"\";\r\n                  let altOffer1Html = \"\";\r\n                  let altOffer2Html = \"\";\r\n                  let columns = 0;\r\n\r\n                  const mangePricePlanAndRender = function (pp, isBestOffer) {\r\n                    pp.PricingPlan = pp.PricePlan;\r\n                    pp.PriceFormatted = pp.PriceHtmlFormatted;\r\n                    pp.RenderedTosUrl = pp.TermsAndConditionsUrl;\r\n                    pp.BestOffer = isBestOffer;\r\n                    pp.PriceToCompareFormatted = null;\r\n                    pp.PriceToCompare = null;\r\n                    return Mustache.to_html(productTmpl, pp).replace(\r\n                      /col-(xxs|xs|sm|md|lg)-([1-9]|1[0-2])/gi,\r\n                      \"\"\r\n                    );\r\n                  };\r\n\r\n                  if (renewalOptions.AutoRenewalOffer) {\r\n                    columns++;\r\n                    autoRenewHtml = mangePricePlanAndRender(renewalOptions.AutoRenewalOffer, false);\r\n                  }\r\n\r\n                  if (renewalOptions.AltRenewalOffer1) {\r\n                    columns++;\r\n                    altOffer1Html = mangePricePlanAndRender(renewalOptions.AltRenewalOffer1, true);\r\n                  }\r\n\r\n                  if (renewalOptions.AltRenewalOffer2) {\r\n                    columns++;\r\n                    altOffer2Html = mangePricePlanAndRender(renewalOptions.AltRenewalOffer2, false);\r\n                  }\r\n\r\n                  let colClass = \"col-xs-12\";\r\n                  if (columns === 2) {\r\n                    colClass = \"col-xs-12 col-sm-6\";\r\n                  } else if (columns === 3) {\r\n                    colClass = \"col-xs-12 col-sm-4\";\r\n                  }\r\n\r\n                  let mSrc =\r\n                    '<div class=\"auto-renewal-modal-wrapper\"><div class=\"row\"><div class=\"col-xs-12 hidden err-pnl\"></div></div><div class=\"row\">';\r\n\r\n                  if (renewalOptions.AutoRenewalOffer) {\r\n                    mSrc += '<div class=\"form-group ' + colClass + '\">' + autoRenewHtml + \"</div>\";\r\n                  } else {\r\n                    mSrc +=\r\n                      '<div class=\"form-group col-xs-12\">No renewal plans can be found at this time.</div>';\r\n                  }\r\n\r\n                  if (renewalOptions.AltRenewalOffer1) {\r\n                    mSrc += '<div class=\"form-group ' + colClass + '\">' + altOffer1Html + \"</div>\";\r\n                  }\r\n\r\n                  if (renewalOptions.AltRenewalOffer2) {\r\n                    mSrc += '<div class=\"form-group ' + colClass + '\">' + altOffer2Html + \"</div>\";\r\n                  }\r\n\r\n                  mSrc += \"</div></div>\";\r\n\r\n                  cw.modal.Open({\r\n                    title: \" Renewal\",\r\n                    data: { renewalOpts: renewalOptions },\r\n                    modalBody: $(mSrc),\r\n                    size: BootstrapDialog.SIZE_WIDE,\r\n                    buttons: [\r\n                      {\r\n                        label: '<i class=\"fa fa-times\"></i> Close',\r\n                        cssClass: \"btn-white btn-xs-block\",\r\n                        action: function (m) {\r\n                          m.close();\r\n                        },\r\n                      },\r\n                      {\r\n                        label: '<i class=\"fa fa-refresh\"></i> Renew Account',\r\n                        cssClass: \"btn-primary btn-xs-block disabled btn-renew\",\r\n                        action: function (m) {\r\n                          const $errPnl = m.$modalBody.find(\".err-pnl\");\r\n                          cw.alert.ClearAlert($errPnl);\r\n                          if (m.$modalBody.find('input[type=\"radio\"]:checked').length > 0) {\r\n                            const rOpts = m.getData(\"renewalOpts\");\r\n                            cw.loadingIndicator.start();\r\n                            cw.webservices.getJson(\r\n                              \"S1AccountManager/renew-account\",\r\n                              {\r\n                                BillingAccountId: rOpts.BillingAccountId,\r\n                                LdcAccountId: rOpts.LdcAccountId,\r\n                                RenewalPriceSheetLineId: m.$modalBody\r\n                                  .find('input[type=\"radio\"]:checked')\r\n                                  .data(\"priceSheetLineId\"),\r\n                                CustomerCorrespondenceSendQueueId: rOpts.CustomerCorrespondenceSendQueueId,\r\n                                RenewalPin: rOpts.RenewalPin,\r\n                              },\r\n                              function (renewalResp) {\r\n                                const alertTitle = \"Error\";\r\n                                const alertMsg = \"An unknown error occurred processing your renewal\";\r\n                                cw.loadingIndicator.stop();\r\n\r\n                                if (renewalResp && renewalResp.RenewalStatus === 1) {\r\n                                  //1 is a magic number here and means SUCCESS!!!! (Hana.AppEnum.CustomerCorrespondenceRenewalStatus)\r\n                                  cw.modal.Alert({\r\n                                    title: \"Renewal Processed\",\r\n                                    text: \"Your renewal has been processed.\",\r\n                                  });\r\n                                  m.close();\r\n                                  self.loadDashboard(self.selectedS1AccountId);\r\n                                  return;\r\n                                }\r\n\r\n                                cw.modal.Alert({ title: alertTitle, text: alertMsg });\r\n                              }\r\n                            );\r\n                          } else {\r\n                            cw.alert.Alert(\"Please select a renewal plan,\", $errPnl);\r\n                          }\r\n                        },\r\n                      },\r\n                    ],\r\n                    onShownCallback: function (m) {\r\n                      cw.loadingIndicator.stop();\r\n                      const $btnRenew = m.$modalFooter.find(\".btn-renew\");\r\n                      m.$modalBody.find('input[type=\"radio\"]').on(\"change\", function (e) {\r\n                        if (m.$modalBody.find('input[type=\"radio\"]:checked').length > 0) {\r\n                          $btnRenew.removeClass(\"disabled\");\r\n                        } else {\r\n                          $btnRenew.addClass(\"disabled\");\r\n                        }\r\n                      });\r\n                    },\r\n                  });\r\n                };\r\n\r\n                cw.templating.DownloadTemplateHtml(\r\n                  \"ApplicationPricePlan.html\",\r\n                  cw.appEnum.TemplateType.CwWidget,\r\n                  function (tmplSrc) {\r\n                    openModal(rtnObj, tmplSrc);\r\n                  }\r\n                );\r\n              } else {\r\n                cw.modal.Alert({\r\n                  title: \"No Pending Renewal Offers\",\r\n                  text: \"An unknown error occurred while retreiving pending renewal offers.\",\r\n                });\r\n              }\r\n            }\r\n          );\r\n        },\r\n        showServiceCallHistory: function (dpMap, locationName) {\r\n          const self = this;\r\n          if (dpMap) {\r\n            cw.loadingIndicator.start();\r\n            cw.webservices.getJson(\r\n              \"S1AccountManager/get-location-service-call-history/\" + self.selectedS1AccountId,\r\n              [dpMap],\r\n              function (srvCallHistoryItems) {\r\n                cw.modal.Open({\r\n                  title: \"Service History - \" + locationName,\r\n                  size: BootstrapDialog.SIZE_WIDE,\r\n                  buttons: [\r\n                    {\r\n                      label: '<i class=\"fa fa-times\"></i> Close',\r\n                      cssClass: \"btn-white btn-xs-block\",\r\n                      action: function (dialogRef) {\r\n                        dialogRef.close();\r\n                      },\r\n                    },\r\n                  ],\r\n                  modalBody: $('<div class=\"srv-history-tbl-target\"></div>'),\r\n                  onShownCallback: function (mr) {\r\n                    const $targetEl = mr.$modalBody.find(\".srv-history-tbl-target\");\r\n\r\n                    const cols = [\r\n                      {\r\n                        title: \"Service Call Date\",\r\n                        data: function (row, type, val, meta) {\r\n                          return cw.utility.tableSortByDate(row.ServiceCallCreatedDate, type, \"L\");\r\n                        },\r\n                      },\r\n                      {\r\n                        title: \"Scheduled Service Time\",\r\n                        data: function (row, type, val, meta) {\r\n                          return cw.utility.tableSortByDate(row.ServiceCallCreatedDate, type, \"L LT\");\r\n                        },\r\n                      },\r\n                      {\r\n                        title: \"Service Issue\",\r\n                        data: function (row, type, val, meta) {\r\n                          return row.ServiceCode;\r\n                        },\r\n                      },\r\n                      {\r\n                        title: \"Equipment\",\r\n                        data: function (row, type, val, meta) {\r\n                          return (\r\n                            row.EquipmentType +\r\n                            (row.EquipmentDescription\r\n                              ? '<br /><small class=\"text-muted\">' + row.EquipmentDescription + \"</small>\"\r\n                              : \"\")\r\n                          );\r\n                        },\r\n                      },\r\n                      {\r\n                        title: \"Invoice\",\r\n                        sortable: false,\r\n                        className: \"text-center\",\r\n                        data: function (row, type, val, meta) {\r\n                          return row.WebDocsDocumentId\r\n                            ? '<a href=\"#\" data-doc-num=\"' +\r\n                                row.InvoiceNumber +\r\n                                '\" data-web-doc-id=\"' +\r\n                                row.WebDocsDocumentId +\r\n                                '\" class=\"btn btn-sm btn-secondary view-document\"><i class=\"fa fa-eye\"></i> View</a>'\r\n                            : \"--\";\r\n                        },\r\n                      },\r\n                    ];\r\n\r\n                    const $tblHtml = $(\r\n                      cw.utility.getTableMarkup(\r\n                        cols.map(function (c) {\r\n                          return c.title;\r\n                        }),\r\n                        [\"srv-history-tbl\"]\r\n                      )\r\n                    );\r\n                    $targetEl.append($tblHtml);\r\n\r\n                    const tableOpts = {\r\n                      data: srvCallHistoryItems,\r\n                      lengthMenu: [\r\n                        [10, 25, 50, -1],\r\n                        [10, 25, 50, \"All\"],\r\n                      ],\r\n                      iDisplayLength: 10,\r\n                      responsive: true,\r\n                      deferRender: true,\r\n                      dom: \"lrtip\",\r\n                      language: {\r\n                        search: \"Filter:\",\r\n                      },\r\n                      order: [[0, \"desc\"]],\r\n                      columns: cols,\r\n                    };\r\n\r\n                    const dt = $tblHtml.DataTable(tableOpts);\r\n                    mr.setData(\"dataTable\", dt);\r\n\r\n                    mr.$modalBody.on(\"click\", \".view-document\", function (e) {\r\n                      e.preventDefault();\r\n                      const $this = $(this);\r\n                      const docGuid = $this.data(\"webDocId\");\r\n                      cw.loadingIndicator.start();\r\n                      cw.modal.Open({\r\n                        data: { docGuid: docGuid },\r\n                        title: \"Invoice #\" + $this.data(\"docNum\"),\r\n                        modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                        size: BootstrapDialog.SIZE_WIDE,\r\n                        successCallback: function (modalRef) {\r\n                          modalRef.close();\r\n                        },\r\n                        onShownCallback: function (modalRef) {\r\n                          const dGuid = modalRef.getData(\"docGuid\");\r\n\r\n                          createNonRoutedApp(pdfViewer, {\r\n                            pdfUrl: \"/gen-asset/document-viewer/\" + dGuid,\r\n                            allowDownload: true,\r\n                            onPdfLoaded() {\r\n                              cw.loadingIndicator.stop();\r\n                            },\r\n                          }).mount(\"#pdf-target\");\r\n                        },\r\n                      });\r\n                    });\r\n\r\n                    cw.loadingIndicator.stop();\r\n                  },\r\n                });\r\n              }\r\n            );\r\n          }\r\n        },\r\n\r\n        setAutoPaymentStatus: function (acctBalances) {\r\n          let $profileEl = $(\".autopay-profile-wrapper\");\r\n          let $profileElSelection = $(\".payment-profile-selection\");\r\n          const $statusBtn = $(\"button.payment-selection.payment-profile\");\r\n          const $statusText = $(\".payment-selection.payment-profile .auto-pay-status-text\");\r\n          const $statusIcon = $(\".payment-selection.payment-profile .auto-pay-status-icon\");\r\n          let profile = {};\r\n          const titleTooltip = [];\r\n\r\n          $statusBtn.prop(\"title\", \"\");\r\n          $statusBtn.tooltip(\"destroy\");\r\n          $profileEl.addClass(\"hidden\");\r\n\r\n          const eftConfig = acctBalances\r\n            .filter(function (acctBal) {\r\n              return acctBal.EftMaskedConfig;\r\n            })\r\n            .map(function (x) {\r\n              return x.EftMaskedConfig;\r\n            });\r\n\r\n          const ccConfig = acctBalances\r\n            .filter(function (acctBal) {\r\n              return acctBal.CreditCardProfile;\r\n            })\r\n            .map(function (x) {\r\n              return x.CreditCardProfile;\r\n            });\r\n\r\n          //tooltips - eft\r\n          if (eftConfig && eftConfig.length > 0) {\r\n            eftConfig.forEach(function (eft) {\r\n              if (eft.RemoteSystemAccountNumber) {\r\n                titleTooltip.push(\r\n                  `#${eft.RemoteSystemAccountNumber} ${eft.AccountTypeFormatted}: ${eft.AccountNumber}`\r\n                );\r\n              }\r\n            });\r\n          }\r\n          //tooltips - cc\r\n          if (ccConfig && ccConfig.length > 0) {\r\n            ccConfig.forEach(function (cc) {\r\n              const acctNum = acctBalances\r\n                .map(function (x) {\r\n                  if (\r\n                    typeof x.CreditCardPaymentProfileId !== \"undefined\" &&\r\n                    x.CreditCardPaymentProfileId !== null &&\r\n                    x.CreditCardPaymentProfileId === cc.CreditCardPaymentProfile\r\n                  ) {\r\n                    return x.RemoteSystemAccountNumber;\r\n                  }\r\n                })\r\n                .filterSingle(function (a) {\r\n                  return a;\r\n                });\r\n\r\n              if (cc.CardTypeFormatted && cc.MaskedAccountNumber && acctNum) {\r\n                titleTooltip.push(`#${acctNum} ${cc.CardTypeFormatted}: ${cc.MaskedAccountNumber}`);\r\n              }\r\n            });\r\n          }\r\n\r\n          if (\r\n            acctBalances &&\r\n            acctBalances.length === 1 &&\r\n            ((eftConfig && eftConfig.length > 0) || (ccConfig && ccConfig.length > 0))\r\n          ) {\r\n            profile = {\r\n              Type:\r\n                eftConfig && eftConfig.length > 0\r\n                  ? eftConfig[0].AccountTypeFormatted + \": \"\r\n                  : ccConfig[0].CardTypeFormatted + \": \",\r\n              Config:\r\n                eftConfig && eftConfig.length > 0\r\n                  ? eftConfig[0].AccountNumber\r\n                  : ccConfig[0].MaskedAccountNumber,\r\n            };\r\n\r\n            $profileEl.removeClass(\"hidden\");\r\n            $profileElSelection.html(profile.Type + \" \" + profile.Config);\r\n            $statusIcon.addClass(\"fa-toggle-on\");\r\n            $statusText.html(\" Enabled\");\r\n          } else if (\r\n            acctBalances &&\r\n            acctBalances.length > 1 &&\r\n            ((eftConfig && eftConfig.length > 0) || (ccConfig && ccConfig.length > 0))\r\n          ) {\r\n            $profileEl.addClass(\"hidden\");\r\n            $statusIcon.addClass(\"fa-toggle-on\");\r\n            $statusBtn.removeClass(\"btn-white\");\r\n            $statusText.html(\" Enabled\");\r\n          } else {\r\n            if ($(\".btn.payment-profile\").hasClass(\"disabled\")) {\r\n              titleTooltip.push(\"This account is billed directly by your utility.\");\r\n              $statusBtn.removeClass(\"btn-white\");\r\n            } else {\r\n              titleTooltip.push(\"No profile set for AutoPay\");\r\n              $statusBtn.addClass(\"btn-white\");\r\n            }\r\n            $profileEl.addClass(\"hidden\");\r\n            $statusIcon.addClass(\"fa-toggle-off\");\r\n            $statusIcon.removeClass(\"fa-toggle-on\");\r\n            $statusText.html(\" Disabled\");\r\n          }\r\n\r\n          $statusBtn.prop(\"title\", titleTooltip.join(\"<br />\"));\r\n          $statusBtn.tooltip();\r\n        },\r\n        updateServiceLocationData: function (s1AccountId, callback) {\r\n          if (s1AccountId) {\r\n            cw.webservices.getJson(\r\n              \"S1AccountManager/get-service-locations/\",\r\n              s1AccountId,\r\n              function (rtnData) {\r\n                if (rtnData?.ServiceLocations) {\r\n                  cw.pages.dashboard.args.ServiceLocations = rtnData.ServiceLocations;\r\n                  callback();\r\n                }\r\n              }\r\n            );\r\n          }\r\n        },\r\n\r\n        rebindS1AccountSelector: function () {\r\n          const self = this;\r\n\r\n          $(\".billing-account-item\").off(\"click\");\r\n          $(\".billing-account-item\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            const $this = $(this);\r\n            const s1AccountId = $this.data(\"s1AccountId\");\r\n            $(\".selected-acct-name-lbl\").html($this.html());\r\n            self.selectedS1AccountId = s1AccountId;\r\n            cw.loadingIndicator.start();\r\n            //this is outside the viewport\r\n            cw.pages.rewards.getDashSummaryData(self.selectedS1AccountId, function (dashSummary) {\r\n              self.args.RewardsPoints = dashSummary && dashSummary.length > 0 ? dashSummary[0] : {};\r\n\r\n              self.switchPage(location.pathname.toLowerCase());\r\n            });\r\n          });\r\n\r\n          $(\"a.favorite-account\").off(\"click\");\r\n          $(\"a.favorite-account\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            const $this = $(this);\r\n\r\n            //set any other favorites to unfavorited\r\n            $(\"a.unfavorite-account\").each(function () {\r\n              const $me = $(this);\r\n              $me.removeClass(\"unfavorite-account\");\r\n              $me.addClass(\"favorite-account\");\r\n              $me.find(\"i\").removeClass(\"fa-star\").addClass(\"fa-regular fa-star\");\r\n            });\r\n\r\n            $this.removeClass(\"favorite-account\");\r\n            $this.addClass(\"unfavorite-account\");\r\n            $this.find(\"i\").removeClass(\"fa-regular fa-star\").addClass(\"fa-star\");\r\n\r\n            cw.webservices.getJson(\r\n              \"S1AccountManager/favorite-s1-account\",\r\n              $this.data(\"s1AccountId\"),\r\n              function (wasFavorited) {}\r\n            );\r\n          });\r\n\r\n          $(\"a.unfavorite-account\").off(\"click\");\r\n          $(\"a.unfavorite-account\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            const $this = $(this);\r\n\r\n            $this.removeClass(\"unfavorite-account\");\r\n            $this.addClass(\"favorite-account\");\r\n            $this.find(\"i\").removeClass(\"fa-star\").addClass(\"fa-regular fa-star\");\r\n\r\n            cw.webservices.getJson(\r\n              \"S1AccountManager/unfavorite-s1-account\",\r\n              $this.data(\"s1AccountId\"),\r\n              function (wasUnfavorited) {}\r\n            );\r\n          });\r\n\r\n          $(\"a.edit-s1-account\").off(\"click\");\r\n          $(\"a.edit-s1-account\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            const $this = $(this);\r\n            self.showS1AccountEditModal(\r\n              self.selectedS1AccountId,\r\n              $this.data(\"s1AccountNumber\"),\r\n              $this.data(\"account-nickname\"),\r\n              $this.data(\"isFavorite\")\r\n            );\r\n          });\r\n        },\r\n        s1AccountSelectorClickHandler: function (e) {\r\n          $(this).toggleClass(\"active\");\r\n          $(\".billing-account-selector-wrapper\").toggleClass(\"active\");\r\n          e.stopPropagation();\r\n        },\r\n        refreshS1AccountSelector: function (selectedS1Account) {\r\n          const self = this;\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-s1-accounts\",\r\n            selectedS1Account,\r\n            function (s1Accounts) {\r\n              cw.templating.GetRenderedTemplateHTML(\r\n                \"CwDashboardS1AccountSelector.html\",\r\n                cw.appEnum.TemplateType.CwWidget,\r\n                { S1Accounts: s1Accounts },\r\n                function (renderedTmpl) {\r\n                  const $newMenu = $(renderedTmpl);\r\n                  $newMenu.on(\"click\", self.s1AccountSelectorClickHandler);\r\n                  $(\".billing-account-selector\").replaceWith($newMenu);\r\n                  self.rebindS1AccountSelector();\r\n                }\r\n              );\r\n            }\r\n          );\r\n        },\r\n        viewNotes: function (s1AcctId) {\r\n          cw.loadingIndicator.start();\r\n          cw.webservices.getJson(\"S1AccountManager/get-notes\", s1AcctId, function (notes) {\r\n            const cols = [\r\n              {\r\n                title: \"Note\",\r\n                width: \"75%\",\r\n                data: function (row, type, val, meta) {\r\n                  return (\r\n                    row.NoteType +\r\n                    '<div class=\"text-muted text-truncate\" title=\"' +\r\n                    row.NoteText.replace('\"', \"&quot;\") +\r\n                    '\"><small>' +\r\n                    row.NoteText +\r\n                    \"</small></div>\"\r\n                  );\r\n                },\r\n              },\r\n              {\r\n                title: \"Date Created\",\r\n                width: \"25%\",\r\n                className: \"text-center\",\r\n                data: function (row, type, val, meta) {\r\n                  return cw.utility.tableSortByDate(row.NoteDate, type, \"L\");\r\n                },\r\n              },\r\n            ];\r\n\r\n            let html = cw.utility.getTableMarkup(\r\n              cols.map(function (x) {\r\n                return x.title;\r\n              }),\r\n              [\"note-table\"]\r\n            );\r\n\r\n            html = '<div class=\"note-modal-wrapper\">' + html + \"</div>\";\r\n\r\n            cw.modal.Open({\r\n              data: { notes: notes, cols: cols },\r\n              title: \"Notes\",\r\n              buttons: [\r\n                {\r\n                  label: '<i class=\"fa fa-times\"></i> Close',\r\n                  cssClass: \"btn-white btn-xs-block\",\r\n                  action: function (dialogRef) {\r\n                    dialogRef.close();\r\n                  },\r\n                },\r\n              ],\r\n              size: BootstrapDialog.SIZE_WIDE,\r\n              modalBody: $(html),\r\n              onShownCallback: function (mr) {\r\n                const $tbl = mr.$modalBody.find(\"table.note-table\");\r\n                $tbl.css({ tableLayout: \"fixed\" });\r\n                $tbl.find(\"tbody\").on(\"click\", \"tr\", function () {\r\n                  $(this).find(\"div\").toggleClass(\"text-truncate\");\r\n                });\r\n\r\n                cw.loadingIndicator.stop();\r\n              },\r\n            });\r\n          });\r\n        },\r\n        showContractEquipment: function (contractId, deliveryPointMap, modalTitle) {\r\n          const self = this;\r\n          cw.loadingIndicator.start();\r\n\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-service-contract-details\",\r\n            {\r\n              S1AccountId: self.selectedS1AccountId,\r\n              ContractId: contractId,\r\n              RemoteSystemId: deliveryPointMap.RemoteSystemId,\r\n              RemoteSystemAccountId: deliveryPointMap.RemoteSystemAccountId,\r\n              RemoteSystemAccountNumber: deliveryPointMap.RemoteSystemAccountNumber,\r\n            },\r\n            function (contract) {\r\n              if (contract) {\r\n                contract.StartDateFormatted = moment(contract.StartDate).format(\"L\");\r\n                contract.EndDateFormatted = moment(contract.EndDate).format(\"L\");\r\n                contract.BillIntervalUOMFormatted = \"\";\r\n                if (contract.BillIntervalUOM === \"Y\") {\r\n                  contract.BillIntervalUOMFormatted = \"Yearly\";\r\n                } else if (contract.BillIntervalUOM === \"M\") {\r\n                  contract.BillIntervalUOMFormatted = \"Monthly\";\r\n                }\r\n\r\n                if (contract.ContractedEquipment && contract.ContractedEquipment.length > 0) {\r\n                  contract.ContractedEquipment.forEach(function (e) {\r\n                    if (e.CoverageFrom === contract.StartDate && e.CoverageTo === contract.EndDate) {\r\n                      e.EquipmentCoverageDateFormatted = \"Contract Term\";\r\n                    } else {\r\n                      e.EquipmentCoverageDateFormatted =\r\n                        moment(contract.CoverageFrom).format(\"L\") +\r\n                        \" - \" +\r\n                        moment(contract.CoverageTo).format(\"L\");\r\n                    }\r\n                  });\r\n                }\r\n\r\n                cw.templating.GetRenderedTemplateHTML(\r\n                  \"ServiceContractDetails.html\",\r\n                  cw.appEnum.TemplateType.CwWidget,\r\n                  contract,\r\n                  function (renderedTmpl) {\r\n                    cw.modal.Open({\r\n                      title: modalTitle,\r\n                      size: BootstrapDialog.SIZE_WIDE,\r\n                      buttons: [\r\n                        {\r\n                          label: '<i class=\"fa fa-times\"></i> OK',\r\n                          cssClass: \"btn-white btn-xs-block\",\r\n                          action: function (dialogRef) {\r\n                            dialogRef.close();\r\n                          },\r\n                        },\r\n                      ],\r\n                      modalBody: $(renderedTmpl),\r\n                      onShownCallback: function (mr) {\r\n                        cw.loadingIndicator.stop();\r\n\r\n                        mr.$modalBody.find(\".view-pricing-terms\").on(\"click\", function (e) {\r\n                          e.preventDefault();\r\n                          cw.modal.Open({\r\n                            data: { docUrl: $(this).data(\"tosUrl\") },\r\n                            title: \"Terms of Service\",\r\n                            modalBody: $('<div id=\"pdf-target\"></div>'),\r\n                            size: BootstrapDialog.SIZE_WIDE,\r\n                            successCallback: function (modalRef) {\r\n                              modalRef.close();\r\n                            },\r\n                            onShownCallback: function (modalRef) {\r\n                              const docUrl = modalRef.getData(\"docUrl\");\r\n\r\n                              createNonRoutedApp(pdfViewer, {\r\n                                pdfUrl: docUrl,\r\n                                allowDownload: true,\r\n                                onPdfLoaded() {\r\n                                  cw.loadingIndicator.stop();\r\n                                },\r\n                              }).mount(\"#pdf-target\");\r\n                            },\r\n                          });\r\n                        });\r\n                      },\r\n                    });\r\n                  }\r\n                );\r\n              } else {\r\n                cw.loadingIndicator.stop();\r\n              }\r\n            }\r\n          );\r\n        },\r\n        loadDashboard: function (s1AccountId) {\r\n          const self = this;\r\n          cw.loadingIndicator.start();\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-dashboard-s1-account/\" + s1AccountId,\r\n            self.url,\r\n            function (newBillAccount) {\r\n              if (newBillAccount) {\r\n                if (!self.args) {\r\n                  self.args = {};\r\n                }\r\n                const brandObj = self.args.brandObj;\r\n                const hasV2AddProdRight = self.args.useV2addProductExperience;\r\n                self.args = $.extend(true, {}, newBillAccount);\r\n                self.selectedS1AccountId = s1AccountId;\r\n                self.args.selectedS1AccountId = s1AccountId;\r\n                self.args.brandObj = brandObj;\r\n                self.args.CanViewRewards = newBillAccount.CanViewRewards;\r\n                self.args.CanRedeemNewRewards = newBillAccount.CanRedeemNewRewards;\r\n                self.args.useV2addProductExperience = hasV2AddProdRight;\r\n\r\n                Cookies.set(self.args.selectedS1AccountCookieKey, s1AccountId); //save this for later incase we reload the page\r\n                self.bindRewardsAndCarouselItems(newBillAccount.RewardsPoints);\r\n\r\n                self.rebindNotificationListener(newBillAccount.S1AccountNotificationToken);\r\n\r\n                //this was fixed on the backend, but broke it here...mangling to fix from this end\r\n                newBillAccount.S1CustomerTypeIds = JSON.stringify(newBillAccount.S1CustomerTypeIds);\r\n\r\n                const $s1CustType = $(\".s1-customer-type\");\r\n                $s1CustType.data(\"customerTypeIds\", newBillAccount.CustomerTypes);\r\n                $s1CustType.html(newBillAccount.CustomerType);\r\n                if (newBillAccount.CustomerJoinYear) {\r\n                  $(\".customer-since\").html(newBillAccount.CustomerJoinYear);\r\n                  $(\".customer-join-year\").removeClass(\"hidden\");\r\n                } else {\r\n                  $(\".customer-join-year\").addClass(\"hidden\");\r\n                }\r\n\r\n                newBillAccount.ServiceLocations.forEach(function (sl) {\r\n                  sl.CustomerTypeIds = JSON.stringify(sl.CustomerTypeIds);\r\n                  sl.RemoteSystemMap = JSON.stringify(sl.RemoteSystemMap);\r\n                  sl.ProductRows.forEach(function (pr) {\r\n                    pr.forEach(function (p) {\r\n                      p.DeliveryPointMap = JSON.stringify(p.DeliveryPointMap);\r\n                    });\r\n                  });\r\n                });\r\n\r\n                cw.templating.GetRenderedTemplateHTML(\r\n                  \"DashboardInterior.html\",\r\n                  cw.appEnum.TemplateType.CwWidget,\r\n                  { Dashboard: newBillAccount },\r\n                  function (renderedTmpl) {\r\n                    self.$viewport.empty();\r\n                    self.$viewport.append(renderedTmpl);\r\n                    $(\"html, body\").scrollTop(0);\r\n                    self.setAutoPaymentStatus(newBillAccount.AccountBalances);\r\n                    self.bindInteractions(self.args);\r\n                    self.bindRewardsAndCarouselItems(self.args.RewardsPoints);\r\n                    cw.loadingIndicator.stop();\r\n                  }\r\n                );\r\n              } else {\r\n                cw.loadingIndicator.stop();\r\n              }\r\n            }\r\n          );\r\n        },\r\n        showS1AccountEditModal: function (s1AccountId, s1AccountNumber, accountNickname, isFavorite) {\r\n          const self = this;\r\n          cw.loadingIndicator.start();\r\n          const d = {\r\n            s1AccountId: s1AccountId,\r\n            s1AccountNumber: s1AccountNumber,\r\n            accountNickname: accountNickname,\r\n            isFavorite: isFavorite,\r\n          };\r\n          cw.templating.GetRenderedTemplateHTML(\r\n            \"EditS1Account.html\",\r\n            cw.appEnum.TemplateType.CwWidget,\r\n            d,\r\n            function (renderedTmpl) {\r\n              cw.modal.Open({\r\n                data: { mdata: d },\r\n                title: \"Account Preferences\",\r\n                modalBody: $(renderedTmpl),\r\n                buttons: [\r\n                  {\r\n                    label: '<i class=\"fa fa-fw fa-unlink\"></i> Unlink Account',\r\n                    cssClass: \"btn-red btn-xs-block pull-left\",\r\n                    action: function (modal) {\r\n                      cw.modal.Open({\r\n                        title: \"Confirm Unlink\",\r\n                        modalBody: $(\r\n                          \"<p>Are you sure you would like to unlink this account from your login?</p><p>You will no longer be able to manage this account once you confirm this action.</p>\"\r\n                        ),\r\n                        data: {\r\n                          s1AccountId: modal.getData(\"mdata\").s1AccountId,\r\n                          parentModal: modal,\r\n                        },\r\n                        buttons: [\r\n                          {\r\n                            label: '<i class=\"fa fa-fw fa-times\"></i> Cancel',\r\n                            cssClass: \"btn-white btn-xs-block\",\r\n                            action: function (dialogRef) {\r\n                              dialogRef.close();\r\n                            },\r\n                          },\r\n                          {\r\n                            label: '<i class=\"fa fa-fw fa-unlink\"></i> Yes Unlink Account',\r\n                            cssClass: \"btn-red btn-xs-block\",\r\n                            action: function (m) {\r\n                              cw.loadingIndicator.start();\r\n                              cw.webservices.getJson(\r\n                                \"S1AccountManager/unlink-s1-account\",\r\n                                m.getData(\"s1AccountId\"),\r\n                                function (wasSuccess) {\r\n                                  if (wasSuccess) {\r\n                                    cw.modal.Alert({\r\n                                      title: \"Success\",\r\n                                      text: \"This account has successfully been unlinked from your login.\",\r\n                                      buttons: [\r\n                                        {\r\n                                          label: '<i class=\"fa fa-fw fa-check\"></i> Ok',\r\n                                          cssClass: \"btn-primary btn-xs-block\",\r\n                                          action: function (d) {\r\n                                            cw.loadingIndicator.start();\r\n                                            BootstrapDialog.closeAll();\r\n                                            location.reload();\r\n                                          },\r\n                                        },\r\n                                      ],\r\n                                    });\r\n                                  } else {\r\n                                    cw.modal.Alert({\r\n                                      title: \"Unknown Error\",\r\n                                      text: \"An unknown error occurred while unlinking this account.\",\r\n                                    });\r\n                                  }\r\n\r\n                                  cw.loadingIndicator.stop();\r\n                                }\r\n                              );\r\n                            },\r\n                          },\r\n                        ],\r\n                      });\r\n                    },\r\n                  },\r\n                  {\r\n                    label: '<i class=\"fa fa-times\"></i> Cancel',\r\n                    cssClass: \"btn-white btn-xs-block\",\r\n                    action: function (dialogRef) {\r\n                      dialogRef.close();\r\n                    },\r\n                  },\r\n                  {\r\n                    label: '<i class=\"fa fa-check\"></i> Ok',\r\n                    cssClass: \"btn-primary btn-xs-block\",\r\n                    action: function (mr) {\r\n                      const nickname = mr.$modalBody.find(\".account-nickname\").val().trim();\r\n                      const isFavorite = mr.$modalBody.find(\"#is-account-favorite:checked\").length > 0;\r\n                      cw.loadingIndicator.start();\r\n                      cw.webservices.getJson(\r\n                        \"S1AccountManager/set-account-nickname\",\r\n                        {\r\n                          S1AccountId: mr.getData(\"mdata\").s1AccountId,\r\n                          Nickname: nickname,\r\n                          isFavorite: isFavorite,\r\n                        },\r\n                        function (wasSuccess) {\r\n                          if (wasSuccess) {\r\n                            self.loadDashboard(mr.getData(\"mdata\").s1AccountId);\r\n                          } else {\r\n                            cw.modal.Alert({\r\n                              title: \"Unknown Error\",\r\n                              text: \"An unknown error occurred while updating your information.\",\r\n                            });\r\n                            cw.loadingIndicator.stop();\r\n                          }\r\n                        }\r\n                      );\r\n\r\n                      mr.close();\r\n                    },\r\n                  },\r\n                ],\r\n                onShownCallback: function (mr) {\r\n                  cw.loadingIndicator.stop();\r\n                },\r\n              });\r\n            }\r\n          );\r\n        },\r\n        editServiceLocation: function (deliveryPointMap, s1AccountId, servLocHash) {\r\n          const self = this;\r\n\r\n          const dpMap = deliveryPointMap.map(function (x) {\r\n            return {\r\n              RemoteSystemDeliveryPointId: x.RemoteSystemDeliveryPointId,\r\n              RemoteSystemId: x.RemoteSystemId,\r\n              RemoteSystemAccountId: x.RemoteSystemAccountId,\r\n              RemoteSystemAccountNumber: x.RemoteSystemAccountNumber,\r\n            };\r\n          });\r\n\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-delivery-point-info/\" + s1AccountId,\r\n            dpMap,\r\n            function (selectedLocationRtn) {\r\n              cw.loadingIndicator.stop();\r\n              if (selectedLocationRtn) {\r\n                let selectedLocation = [];\r\n\r\n                for (const element of selectedLocationRtn) {\r\n                  if (element.ServiceLocationHash === servLocHash) {\r\n                    selectedLocation = element;\r\n                  }\r\n                }\r\n\r\n                selectedLocation.EveningPhone = cw.utility.FormatAsPhone({\r\n                  number: selectedLocation.EveningPhone,\r\n                });\r\n                selectedLocation.DaytimePhone = cw.utility.FormatAsPhone({\r\n                  number: selectedLocation.DaytimePhone,\r\n                });\r\n                selectedLocation.RemoteSystemMap = deliveryPointMap;\r\n\r\n                self.phoneTypeList = selectedLocation.GetPhoneTypeList;\r\n                self.locationData = selectedLocationRtn;\r\n                self.locationData.selectedLocation = selectedLocation;\r\n                self.args.ServiceLocations = selectedLocationRtn;\r\n\r\n                const myDp = selectedLocation.RemoteSystemMap.map(function (x) {\r\n                  return x.RemoteSystemId;\r\n                });\r\n                selectedLocation.RemoteSystemId = myDp[0];\r\n                let modalSize;\r\n\r\n                switch (myDp[0]) {\r\n                  case cw.appEnum.S1RemoteSystem.As400:\r\n                  case cw.appEnum.S1RemoteSystem.Nexant:\r\n                    modalSize = BootstrapDialog.SIZE_NORMAL;\r\n                    break;\r\n                  case cw.appEnum.S1RemoteSystem.Cargas:\r\n                    modalSize = BootstrapDialog.SIZE_WIDE;\r\n                    break;\r\n                }\r\n\r\n                cw.templating.GetRenderedTemplateHTML(\r\n                  \"CwEditLocation.html\",\r\n                  cw.appEnum.TemplateType.CwWidget,\r\n                  selectedLocation,\r\n                  function (renderedTemplate) {\r\n                    cw.modal.Open({\r\n                      data: {},\r\n                      title: \"Edit Location\",\r\n                      size: modalSize,\r\n                      modalBody: $(renderedTemplate),\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                          action: function (dialogRef) {\r\n                            dialogRef.close();\r\n                          },\r\n                        },\r\n                        {\r\n                          label: '<i class=\"fa fa-save\"></i> Save',\r\n                          cssClass: \"btn-primary btn-xs-block\",\r\n                          action: function (dialogRef) {\r\n                            const self = cw.pages.dashboard;\r\n\r\n                            switch (selectedLocation.RemoteSystemId) {\r\n                              case cw.appEnum.S1RemoteSystem.As400:\r\n                              case cw.appEnum.S1RemoteSystem.Nexant:\r\n                                self.saveServiceLocation(selectedLocation, dialogRef);\r\n                                break;\r\n                              case cw.appEnum.S1RemoteSystem.Cargas:\r\n                                const rowData = cw.utility.getDataTableAllRowData(\r\n                                  dialogRef.$modalBody.find(\".location-phone-table-target\").DataTable()\r\n                                );\r\n\r\n                                const saveObj = {\r\n                                  DeliveryLocationDescription: dialogRef.$modalBody\r\n                                    .find(\".location-name\")\r\n                                    .val(),\r\n                                  ContactName: dialogRef.$modalBody.find(\".contact-name\").val(),\r\n                                  IsBillToAddress: dialogRef.$modalBody\r\n                                    .find(\".billing-address-checkbox\")\r\n                                    .is(\":checked\"),\r\n                                  Directions: dialogRef.$modalBody.find(\".directions-cargas\").val(),\r\n                                  GetCustomerPhoneNumberList: rowData,\r\n                                  LocationId: dialogRef.$modalBody\r\n                                    .find(\".location-address-info\")\r\n                                    .data(\"locationId\"),\r\n                                  CustomerLocationId: dialogRef.$modalBody\r\n                                    .find(\".location-address-info\")\r\n                                    .data(\"entityLocationId\"), //entityLocationId -- You've been CarGassed!\r\n                                  RemoteSystemId: selectedLocation.RemoteSystemId,\r\n                                  RemoteSystemMap: selectedLocation.RemoteSystemMap,\r\n                                };\r\n\r\n                                self.saveServiceLocation(saveObj, dialogRef);\r\n                                break;\r\n                            }\r\n                          },\r\n                        },\r\n                      ],\r\n                      onShownCallback: function (mr) {\r\n                        const self = cw.pages.dashboard;\r\n                        const $locationEl = mr.$modalBody.find(\".edit-location-wrapper\");\r\n\r\n                        for (const element of selectedLocation.RemoteSystemMap) {\r\n                          switch (element.RemoteSystemId) {\r\n                            case cw.appEnum.S1RemoteSystem.As400:\r\n                              $locationEl.find(\".as400-account-form\").removeClass(\"hidden\");\r\n                              break;\r\n                            case cw.appEnum.S1RemoteSystem.Nexant:\r\n                              $locationEl.find(\".nexant-account-form\").removeClass(\"hidden\");\r\n                              break;\r\n                            case cw.appEnum.S1RemoteSystem.Cargas:\r\n                              $locationEl.find(\".cargas-account-form\").removeClass(\"hidden\");\r\n                              break;\r\n                          }\r\n                        }\r\n\r\n                        cw.loadingIndicator.stop();\r\n                        cw.pages.dashboard.buildPhoneNumberDataTable(selectedLocation);\r\n\r\n                        self.bindEditLocationButtons(mr, selectedLocation, selectedLocationRtn);\r\n                      },\r\n                    });\r\n                  }\r\n                );\r\n              }\r\n            }\r\n          );\r\n        },\r\n        bindEditLocationButtons: function (mr, selectedLocation, selectedLocationRtn) {\r\n          const self = cw.pages.dashboard;\r\n\r\n          mr.$modalBody.find(\".add-phone\").off(\"click\");\r\n          mr.$modalBody.find(\".add-phone\").on(\"click\", function (e) {\r\n            const $this = $(this);\r\n            const PhoneData = selectedLocation;\r\n\r\n            PhoneData.LocationId = $this.data(\"locationId\");\r\n            PhoneData.Location = PhoneData.StreetAddress;\r\n\r\n            PhoneData.PhoneTypeList = self.phoneTypeList.map(function (x) {\r\n              return {\r\n                PhoneTypeId: x.PhoneTypeID,\r\n                PhoneType: x.PhoneTypeID === 0 ? \"--Select--\" : x.PhoneType,\r\n                PhoneTypeSelected: false,\r\n              };\r\n            });\r\n\r\n            self.getPhoneDetailModal(PhoneData, mr);\r\n          });\r\n\r\n          mr.$modalBody.find(\".delete-phone\").off(\"click\");\r\n          mr.$modalBody.find(\".delete-phone\").on(\"click\", function (e) {\r\n            const $this = $(this);\r\n            const phoneId = $this.data(\"phoneId\");\r\n            const phoneNumber = $this.data(\"phoneNumber\");\r\n\r\n            cw.modal.Open({\r\n              data: {},\r\n              title: \"Delete Phone Confirmation\",\r\n              modalBody: \"Are you sure you would like to remove \" + phoneNumber + \"?\",\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                  action: function (dialogRef) {\r\n                    dialogRef.close();\r\n                  },\r\n                },\r\n                {\r\n                  label: '<i class=\"fa fa-trash\"></i> Delete',\r\n                  cssClass: \"btn-red btn-xs-block\",\r\n                  action: function (dialogRef) {\r\n                    const dt = mr.$modalBody.find(\".location-phone-table-target\").DataTable();\r\n                    cw.utility.deleteDataTableListing(dt, phoneId, \"PhoneID\", true);\r\n                    dialogRef.close();\r\n                  },\r\n                },\r\n              ],\r\n              onShownCallback: function (mr) {},\r\n            });\r\n          });\r\n\r\n          mr.$modalBody.find(\".edit-phone\").off(\"click\");\r\n          mr.$modalBody.find(\".edit-phone\").on(\"click\", function (e) {\r\n            const $this = $(this);\r\n            const $dt = self.phoneEditDataTable;\r\n            const phoneId = $this.data(\"phoneId\");\r\n            const rowData = cw.utility.getDataTableRowData($dt, phoneId, \"PhoneID\");\r\n            const customerLocationData = selectedLocationRtn;\r\n\r\n            cw.loadingIndicator.start();\r\n            self.getPhoneEditData(rowData, customerLocationData, mr);\r\n          });\r\n\r\n          mr.$modalBody.find(\".billing-address-checkbox\").off(\"change\");\r\n          mr.$modalBody.find(\".billing-address-checkbox\").on(\"change\", function (e) {\r\n            const $this = $(this);\r\n            const warning =\r\n              '<div class=\"pl10 pr10 pt20\">' +\r\n              '<p><i class=\"fa fa-warning\"></i> Only 1 Location may be used as the Billing Address.</p>' +\r\n              \"<p>If you check this field, it will uncheck any other Locations currently set to be used as the Billing Address.</p>\" +\r\n              \"</div>\";\r\n            const error =\r\n              '<div class=\"pl10 pr10 pt20\">' +\r\n              '<p><i class=\"fa fa-ban\"></i> There must be at least 1 Service Location configured as the Billing Address.</p>' +\r\n              \"</div>\";\r\n            if (!$this.is(\":checked\")) {\r\n              cw.modal.Open({\r\n                data: {},\r\n                title: \"Error!\",\r\n                modalBody: error,\r\n                buttons: [\r\n                  {\r\n                    label: '<i class=\"fa fa-check\"></i> Ok',\r\n                    cssClass: \"btn-secondary btn-xs-block\",\r\n                    action: function (dialogRef) {\r\n                      $(\".billing-address-checkbox\").prop(\"checked\", true);\r\n                      dialogRef.close();\r\n                    },\r\n                  },\r\n                ],\r\n                onShownCallback: function (mr) {},\r\n              });\r\n            } else {\r\n              cw.modal.Open({\r\n                data: {},\r\n                title: \"Warning!\",\r\n                modalBody: warning,\r\n                buttons: [\r\n                  {\r\n                    label: '<i class=\"fa fa-check\"></i> Ok',\r\n                    cssClass: \"btn-secondary btn-xs-block\",\r\n                    action: function (dialogRef) {\r\n                      dialogRef.close();\r\n                    },\r\n                  },\r\n                ],\r\n                onShownCallback: function (mr) {},\r\n              });\r\n            }\r\n          });\r\n        },\r\n        getPhoneDetailModal: function (PhoneData, mRef) {\r\n          cw.templating.GetRenderedTemplateHTML(\r\n            \"CwEditLocationPhoneDetail.html\",\r\n            cw.appEnum.TemplateType.CwWidget,\r\n            PhoneData,\r\n            function (renderedTemplate) {\r\n              cw.modal.Open({\r\n                data: {},\r\n                title: \"Edit Location Phone Number\",\r\n                modalBody: $(renderedTemplate),\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                    action: function (dialogRef) {\r\n                      dialogRef.close();\r\n                    },\r\n                  },\r\n                  {\r\n                    label: '<i class=\"fa fa-save\"></i> Save',\r\n                    cssClass: \"btn-primary btn-xs-block\",\r\n                    action: function (mr) {\r\n                      const self = cw.pages.dashboard;\r\n                      const $errPnl = mr.$modalBody.find(\".error-panel\");\r\n                      const $dt = self.phoneEditDataTable;\r\n                      const err = [];\r\n                      let phoneId = mr.$modalBody.find(\".update-phone-number\").data(\"phoneId\");\r\n\r\n                      cw.alert.ClearAlert($errPnl);\r\n\r\n                      if (phoneId === \"\" || typeof phoneId === \"undefined\") {\r\n                        phoneId = -1;\r\n\r\n                        const getUniqueNumber = function (phoneId) {\r\n                          const list = cw.utility.getDataTableAllRowData(\r\n                            mRef.$modalBody.find(\".location-phone-table-target\").DataTable()\r\n                          );\r\n                          let i = 0;\r\n\r\n                          for (i; i < list.length; i++) {\r\n                            const PhoneId = list[i].PhoneID;\r\n                            if (phoneId === PhoneId) {\r\n                              return phoneId - 4;\r\n                            }\r\n                          }\r\n                          return phoneId;\r\n                        };\r\n\r\n                        phoneId = getUniqueNumber(phoneId);\r\n                      }\r\n\r\n                      const phoneObj = {\r\n                        Contact: mr.$modalBody.find(\".update-phone-contact\").val().trim(),\r\n                        IsPrimary: PhoneData.IsPrimary,\r\n                        Location: PhoneData.Location,\r\n                        LocationId: PhoneData.LocationId,\r\n                        EntityLocationId: PhoneData.EntityLocationId,\r\n                        PhoneExtension: mr.$modalBody.find(\".update-phone-extension\").val().trim(),\r\n                        PhoneID: phoneId,\r\n                        PhoneNumber: mr.$modalBody.find(\".update-phone-number\").val().trim(),\r\n                        PhoneNumberFormatted: mr.$modalBody.find(\".update-phone-number\").val().trim(),\r\n                        PhoneType: mr.$modalBody.find(\".phone-type-select option:selected\").text().trim(),\r\n                        PhoneTypeId: mr.$modalBody.find(\".phone-type-select\").val().trim(),\r\n                      };\r\n                      const phoneIsFormatted =\r\n                        phoneObj.PhoneNumber.indexOf(\"(\") === -1 ||\r\n                        phoneObj.PhoneNumber.indexOf(\")\") === -1 ||\r\n                        phoneObj.PhoneNumber.indexOf(\"-\") > -1;\r\n\r\n                      if (typeof phoneObj.PhoneNumber === \"undefined\" || phoneObj.PhoneNumber === \"\") {\r\n                        err.push({\r\n                          text: \"Phone number cannot be blank.\",\r\n                          el: mr.$modalBody.find(\".update-phone-number\"),\r\n                        });\r\n                      }\r\n                      if (phoneIsFormatted && phoneObj.PhoneNumber.length !== 12) {\r\n                        err.push({\r\n                          text: \"Phone Number must be in the following format. Example: xxx-xxx-xxxx\",\r\n                          el: mr.$modalBody.find(\".update-phone-number\"),\r\n                        });\r\n                      }\r\n                      if (!phoneIsFormatted) {\r\n                        err.push({\r\n                          text: \"Please enter a valid phone number. Example: xxx-xxx-xxxx\",\r\n                          el: mr.$modalBody.find(\".update-phone-number\"),\r\n                        });\r\n                      }\r\n                      if (phoneObj.PhoneExtension && !parseInt(phoneObj.PhoneExtension)) {\r\n                        err.push({\r\n                          text: \"Phone Extension must be a numeric value\",\r\n                          el: mr.$modalBody.find(\".update-phone-extension\"),\r\n                        });\r\n                      }\r\n                      if (phoneObj.PhoneExtension && phoneObj.PhoneExtension.length > 5) {\r\n                        err.push({\r\n                          text: \"Phone Extension cannot be over 5 characters in length.\",\r\n                          el: mr.$modalBody.find(\".update-phone-extension\"),\r\n                        });\r\n                      }\r\n\r\n                      if (err.length < 1) {\r\n                        if (phoneId && PhoneData !== null) {\r\n                          //edit existing phone - update datatable in background only\r\n                          cw.utility.addUpdateDataTableListing($dt, phoneObj, \"PhoneID\", false);\r\n                          $dt.draw(true);\r\n                        } else {\r\n                          //add new phone number to datatable in background\r\n                          cw.utility.addUpdateDataTableListing($dt, phoneObj, \"\", false);\r\n                        }\r\n\r\n                        mr.close();\r\n                        self.bindEditLocationButtons(\r\n                          mRef,\r\n                          self.locationData.selectedLocation,\r\n                          self.locationData\r\n                        );\r\n                      } else {\r\n                        cw.alert.Alert(err, $errPnl);\r\n                        $errPnl.find(\"ul\").addClass(\"list-unstyled\");\r\n                      }\r\n                    },\r\n                  },\r\n                ],\r\n                onShownCallback: function (mr) {\r\n                  const self = cw.pages.dashboard;\r\n\r\n                  mr.$modalBody.find(\".update-phone-number\").on(\"change input keyup paste\", function (e) {\r\n                    const $this = $(this);\r\n                    const phone = self.formatPhoneNumberForDisplay($this.val());\r\n                    $this.val(phone);\r\n                  });\r\n                },\r\n              });\r\n            }\r\n          );\r\n        },\r\n        getPhoneEditData: function (rowData, locationData, mr) {\r\n          const self = cw.pages.dashboard;\r\n          const PhoneData = rowData;\r\n\r\n          PhoneData.PhoneTypeList = self.phoneTypeList.map(function (x) {\r\n            return {\r\n              PhoneTypeId: x.PhoneTypeID,\r\n              PhoneType: x.PhoneTypeID === 0 ? \"--Select--\" : x.PhoneType,\r\n              PhoneTypeSelected: parseInt(x.PhoneTypeID) === parseInt(rowData.PhoneTypeId),\r\n            };\r\n          });\r\n          PhoneData.LocationList = locationData.map(function (x) {\r\n            return {\r\n              LocationId: x.RemoteSystemMap[0].RemoteSystemDeliveryPointId,\r\n              EntityLocationId: x.EntityLocationId,\r\n              LocationAddress: x.StreetAddress,\r\n              LocationSelected:\r\n                x.RemoteSystemMap[0].RemoteSystemDeliveryPointId === rowData.LocationId ||\r\n                rowData.Location === null,\r\n            };\r\n          });\r\n\r\n          cw.loadingIndicator.stop();\r\n\r\n          if (PhoneData && typeof PhoneData !== \"undefined\") {\r\n            self.getPhoneDetailModal(PhoneData, mr);\r\n          }\r\n        },\r\n        buildPhoneNumberDataTable: function (phoneData) {\r\n          const self = this;\r\n\r\n          const columnDefs = [\r\n            {\r\n              orderable: true,\r\n              visible: false,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.PhoneID;\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.PhoneNumberFormatted;\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.PhoneExtension;\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.PhoneType;\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.Contact;\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-center\",\r\n              data: function (row, type, val, meta) {\r\n                if (row.IsPrimary) {\r\n                  return '<div class=\"shipley-checkbox\"><i class=\"fa fa-regular fa-square-check\"></i></div>';\r\n                } else {\r\n                  return '<div class=\"shipley-checkbox\"><i class=\"fa fa-regular fa-square\"></i></div>';\r\n                }\r\n              },\r\n            },\r\n            {\r\n              orderable: true,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return row.Location;\r\n              },\r\n            },\r\n            {\r\n              orderable: false,\r\n              className: \"text-left\",\r\n              data: function (row, type, val, meta) {\r\n                return `<div class=\"flex\" style=\"height:30px;\">\r\n                          <span data-phone-id=\"${row.PhoneID}\" data-entity-location-id=\"${row.EntityLocationId}\" data-phone-number=\"${row.PhoneNumber}\" class=\"btn btn-xs pl10 pr10 pt5 pb5 btn-secondary edit-phone\" style=\"cursor: pointer;\"><i class=\"fa fa-edit\"></i> Edit</span>\r\n                          <span data-phone-id=\"${row.PhoneID}\" data-entity-location-id=\"${row.EntityLocationId}\" data-phone-number=\"${row.PhoneNumber}\" class=\"btn btn-xs pl10 pr10 pt5 pb5 btn-red delete-phone ml5\" style=\"cursor: pointer;\"><i class=\"fa fa-trash\"></i></span>\r\n                        </div>`;\r\n              },\r\n            },\r\n          ];\r\n\r\n          const tableOptions = {\r\n            iDisplayLength: 5,\r\n            processing: true,\r\n            responsive: true,\r\n            deferRender: false,\r\n            bSortClasses: false,\r\n            dom: \"<t>p\",\r\n            data: phoneData.GetCustomerPhoneNumberList,\r\n            columns: columnDefs,\r\n          };\r\n\r\n          self.phoneEditDataTable = $(\".location-phone-table-target\").DataTable(tableOptions);\r\n\r\n          const thx = $(\"table.location-phone-table-target\").find(\"th\");\r\n          const tdx = $(\"table.location-phone-table-target\").find(\"td\");\r\n\r\n          $.each(tdx, function (i, j) {\r\n            $(this).css(\"font-size\", \"14px\");\r\n          });\r\n\r\n          $.each(thx, function (i, j) {\r\n            $(this).css(\"background-color\", \"#D9E4F3\");\r\n          });\r\n        },\r\n        saveServiceLocation: function (selectedLocation, dialogRef) {\r\n          const self = this;\r\n          const remoteId = selectedLocation.RemoteSystemId;\r\n          const $locationEl = $(\".edit-location-wrapper\");\r\n          const $email = $locationEl.find(\".email-address-nexant\").val();\r\n          const $attention = $locationEl.find(\".attention\").val();\r\n          const $description = $locationEl.find(\".delivery-location-description\").val();\r\n          const $eveningPhone = cw.utility.FormatAsPhone({\r\n            number: $locationEl.find(\".evening-phone\").val(),\r\n          });\r\n          const $directions = $locationEl.find(\".directions\").val();\r\n          const $contactName =\r\n            remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n              ? $locationEl.find(\".contact-name-nexant\").val().trim()\r\n              : $locationEl.find(\".contact-name-as400\").val().trim();\r\n          let orgData = {};\r\n          //Setup orgData\r\n          switch (remoteId) {\r\n            case cw.appEnum.S1RemoteSystem.As400:\r\n              orgData.Attention = $attention;\r\n              orgData.Directions = $directions;\r\n              orgData.DeliveryLocationDescription = $description;\r\n              orgData.EveningPhone = $eveningPhone;\r\n              break;\r\n            case cw.appEnum.S1RemoteSystem.Nexant:\r\n              if ($email) {\r\n                orgData.Email = $email;\r\n              }\r\n              break;\r\n            case cw.appEnum.S1RemoteSystem.Cargas:\r\n              orgData = selectedLocation;\r\n              break;\r\n          }\r\n\r\n          orgData.DayPhone = cw.utility.FormatAsPhone({\r\n            number:\r\n              remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n                ? $locationEl.find(\".daytime-phone-nexant\").val()\r\n                : $locationEl.find(\".daytime-phone-as400\").val(),\r\n          });\r\n          orgData.S1AccountId = self.selectedS1AccountId;\r\n          orgData.RemoteSystemMap = selectedLocation.RemoteSystemMap;\r\n\r\n          const validateServiceLocation = function (orgData) {\r\n            cw.loadingIndicator.start();\r\n            const $errPnl = $locationEl.find(\".err-pnl\");\r\n            cw.alert.ClearAlert($errPnl);\r\n            const errs = [];\r\n\r\n            switch (remoteId) {\r\n              case cw.appEnum.S1RemoteSystem.As400:\r\n              case cw.appEnum.S1RemoteSystem.Nexant:\r\n                if (orgData.DayPhone && orgData.DayPhone.length !== 12) {\r\n                  errs.push({\r\n                    text: \"Please enter a valid daytime phone number\",\r\n                    $el: $locationEl.find(\".daytime-phone\"),\r\n                  });\r\n                }\r\n                if (orgData.EveningPhone && orgData.EveningPhone.length !== 12) {\r\n                  errs.push({\r\n                    text: \"Please enter a valid evening phone number\",\r\n                    $el: $locationEl.find(\".evening-phone\"),\r\n                  });\r\n                }\r\n                if (orgData.Email && !orgData.Email.isValidEmail()) {\r\n                  errs.push({\r\n                    text: \"Please enter a valid email.\",\r\n                    $el: $locationEl.find(\".email-address\"),\r\n                  });\r\n                }\r\n                if (orgData.Directions && orgData.Directions.length > 200) {\r\n                  errs.push({\r\n                    text: \"Directions may not exceed 200 Characters.\",\r\n                    $el: $locationEl.find(\".directions\"),\r\n                  });\r\n                }\r\n                if (!validateContactName($contactName)) {\r\n                  const errMsg =\r\n                    \"Please enter a valid Contact Name. \" +\r\n                    \"Please be sure a First and Last name are specified.\";\r\n                  errs.push({\r\n                    text: errMsg,\r\n                    $el:\r\n                      remoteId === cw.appEnum.S1RemoteSystem.Nexant\r\n                        ? $locationEl.find(\".contact-name-nexant\")\r\n                        : $locationEl.find(\".contact-name-as400\"),\r\n                  });\r\n                } else {\r\n                  orgData.ContactName = $contactName;\r\n                }\r\n                break;\r\n\r\n              case cw.appEnum.S1RemoteSystem.Cargas:\r\n                for (const element of orgData.GetCustomerPhoneNumberList) {\r\n                  const phoneList = element;\r\n                  const phone = self.stripPhoneNumberFormatting(phoneList.PhoneNumberFormatted);\r\n                  const ext = self.stripPhoneNumberFormatting(phoneList.PhoneExtension);\r\n                  phoneList.PhoneNumber = phone + \" \" + ext;\r\n                  if (phoneList.PhoneNumber.length < 1) {\r\n                    errs.push({\r\n                      text: \"Phone numbers cannot be blank.\",\r\n                      $el: \"\",\r\n                    });\r\n                  }\r\n                }\r\n\r\n                break;\r\n            }\r\n\r\n            if (errs.length > 0) {\r\n              cw.loadingIndicator.stop();\r\n              cw.alert.Alert(errs, $errPnl);\r\n              return false;\r\n            } else {\r\n              return true;\r\n            }\r\n          };\r\n\r\n          const validateContactName = function ($contactName) {\r\n            const contactArr = $contactName.split(\"\");\r\n            const space = contactArr.includes(\" \");\r\n            return !(!space || contactArr.length === 0);\r\n          };\r\n\r\n          if (validateServiceLocation(orgData)) {\r\n            //do save\r\n            cw.webservices.getJson(\r\n              \"S1AccountManager/update-service-location-contact-details\",\r\n              orgData,\r\n              function (saveResp) {\r\n                cw.loadingIndicator.stop();\r\n                if (saveResp === true) {\r\n                  cw.modal.Alert({\r\n                    title: \"Success\",\r\n                    text: '<i class=\"fa fa-check-circle fa-2x\" style=\"color: #66bc29\" aria-hidden=\"true\"></i> Location has been successfully updated.',\r\n                  });\r\n                  self.loadDashboard(self.selectedS1AccountId);\r\n                  dialogRef.close();\r\n                } else {\r\n                  cw.modal.Alert({\r\n                    title: \"Failed Save\",\r\n                    text: \"There was an error trying to save your changes.\",\r\n                  });\r\n                }\r\n              }\r\n            );\r\n          }\r\n        },\r\n\r\n        stripPhoneNumberFormatting: function (phone) {\r\n          const pCheck = /[^0-9x]+/;\r\n\r\n          const returnInt = phone.replace(pCheck, \"\");\r\n\r\n          if (parseInt(returnInt) > 0) {\r\n            return returnInt;\r\n          }\r\n        },\r\n        formatPhoneNumberForDisplay: function (phone) {\r\n          const self = cw.pages.dashboard;\r\n          let phoneFormatted = phone;\r\n          const phoneStripped = self.stripPhoneNumberFormatting(phone);\r\n\r\n          if (phoneStripped && phoneStripped.length > 0) {\r\n            if (phoneStripped.length === 10) {\r\n              //add - after 3rd and  value - if it looks like 7177717777\r\n              phoneFormatted = phoneStripped.replace(/(\\d{3})(\\d{3})(\\d{4})/, \"$1-$2-$3\");\r\n            }\r\n            return phoneFormatted;\r\n          }\r\n          return phone;\r\n        },\r\n        viewUsageHistory: function (productCode, deliveryPointMap, equipmentId) {\r\n          const self = this;\r\n          cw.loadingIndicator.start();\r\n          let req = {};\r\n          $.extend(req, deliveryPointMap, { ProductCode: productCode, EquipmentId: equipmentId });\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-usage-history/\" + self.selectedS1AccountId,\r\n            req,\r\n            function (usageResp) {\r\n              if (usageResp?.UsageHistory && usageResp.UsageHistory.length > 0) {\r\n                cw.modal.Open({\r\n                  data: {\r\n                    usageData: usageResp,\r\n                    productCode: productCode,\r\n                    equipmentId: equipmentId,\r\n                    deliveryPointMap: deliveryPointMap,\r\n                  },\r\n                  title: \"Usage History\",\r\n                  size: BootstrapDialog.SIZE_WIDE,\r\n                  modalBody: $('<div class=\"usage-target\" style=\"width:100%;height:400px;\"></div>'),\r\n                  buttons: [\r\n                    {\r\n                      label: '<i class=\"fa fa-check\"></i> Ok',\r\n                      cssClass: \"mb10 btn-white ok-button btn-xs-block\",\r\n                      action: function (dialogRef) {\r\n                        dialogRef.close();\r\n                      },\r\n                    },\r\n                  ],\r\n                  onShownCallback: function (mr) {\r\n                    const $usageTarget = mr.$modalBody.find(\".usage-target\");\r\n                    const ngEl = [cw.appEnum.ProductCode.Electricity, cw.appEnum.ProductCode.NaturalGas];\r\n                    const usage = mr.getData(\"usageData\");\r\n\r\n                    if (usage.WasEstimated || usage.HasForcastedFutureData) {\r\n                      let msg = \"\";\r\n                      if (usage.WasEstimated) {\r\n                        msg =\r\n                          \"* Usage is estimated \" +\r\n                          (usage.HasForcastedFutureData\r\n                            ? \" and contains future forecasted usage based on weather\"\r\n                            : \"\");\r\n                      } else if (usage.HasForcastedFutureData) {\r\n                        msg = \"* Usage contains future forecasted usage based on weather\";\r\n                      }\r\n\r\n                      mr.$modalFooter\r\n                        .find(\".bootstrap-dialog-footer-buttons\")\r\n                        .append(\r\n                          '<div class=\"pull-left ' +\r\n                            (window.innerWidth <= 768 ? \"pt2\" : \"pt10\") +\r\n                            ' fs-xs-11\">' +\r\n                            msg +\r\n                            \"</div>\"\r\n                        );\r\n                    }\r\n\r\n                    self.drawUsageGraph(\r\n                      $usageTarget,\r\n                      usage.UsageHistory,\r\n                      ngEl.includes(mr.getData(\"productCode\")) ? \"monthly\" : \"daily\"\r\n                    );\r\n\r\n                    cw.loadingIndicator.stop();\r\n                  },\r\n                });\r\n              } else {\r\n                cw.loadingIndicator.stop();\r\n                cw.modal.Alert({ title: \"No Usage\", text: \"No usage on file to display.\" });\r\n              }\r\n            }\r\n          );\r\n        },\r\n        drawUsageGraph: function ($targetEl, usageData, timeSeries) {\r\n          const graphData = [];\r\n          let seriesData = [];\r\n          let uom;\r\n\r\n          if (usageData && usageData.length > 0) {\r\n            seriesData = usageData.map(function (x, idx) {\r\n              let val;\r\n              if (timeSeries === \"monthly\") {\r\n                val = moment(x.Date).format(\"MMM YYYY\");\r\n              } else if (timeSeries === \"daily\") {\r\n                val = parseInt(moment(x.Date).format(\"x\"));\r\n              }\r\n\r\n              return [val, x.Value];\r\n            });\r\n            uom = cw.utility.UOMToText(usageData[0].UnitOfMeasure);\r\n          }\r\n\r\n          let barwidth;\r\n          let xMode;\r\n          switch (timeSeries) {\r\n            case \"daily\":\r\n              barwidth = 86400000;\r\n              xMode = \"time\";\r\n              break;\r\n            case \"monthly\":\r\n            default:\r\n              barwidth = 0.6;\r\n              xMode = \"categories\";\r\n              break;\r\n          }\r\n\r\n          const s = {\r\n            label: uom,\r\n            data: seriesData,\r\n            bars: {\r\n              show: true,\r\n              barWidth: barwidth,\r\n              fill: true,\r\n              align: \"center\",\r\n            },\r\n          };\r\n\r\n          graphData.push(s);\r\n\r\n          if (graphData.length > 0) {\r\n            let xAxis = {};\r\n            let toolTipFunc;\r\n            if (xMode === \"time\") {\r\n              xAxis = {\r\n                mode: xMode,\r\n                timeformat: \"%m/%d/%y\",\r\n              };\r\n\r\n              toolTipFunc = function (label, xval, yval, flotItem) {\r\n                return (\r\n                  $.plot.formatDate(new Date(xval), \"%m/%d/%Y\") +\r\n                  \" | \" +\r\n                  (yval % 1 !== 0 ? yval.toFixed(2) : yval) +\r\n                  \" \" +\r\n                  label.replace(\"Number of\", \"\")\r\n                );\r\n              };\r\n            } else {\r\n              xAxis = {\r\n                mode: xMode,\r\n              };\r\n\r\n              toolTipFunc = function (label, xval, yval, flotItem) {\r\n                return (yval % 1 !== 0 ? yval.toFixed(2) : yval) + \" \" + label;\r\n              };\r\n            }\r\n\r\n            $.plot($targetEl, graphData, {\r\n              grid: {\r\n                color: \"#999999\",\r\n                hoverable: true,\r\n                clickable: true,\r\n                tickColor: \"#D4D4D4\",\r\n                borderWidth: 0,\r\n              },\r\n              colors: cw.constants.colors,\r\n              hoverable: true,\r\n              xaxis: xAxis,\r\n              tooltip: {\r\n                show: true,\r\n                cssClass: \"usage-graph-tooltip\",\r\n                content: toolTipFunc,\r\n              },\r\n              legend: {\r\n                show: true,\r\n                position: \"nw\",\r\n                labelFormatter: function (label, series) {\r\n                  return \"&nbsp;\" + label;\r\n                },\r\n              },\r\n            });\r\n\r\n            if (timeSeries === \"monthly\") {\r\n              $targetEl.find(\".flot-tick-label\").each(function (idx) {\r\n                if (idx % 4 !== 0) {\r\n                  $(this).addClass(\"hidden\");\r\n                }\r\n              });\r\n            }\r\n          }\r\n        },\r\n        getExistingServiceRequest: function (s1AccountId, RemoteSystemMap) {\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/existing-service-request-check\",\r\n            {\r\n              s1AccountId: s1AccountId,\r\n              RemoteSystemMap: RemoteSystemMap.RemoteSystemId,\r\n            },\r\n            function (rtnData) {\r\n              if (rtnData) {\r\n                return rtnData;\r\n              }\r\n            }\r\n          );\r\n        },\r\n        showPendingServiceRequest: function (documentId, s1TicketId) {\r\n          const self = this;\r\n          const elemId = \"s1-hvac-appt-summary-wrapper\";\r\n          let $div = document.getElementById(elemId);\r\n          if ($div) {\r\n            $div.replaceChildren();\r\n          } else {\r\n            $div = document.createElement(\"div\");\r\n            $div.id = elemId;\r\n            document.body.appendChild($div);\r\n          }\r\n\r\n          import(\"@components/products/service/hvacScheduledAppointmentSummaryModal.vue\").then(\r\n            (hvacScheduledApptSummaryModalComp) => {\r\n              const app = createNonRoutedApp(hvacScheduledApptSummaryModalComp.default, {\r\n                s1AcctId: self.selectedS1AccountId,\r\n                serviceTicketId: s1TicketId,\r\n                workOrderDocumentId: documentId,\r\n                onHvacAppointmentSummaryClosed() {\r\n                  app.unmount();\r\n                  $div?.remove();\r\n                },\r\n              });\r\n              app.mount(`#${elemId}`);\r\n            }\r\n          );\r\n        },\r\n        getBreadcrumbMarkup: function (links) {\r\n          let rtn = '<ol class=\"breadcrumb\">';\r\n          links.forEach(function (x) {\r\n            const isActive = typeof x.isActive !== \"undefined\" && x.isActive;\r\n            if (isActive) {\r\n              rtn += '<li class=\"active\">' + x.Title + \"</li>\";\r\n            } else {\r\n              rtn += '<li><a href=\"' + x.url + '\">' + x.Title + \"</a></li>\";\r\n            }\r\n          });\r\n\r\n          rtn += \"</ol>\";\r\n          return rtn;\r\n        },\r\n        viewPendingDelivery: function (deliveryPointMap) {\r\n          const self = this;\r\n\r\n          cw.loadingIndicator.start();\r\n          cw.webservices.getJson(\r\n            \"S1AccountManager/get-pending-deliveries-by-delivery-point\",\r\n            {\r\n              DeliveryPointMap: [deliveryPointMap],\r\n              S1AccountId: self.selectedS1AccountId,\r\n              PendingDeliveryHash: null,\r\n              DeliveryLink: null,\r\n            },\r\n            function (PendingDeliveryItemResp) {\r\n              cw.templating.GetRenderedTemplateHTML(\r\n                \"PendingDeliveryDetail.html\",\r\n                cw.appEnum.TemplateType.CwWidget,\r\n                PendingDeliveryItemResp,\r\n                function (renderedTmpl) {\r\n                  cw.modal.Open({\r\n                    data: { DeliveryData: PendingDeliveryItemResp },\r\n                    title: \"Pending Delivery Details\",\r\n                    modalBody: $(renderedTmpl),\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                        action: function (dialogRef) {\r\n                          dialogRef.close();\r\n                        },\r\n                      },\r\n                    ],\r\n                    onShownCallback: function () {\r\n                      cw.loadingIndicator.stop();\r\n                    },\r\n                  });\r\n                }\r\n              );\r\n            }\r\n          );\r\n        },\r\n        updateLocationFilter: function (locationList) {\r\n          if (locationList !== null) {\r\n            $(\".panel-group\").hide();\r\n            $.each(locationList, function () {\r\n              $(\"#\" + this + \"-panel\").show();\r\n              $(\"#\" + this + \"-panel\")\r\n                .find(\".panel-collapse\")\r\n                .collapse(\"show\");\r\n            });\r\n          } else {\r\n            $(\".panel-group\").show();\r\n          }\r\n        },\r\n        getNotificationWidget: function (s1AccountId) {\r\n          const self = this;\r\n          if (self.notificationWidget) {\r\n            self.notificationWidget.unmount();\r\n          }\r\n\r\n          self.notificationWidget = createNonRoutedApp(notificationWidget, {\r\n            s1AcctId: s1AccountId,\r\n            userId: cw.appStartArgs.CurrentUserObj.UserId,\r\n          });\r\n\r\n          self.notificationWidget.mount(\"#s1-notification-widget\");\r\n        },\r\n        loadSpecialOffers: function () {\r\n          if (!document.getElementById(\"special-offers-wrapper\")) {\r\n            return;\r\n          }\r\n          const self = this;\r\n          const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n          import(\"@components/customer/specialOfferListing.vue\").then((specialOffersComp) => {\r\n            const specialOffersApp = createNonRoutedApp(specialOffersComp.default, {\r\n              brandTypeId: self.args.brandObj.BrandTypeId,\r\n              s1AcctId: self.selectedS1AccountId,\r\n              customerTypeIds: custTypes,\r\n              minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n              onSpecialOfferAddedToAccount() {\r\n                self.loadDashboard(self.selectedS1AccountId);\r\n              },\r\n            });\r\n            specialOffersApp.mount(`#special-offers-wrapper`);\r\n          });\r\n        },\r\n        loadDashboardQuickActionButtons: function () {\r\n          const self = this;\r\n          if (!document.getElementById(\"quick-actions\")) {\r\n            return;\r\n          }\r\n          const custTypes = $(\".s1-customer-type\").data(\"customerTypeIds\");\r\n          const delLocIds = [];\r\n          $(\"a.request-delivery\").each(function () {\r\n            const $this = $(this);\r\n            const $parent = $this.closest(\".product-wrapper\");\r\n            const delMap = $this.data(\"delivery-point-map\");\r\n            if ((delMap?.RemoteSystemDeliveryPointId ?? 0) > 0) {\r\n              delLocIds.push({\r\n                remoteSystemDeliveryPointId: delMap.RemoteSystemDeliveryPointId,\r\n                icon: $parent\r\n                  .find(\".product-icon\")\r\n                  .attr(\"class\")\r\n                  .split(\" \")\r\n                  .filter((f) => f.startsWith(\"icon-\"))\r\n                  .join(\" \"),\r\n                text: $parent.find(\".product-label\").html(),\r\n              });\r\n            }\r\n          });\r\n          import(\"@components/products/quickActionButtons.vue\").then((quickActionBtnsComp) => {\r\n            const quickActionsApp = createNonRoutedApp(quickActionBtnsComp.default, {\r\n              brandTypeId: self.args.brandObj.BrandTypeId,\r\n              s1AcctId: self.selectedS1AccountId,\r\n              customerTypeIds: custTypes,\r\n              deliveryProductLocationIds: delLocIds,\r\n              minimumGallonDelivery: self.args.minimumGallonDelivery,\r\n            });\r\n            quickActionsApp.mount(`#quick-actions`);\r\n          });\r\n        },\r\n        launchPaymentProfile: function () {\r\n          const self = cw.pages.dashboard;\r\n          if (self.autopayConfigComponenent) {\r\n            const autoPayId = \"autopay-config-modal-root\";\r\n            let $autopayDiv = document.getElementById(autoPayId);\r\n            if (self.autopayConfigApp) {\r\n              self.autopayConfigApp.unmount();\r\n            }\r\n            if ($autopayDiv) {\r\n              $autopayDiv.replaceChildren();\r\n            } else {\r\n              $autopayDiv = document.createElement(\"div\");\r\n              $autopayDiv.id = autoPayId;\r\n              document.body.appendChild($autopayDiv);\r\n            }\r\n            self.autopayConfigApp = createNonRoutedApp(self.autopayConfigComponenent, {\r\n              s1AccountId: self.selectedS1AccountId,\r\n              brandTypeId: self.args.brandObj.BrandTypeId,\r\n              onAutoPayConfigured(rtnObj) {\r\n                self.setAutoPaymentStatus(rtnObj.AccountBalances);\r\n                self.autopayConfigApp.unmount();\r\n              },\r\n            });\r\n            self.autopayConfigApp.mount(`#${autoPayId}`);\r\n          } else {\r\n            setTimeout(function () {\r\n              self.launchPaymentProfile();\r\n            }, 250);\r\n          }\r\n        },\r\n      },\r\n    },\r\n  });\r\n})((window.cw = window.cw || {}), jQuery);\r\n","import * as dt from \"datatables.net-bs\";\r\nimport * as dtResponsive from \"datatables.net-responsive-bs\";\r\nimport * as dtBtnBs from \"datatables.net-buttons-bs\";\r\nimport * as dtBtnHtml5 from \"datatables.net-buttons/js/buttons.html5\";\r\nimport * as dtBtnHtmlPrnt from \"datatables.net-buttons/js/buttons.print\";\r\n\r\n//some overrides to customize datatables\r\n$.fn.dataTable.Buttons.defaults.dom.button.className = \"btn btn-sm btn-white\";\r\n$.fn.dataTable.ext.buttons.copyHtml5.text = function () {\r\n  return '<i class=\"fa fa-clipboard\" title=\"Copy\"></i>';\r\n};\r\n$.fn.dataTable.ext.buttons.csvHtml5.text = function () {\r\n  return '<i class=\"fa fa-regular fa-file-excel\" title=\"Export\"></i>';\r\n};\r\n$.fn.dataTable.ext.buttons.print.text = function () {\r\n  return '<i class=\"fa fa-print\" title=\"Print\"></i>';\r\n};\r\n\r\n(function (cw, $, undefined) {\r\n  cw.dtTools = {\r\n    /**\r\n     * Creates html table markup\r\n     *\r\n     * @param {[string] | [any]} columns Table columns, can be a datatables.net.columns array\r\n     *\r\n     * @return {string}\r\n     */\r\n    getTableMarkup: function (columns, tableClasses) {\r\n      return cw.utility.getTableMarkup(columns, tableClasses);\r\n    },\r\n    /**\r\n     * Handles sorting a date column and display\r\n     *\r\n     * @return {any} expected by datatables.net column.data\r\n     */\r\n    tableSortByDate: function (date, sortType, displayFormat) {\r\n      return cw.utility.tableSortByDate(date, sortType, displayFormat);\r\n    },\r\n    /**\r\n     * Update's referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n     *\r\n     * @return {void}\r\n     */\r\n    addUpdateDataTableListing: function (dataTable, newObject, matchingColumnName, redrawTable) {\r\n      return cw.utility.addUpdateDataTableListing(dataTable, newObject, matchingColumnName, redrawTable);\r\n    },\r\n    /**\r\n     * Delete referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n     *\r\n     * @return {void}\r\n     */\r\n    deleteDataTableListing: function (dataTable, matchingKeyValue, matchingColumnName, redrawTable) {\r\n      return cw.utility.deleteDataTableListing(dataTable, matchingKeyValue, matchingColumnName, redrawTable);\r\n    },\r\n    /**\r\n     * Get's referenced datatable's row based on matchingColumnName(assuming a flat object as rowData)\r\n     *\r\n     * @return {void}\r\n     */\r\n    getDataTableRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n      return cw.utility.getDataTableRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n    },\r\n    /**\r\n     * Get all rows from referenced datatable\r\n     *\r\n     * @return {void}\r\n     */\r\n    getDataTableAllRowData: function (dataTable) {\r\n      return cw.utility.getDataTableAllRowData(dataTable);\r\n    },\r\n    /**\r\n     * Returns the next row after the one passed in (based on the current sort of the table)\r\n     *\r\n     * @return {any}\r\n     */\r\n    getDataTableNextRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n      return cw.utility.getDataTableNextRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n    },\r\n    /**\r\n     * Returns the previous row after the one passed in (based on the current sort of the table)\r\n     *\r\n     * @return {any}\r\n     */\r\n    getDataTablePreviousRowData: function (dataTable, matchingKeyValue, matchingColumnName) {\r\n      return cw.utility.getDataTablePreviousRowData(dataTable, matchingKeyValue, matchingColumnName);\r\n    },\r\n  };\r\n})((window.cw = window.cw || {}), jQuery);\r\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","type storageType = 'localStorage'|'sessionStorage';\r\n\r\nconst getObject = <T>(key:string, storageType:storageType='localStorage'):T|null => {\r\n\tif(key.trim()){\r\n\t\tconst d = window[storageType].getItem(key.trim());\r\n\t\tif (d) {\r\n\t\t\treturn JSON.parse(d);\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nconst setObject = <T>(obj: T, key: string, storageType: storageType='localStorage'): boolean => {\r\n\tif(key.trim()){\r\n\t\ttry {\r\n\t\t\twindow[storageType].setItem(key.trim(), JSON.stringify(obj));\r\n\t\t\treturn true;\r\n\t\t}catch(e){\r\n\t\t\tconsole.error(`Failed to set local storage for key ${key.trim()} - ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nconst deleteObject = (key: string, storageType: storageType='localStorage'): boolean => {\r\n\tif(key.trim()){\r\n\t\ttry {\r\n\t\t\twindow[storageType].removeItem(key.trim());\r\n\t\t\treturn true;\r\n\t\t}catch(e){\r\n\t\t\tconsole.error(`Failed to delete local storage for key ${key.trim()} - ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nconst isStorageAvailable = (storageType:storageType='localStorage'):boolean =>{\r\n\tlet storage;\r\n\ttry {\r\n\t\tconst x = '__s1_storage_test__';\r\n\t\tstorage = window[storageType];\r\n\t\tstorage.setItem(x, x);\r\n\t\tstorage.removeItem(x);\r\n\t\treturn true;\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn e instanceof DOMException && (\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.code === 22 ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.code === 1014 ||\r\n\t\t\t\t// test name field too, because code might not be present\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.name === 'QuotaExceededError' ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\r\n\t\t\t) &&\r\n\t\t\t// acknowledge QuotaExceededError only if there's something already stored\r\n\t\t\tstorage.length !== 0;\r\n\t}\r\n}\r\n\r\nexport{\r\n\tisStorageAvailable,\r\n\tgetObject,\r\n\tsetObject,\r\n\tdeleteObject\r\n}","import IPage from \"../interfaces/page\";\r\n\r\nexport class Dashboard implements IPage {\r\n  constructor(self) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = self.loadDashboard(self.selectedS1AccountId);\r\n  }\r\n  Title: string = \"Account Overview\";\r\n  Url: \"/account\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class InvoiceHistory implements IPage {\r\n  Title: \"Invoice/Statement History\";\r\n  Url: string = \"/account/invoice-history\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages.invoiceHistory.init({\r\n        selectedS1AccountId: self.selectedS1AccountId,\r\n        $viewport: self.$viewport,\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class PaymentHistory implements IPage {\r\n  Title: \"Payment History\";\r\n  Url: string = \"/account/payment-history\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages.paymentHistory.init({\r\n        selectedS1AccountId: self.selectedS1AccountId,\r\n        $viewport: self.$viewport,\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\nimport { createNonRoutedApp } from \"@du/AppStartup\";\r\nimport { ref } from \"vue\";\r\n\r\nconst accountSettingsApp: any = ref(null);\r\nconst dataReference = ref<any>(null);\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class AccountSettings implements IPage {\r\n  Title: string = \"Account Settings\";\r\n  Url: string = \"/account/account-settings\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self: any) {\r\n    dataReference.value = self;\r\n    this.$viewPort = self.$viewport;\r\n\r\n    if (this.$viewPort) {\r\n      window.cw.templating.GetRenderedTemplateHTML(\r\n        \"CwAccountSettings.html\",\r\n        window.cw.appEnum.TemplateType.CwWidget,\r\n        {\r\n          breadCrumbs: window.cw.pages.dashboard.getBreadcrumbMarkup([\r\n            { Title: \"Account Summary\", url: \"/account\" },\r\n            { Title: \"Account Settings\", url: \"/account/account-settings\", isActive: true },\r\n          ]),\r\n        },\r\n        function (renderedTmpl) {\r\n          self.$viewport.empty().append(renderedTmpl);\r\n        }\r\n      );\r\n    }\r\n\r\n    this.PageRenderFunction = () => {\r\n      import(\"@du/components/customerPortal/portal/pages/accountSettingsListing.vue\").then(function (\r\n        accountSettingsListing\r\n      ) {\r\n        const rootElement = document.querySelector(\".billing-accounts-target\");\r\n\r\n        if (accountSettingsApp.value) {\r\n          accountSettingsApp.value.unmount();\r\n        }\r\n        accountSettingsApp.value = createNonRoutedApp(accountSettingsListing.default, {\r\n          s1AccountId: dataReference.value.selectedS1AccountId,\r\n          brandType: dataReference.value.args?.brandObj ?? dataReference.value.brandObj,\r\n        });\r\n        accountSettingsApp.value.mount(rootElement);\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class DocumentHistory implements IPage {\r\n  Title: string = \"Document History\";\r\n  Url: string = \"/account/document\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self: any) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages.documentHistory.init({\r\n        selectedS1AccountId: self.selectedS1AccountId,\r\n        $viewport: self.$viewport,\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\nexport class PendingDeliveries implements IPage {\r\n  constructor(self: any) {}\r\n\r\n  Title: string;\r\n  Url: string;\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class Rewards implements IPage {\r\n  Title: string = \"Rewards\";\r\n  Url: string = \"/account/rewards\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self: any) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages.rewards.init({\r\n        selectedS1AccountId: self.selectedS1AccountId,\r\n        $viewport: self.$viewport,\r\n        dashboardSummary: self.args?.RewardsPoints ?? self.RewardsPoints,\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n        CanRedeemNewRewards: self.args?.CanRedeemNewRewards ?? self.CanRedeemNewRewards,\r\n        CanViewRewards: self.args?.CanViewRewards ?? self.CanViewRewards,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class BudgetManager implements IPage {\r\n  Title: string = \"Budget Manager\";\r\n  Url: string = \"/account/manage-budget\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n\r\n  constructor(self: any) {\r\n    this.$viewPort = self.$viewport;\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages.budgetManager.init({\r\n        $viewport: self.$viewport,\r\n        budgetData: {\r\n          CustomerBudgetResponse: self.args?.CustomerBudgetResponse ?? self.CustomerBudgetResponse,\r\n          ServiceLocations: self.args?.ServiceLocations ?? self.ServiceLocations,\r\n          AccountBalances: self.args?.AccountBalances ?? self.AccountBalances,\r\n          S1AccountId: self.selectedS1AccountId,\r\n          successCallback: function () {\r\n            self.loadDashboard(self.selectedS1AccountId);\r\n          },\r\n        },\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import IPage from \"../interfaces/page\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    cw: any;\r\n  }\r\n}\r\n\r\nexport class DeliveryHistory implements IPage {\r\n  Title: string = \"Delivery History\";\r\n  Url: string = \"/account/delivery-history\";\r\n  $viewPort: any;\r\n  PageRenderFunction: () => void;\r\n  constructor(self: any) {\r\n    this.$viewPort = self.$viewPort;\r\n\r\n    this.PageRenderFunction = function () {\r\n      window.cw.pages?.deliveryHistory?.init({\r\n        selectedS1AccountId: self.selectedS1AccountId,\r\n        $viewport: self.$viewport,\r\n        brandObj: self.args?.brandObj ?? self.brandObj,\r\n      });\r\n    };\r\n  }\r\n}\r\n","import { ref } from \"vue\";\r\nimport IPage from \"../interfaces/page\";\r\nimport { Dashboard } from \"../pageInstances/Dashboard\";\r\nimport { InvoiceHistory } from \"../pageInstances/InvoiceHistory\";\r\nimport { PaymentHistory } from \"../pageInstances/PaymentHistory\";\r\nimport { AccountSettings } from \"../pageInstances/AccountSettings\";\r\nimport { DocumentHistory } from \"../pageInstances/DocumentHistory\";\r\nimport { PendingDeliveries } from \"../pageInstances/PendingDeliveries\";\r\nimport { Rewards } from \"../pageInstances/Rewards\";\r\nimport { BudgetManager } from \"../pageInstances/BudgetManager\";\r\nimport { DeliveryHistory } from \"../pageInstances/DeliveryHistory\";\r\n\r\nconst pageHistory = ref<IPage[]>([]);\r\n\r\ntype func = (self: any) => IPage;\r\n\r\n/**\r\n * New pages get added here -\r\n * 1. Add new Page Instance in ../pageInstances\r\n * 1. Add the url and the page instance to the map\r\n */\r\nconst pageMap = new Map<string, func>([\r\n  [\"/account\", (self) => new Dashboard(self)],\r\n  [\"/account/invoice-history\", (self) => new InvoiceHistory(self)],\r\n  [\"/account/payment-history\", (self) => new PaymentHistory(self)],\r\n  [\"/account/account-settings\", (self) => new AccountSettings(self)],\r\n  [\"/account/document\", (self) => new DocumentHistory(self)],\r\n  [\"/account/pending-deliveries\", (self) => new PendingDeliveries(self)],\r\n  [\"/account/rewards\", (self) => new Rewards(self)],\r\n  [\"/account/manage-budget\", (self) => new BudgetManager(self)],\r\n  [\"/account/delivery-history\", (self) => new DeliveryHistory(self)],\r\n]);\r\n\r\n/**\r\n * Main function used to switch between pages\r\n * @param url\r\n * @param self\r\n * @returns\r\n */\r\nexport const switchPage = (url: string, self: any): IPage => {\r\n  const page = setPage(url, self);\r\n  if (!page) {\r\n    console.error(\"Invalid url for Page\");\r\n    return {} as IPage;\r\n  }\r\n  return page;\r\n};\r\n\r\nconst setPage = (url: string, self: any): IPage | null => {\r\n  // Check if the url is valid and fetch the page instance\r\n  const createPage: func | undefined = pageMap.get(url);\r\n  if (!createPage) {\r\n    return null;\r\n  }\r\n\r\n  try {\r\n    //Create our page instance\r\n    const pageInstance = createPage(self);\r\n    if (!pageInstance) {\r\n      throw new Error(\"Page instance is null\");\r\n    }\r\n\r\n    //Add the page instance to the history\r\n    pageHistory.value.push(pageInstance);\r\n\r\n    //Render\r\n    if (pageInstance && pageInstance.PageRenderFunction) {\r\n      pageInstance.PageRenderFunction();\r\n    }\r\n\r\n    return pageInstance;\r\n  } catch (err) {\r\n    console.error(err);\r\n    return null;\r\n  }\r\n};\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"for\"]\nconst _hoisted_2 = [\"id\", \"checked\", \"readonly\", \"disabled\"]\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = {\n  key: 0,\n  class: \"pl5\"\n}\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed, ref, watch, StyleValue } from \"vue\";\r\nimport Icon from \"@compUtility/icon.vue\";\r\nimport { trueFalseString, boxBool } from \"@utility/boolUtils\";\r\nimport { genComponentId } from \"@components/componentHelpers\";\r\n\r\ninterface Props {\r\n  checked?: trueFalseString;\r\n  disabled?: trueFalseString;\r\n  readonly?: trueFalseString;\r\n  label?: string;\r\n  hover?: trueFalseString;\r\n  variant?: \"small\" | \"normal\";\r\n  inputClass?: string | string[];\r\n  alignLabel?: \"start\" | \"center\" | \"end\";\r\n  loading?: trueFalseString;\r\n  loadingText?: string;\r\n  labelClass?: string;\r\n  labelStyle?: StyleValue;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'checkbox',\n  props: {\n    checked: { type: [Boolean, String], default: false },\n    disabled: { type: [Boolean, String], default: false },\n    readonly: { type: [Boolean, String], default: false },\n    label: { default: \"&nbsp;\" },\n    hover: { type: [Boolean, String] },\n    variant: { default: \"normal\" },\n    inputClass: { default: \"\" },\n    alignLabel: { default: \"start\" },\n    loading: { type: [Boolean, String], default: false },\n    loadingText: {},\n    labelClass: { default: undefined },\n    labelStyle: { type: [Boolean, null, String, Object, Array], default: undefined }\n  },\n  emits: [\"checked\", \"unchecked\", \"updated\", \"input\"],\n  setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n\r\nconst componentId = genComponentId(\"cbx\");\r\nconst isChecked = ref<boolean>(boxBool(props.checked));\r\n\r\nconst lblClasses = computed<string[]>(() => {\r\n  const labels = [\"s1-cbx-label\"];\r\n  if (boxBool(props.disabled)) {\r\n    labels.push(\"s1-cbx-label-disabled\");\r\n  }\r\n  if ([\"&nbsp;\", \"\"].indexOf(props.label?.trim() ?? \"&nbsp;\") >= 0) {\r\n    labels.push(\"lbl-no-txt\");\r\n  }\r\n  if (props.labelClass) {\r\n    labels.push(props.labelClass);\r\n  }\r\n  return labels;\r\n});\r\n\r\nconst checkVal = function (newVal: Event) {\r\n  if (newVal != null && newVal.target && newVal.target instanceof HTMLInputElement) {\r\n    const target = newVal.target;\r\n    isChecked.value = boxBool(target.checked);\r\n  }\r\n};\r\n\r\nwatch(\r\n  () => props.checked,\r\n  (newVal) => {\r\n    isChecked.value = boxBool(newVal);\r\n  }\r\n);\r\n\r\nwatch(isChecked, (newVal) => {\r\n  if (newVal) {\r\n    emit(\"checked\");\r\n  } else {\r\n    emit(\"unchecked\");\r\n  }\r\n\r\n  emit(\"updated\", newVal);\r\n  emit(\"input\", newVal);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"div\", {\n    class: _normalizeClass(['s1-cbx', props.variant !== 'normal' ? props.variant : ''])\n  }, [\n    _createElementVNode(\"label\", {\n      class: _normalizeClass(lblClasses.value),\n      for: _unref(componentId),\n      style: _normalizeStyle(props.labelStyle)\n    }, [\n      _createElementVNode(\"input\", {\n        type: \"checkbox\",\n        id: _unref(componentId),\n        checked: isChecked.value,\n        readonly: _ctx.readonly,\n        disabled: _unref(boxBool)(props.disabled),\n        class: _normalizeClass(_ctx.inputClass),\n        onChange: checkVal\n      }, null, 42, _hoisted_2),\n      _renderSlot(_ctx.$slots, \"default\", {}, () => [\n        _createElementVNode(\"span\", {\n          class: _normalizeClass(`s1-cbx-lbl-${props.alignLabel}`),\n          innerHTML: _ctx.label\n        }, null, 10, _hoisted_3)\n      ])\n    ], 14, _hoisted_1),\n    (_ctx.loading)\n      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, [\n          _createVNode(Icon, {\n            animate: \"spin\",\n            icon: \"fa-spinner\"\n          }),\n          _cache[0] || (_cache[0] = _createTextVNode(\" \")),\n          _createElementVNode(\"small\", null, [\n            _createElementVNode(\"span\", { innerHTML: _ctx.loadingText }, null, 8, _hoisted_5)\n          ])\n        ]))\n      : _createCommentVNode(\"\", true)\n  ], 2))\n}\n}\n\n})","<template>\r\n  <div :class=\"['s1-cbx', props.variant !== 'normal' ? props.variant : '']\">\r\n    <label\r\n      :class=\"lblClasses\"\r\n      :for=\"componentId\"\r\n      :style=\"props.labelStyle\"\r\n    >\r\n      <input\r\n        type=\"checkbox\"\r\n        :id=\"componentId\"\r\n        :checked=\"isChecked\"\r\n        :readonly=\"readonly\"\r\n        :disabled=\"boxBool(props.disabled)\"\r\n        :class=\"inputClass\"\r\n        @change=\"checkVal\"\r\n      />\r\n      <slot\r\n        ><span\r\n          :class=\"`s1-cbx-lbl-${props.alignLabel}`\"\r\n          v-html=\"label\"\r\n      /></slot>\r\n    </label>\r\n    <span\r\n      v-if=\"loading\"\r\n      class=\"pl5\"\r\n      ><Icon\r\n        animate=\"spin\"\r\n        icon=\"fa-spinner\" />&nbsp;<small><span v-html=\"loadingText\"> </span></small\r\n    ></span>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref, watch, StyleValue } from \"vue\";\r\nimport Icon from \"@compUtility/icon.vue\";\r\nimport { trueFalseString, boxBool } from \"@utility/boolUtils\";\r\nimport { genComponentId } from \"@components/componentHelpers\";\r\n\r\ninterface Props {\r\n  checked?: trueFalseString;\r\n  disabled?: trueFalseString;\r\n  readonly?: trueFalseString;\r\n  label?: string;\r\n  hover?: trueFalseString;\r\n  variant?: \"small\" | \"normal\";\r\n  inputClass?: string | string[];\r\n  alignLabel?: \"start\" | \"center\" | \"end\";\r\n  loading?: trueFalseString;\r\n  loadingText?: string;\r\n  labelClass?: string;\r\n  labelStyle?: StyleValue;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n  checked: false,\r\n  disabled: false,\r\n  readonly: false,\r\n  label: \"&nbsp;\",\r\n  variant: \"normal\",\r\n  inputClass: \"\",\r\n  alignLabel: \"start\",\r\n  loading: false,\r\n  labelClass: undefined,\r\n  labelStyle: undefined,\r\n});\r\n\r\nconst emit = defineEmits<{\r\n  (e: \"checked\"): void;\r\n  (e: \"unchecked\"): void;\r\n  (e: \"updated\", val: boolean): void;\r\n  (e: \"input\", val: boolean): void;\r\n}>();\r\n\r\nconst componentId = genComponentId(\"cbx\");\r\nconst isChecked = ref<boolean>(boxBool(props.checked));\r\n\r\nconst lblClasses = computed<string[]>(() => {\r\n  const labels = [\"s1-cbx-label\"];\r\n  if (boxBool(props.disabled)) {\r\n    labels.push(\"s1-cbx-label-disabled\");\r\n  }\r\n  if ([\"&nbsp;\", \"\"].indexOf(props.label?.trim() ?? \"&nbsp;\") >= 0) {\r\n    labels.push(\"lbl-no-txt\");\r\n  }\r\n  if (props.labelClass) {\r\n    labels.push(props.labelClass);\r\n  }\r\n  return labels;\r\n});\r\n\r\nconst checkVal = function (newVal: Event) {\r\n  if (newVal != null && newVal.target && newVal.target instanceof HTMLInputElement) {\r\n    const target = newVal.target;\r\n    isChecked.value = boxBool(target.checked);\r\n  }\r\n};\r\n\r\nwatch(\r\n  () => props.checked,\r\n  (newVal) => {\r\n    isChecked.value = boxBool(newVal);\r\n  }\r\n);\r\n\r\nwatch(isChecked, (newVal) => {\r\n  if (newVal) {\r\n    emit(\"checked\");\r\n  } else {\r\n    emit(\"unchecked\");\r\n  }\r\n\r\n  emit(\"updated\", newVal);\r\n  emit(\"input\", newVal);\r\n});\r\n</script>\r\n<style lang=\"less\" scoped>\r\n@import \"@css/constants.less\";\r\n.s1-cbx-label {\r\n  font-size: 2rem;\r\n  display: grid;\r\n  grid-template-columns: 1em auto;\r\n  gap: 0.5em;\r\n}\r\n\r\n.lbl-no-txt {\r\n  gap: 0;\r\n  margin-bottom: 0;\r\n}\r\n\r\n.s1-cbx-label span {\r\n  font-size: 1.33rem;\r\n}\r\n\r\n.s1-cbx-label + .s1-cbx-label {\r\n  margin-top: 1em;\r\n}\r\n\r\n.s1-cbx-label-disabled {\r\n  color: var(--form-control-disabled);\r\n  cursor: not-allowed;\r\n}\r\n\r\n.s1-cbx input {\r\n  /* Remove most all native input styles */\r\n  appearance: none;\r\n  /* For iOS < 15 */\r\n  background-color: @white;\r\n  /* Not removed via appearance */\r\n  margin: 0;\r\n\r\n  font: inherit;\r\n  color: var(--form-control-border);\r\n  width: 1.15em;\r\n  height: 1.15em;\r\n  border: 0.075em solid var(--form-control-border);\r\n  border-radius: 0;\r\n  transform: translateY(-0.075em);\r\n  padding-right: 0 !important;\r\n  display: grid !important;\r\n  place-content: center;\r\n}\r\n\r\n.s1-cbx input::before {\r\n  content: \"\";\r\n  width: 0.65em;\r\n  height: 0.65em;\r\n  clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); //this looks like a checkmark\r\n  transform: scale(0);\r\n  transform-origin: bottom left;\r\n  transition: 120ms transform ease-in-out;\r\n  box-shadow: inset 1em 1em var(--form-control-color);\r\n  background-color: @white;\r\n}\r\n\r\n.s1-cbx input:checked {\r\n  background-color: var(--secondary-cta-color);\r\n}\r\n\r\n.s1-cbx-label-disabled input:checked {\r\n  background-color: var(--form-control-disabled);\r\n  color: @white;\r\n}\r\n\r\n.s1-cbx-label-disabled input::before {\r\n  box-shadow: inset 1em 1em @white;\r\n}\r\n\r\n.s1-cbx input:checked::before {\r\n  transform: scale(1);\r\n}\r\n\r\n.s1-cbx input:focus {\r\n  outline: ~\"max(2px, 0.15em) solid currentColor\";\r\n  outline-offset: ~\"max(2px, 0.15em)\";\r\n}\r\n\r\n.s1-cbx input:disabled {\r\n  --form-control-color: var(--form-control-disabled);\r\n  color: var(--form-control-disabled);\r\n  cursor: not-allowed;\r\n}\r\n\r\n/* Variant overrides */\r\n.s1-cbx.small .s1-cbx-label {\r\n  font-size: 1.75rem;\r\n  gap: 0.25em;\r\n  grid-template-columns: 0.75em auto;\r\n}\r\n\r\n.s1-cbx.small input {\r\n  width: 0.75em !important;\r\n  height: 0.75em !important;\r\n}\r\n\r\n.s1-cbx.small input::before {\r\n  width: 0.45em;\r\n  height: 0.45em;\r\n}\r\n\r\n.s1-cbx.small .s1-cbx-label span {\r\n  font-size: 0.9rem;\r\n  line-height: 1.2em;\r\n}\r\n/* End Variants */\r\n\r\n.s1-cbx-lbl-start {\r\n  align-self: flex-start;\r\n}\r\n.s1-cbx-lbl-center {\r\n  align-self: center;\r\n}\r\n.s1-cbx-lbl-end {\r\n  align-self: flex-end;\r\n}\r\n</style>\r\n","import script from \"./checkbox.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./checkbox.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=61d0d658&lang=less&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-61d0d658\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"pdf-viewer-root\" }\nconst _hoisted_2 = {\n  key: 0,\n  class: \"flex full-width align-items-center page-tools-wrapper\",\n  style: {\"justify-content\":\"space-between\"}\n}\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = {\n  key: 0,\n  class: \"ml10\"\n}\nconst _hoisted_5 = {\n  key: 1,\n  class: \"ml10\"\n}\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = { class: \"flex align-items-center\" }\nconst _hoisted_8 = { class: \"btn-group ml10\" }\nconst _hoisted_9 = { class: \"ml10\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { class: \"pr10 pl10\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"row mt10\" }\nconst _hoisted_14 = {\n  key: 0,\n  class: \"col-xs-12 text-center\"\n}\nconst _hoisted_15 = [\"width\", \"height\"]\nconst _hoisted_16 = {\n  key: 1,\n  class: \"col-xs-12\"\n}\n\nimport { ref, watch, onMounted } from \"vue\";\r\nimport * as pdfJsLib from \"pdfjs-dist\";\r\nimport icon from \"./icon.vue\";\r\nimport alert from \"./alert.vue\";\r\nimport checkbox from \"../form/checkbox.vue\";\r\nimport { createGuid } from \"../../utility/utility\";\r\nimport { PDFDocumentProxy } from \"pdfjs-dist/types/display/api\";\r\n\r\ninterface Props {\r\n  pdfUrl: string;\r\n  allowDownload?: boolean;\r\n  startPageNumber?: number;\r\n  showSelectCheckbox?: boolean;\r\n  selected?: boolean;\r\n  selectCheckboxText?: string;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'pdfViewer',\n  props: {\n    pdfUrl: { default: \"\" },\n    allowDownload: { type: Boolean, default: false },\n    startPageNumber: { default: 1 },\n    showSelectCheckbox: { type: Boolean, default: false },\n    selected: { type: Boolean, default: false },\n    selectCheckboxText: { default: \"\" }\n  },\n  emits: [\r\n  \"pdf-loaded\",\r\n  \"pdf-load-failed\",\r\n  \"pdf-doc-downloaded\",\r\n  \"navigated-to-pagenumber\",\r\n  \"pdf-selected\",\r\n  \"pdf-unselected\",\r\n  \"pdf-selection-change\",\r\n  \"mounted\",\r\n],\n  setup(__props: any, { emit: __emit }) {\n\r\npdfJsLib.GlobalWorkerOptions.workerSrc = new URL(\r\n  \"pdfjs-dist/build/pdf.worker.js\",\r\n  import.meta.url\r\n).toString();\r\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n\r\nconst componentId = `du-pdf-viewer-${createGuid()}`;\r\nconst downloadUrl = (): string => {\r\n  if (props.pdfUrl !== null && props.pdfUrl.trim() !== \"\") {\r\n    const forceDownload = props.pdfUrl.indexOf(\"?\") > -1 ? \"&fdl=1\" : \"?fdl=1\";\r\n    return `${props.pdfUrl}${forceDownload}`;\r\n  }\r\n\r\n  return \"\";\r\n};\r\n\r\nconst totalPages = ref<number | null>(null);\r\nconst currentPage = ref<number>(props.startPageNumber);\r\nconst canvasHeight = ref<number | null>(792);\r\nconst canvasWidth = ref<number | null>(612);\r\nlet pdfDoc: PDFDocumentProxy | null = null;\r\nconst loadFailed = ref(false);\r\nconst pageRendering = ref<Boolean>(false);\r\nconst scale = ref<number>(1.0);\r\nconst pageNumPending = ref<number | null>(null);\r\n\r\nconst loadPdf = () => {\r\n  const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n  if (canvasEl) {\r\n    if (canvasEl.height && canvasEl.width) {\r\n      canvasHeight.value = canvasEl.height;\r\n      canvasWidth.value = canvasEl.width;\r\n    }\r\n\r\n    const loadingTask = pdfJsLib.getDocument(props.pdfUrl);\r\n    loadingTask.promise\r\n      .then((pdf) => {\r\n        totalPages.value = pdf.numPages;\r\n        pdfDoc = pdf;\r\n        emit(\"pdf-loaded\");\r\n        renderPage(currentPage.value);\r\n      })\r\n      .catch(() => {\r\n        loadFailed.value = true;\r\n        emit(\"pdf-load-failed\");\r\n      });\r\n  }\r\n};\r\n\r\nonMounted(() => {\r\n  loadPdf();\r\n  emit(\"mounted\");\r\n});\r\n\r\nconst pdfSelectionChange = function (selected: boolean): void {\r\n  emit(\"pdf-selection-change\", selected);\r\n};\r\n\r\nconst renderPage = (pageNum: number): void => {\r\n  pageRendering.value = true;\r\n  pageNumPending.value = pageNum;\r\n  if (pdfDoc && pageNum > 0 && pageNum <= (totalPages.value ?? 1)) {\r\n    pdfDoc.getPage(pageNum).then((page) => {\r\n      var viewport = page.getViewport({ scale: scale.value });\r\n      const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n      if (canvasEl !== null) {\r\n        const canvasCtx = canvasEl.getContext(\"2d\");\r\n        if (canvasCtx != null) {\r\n          canvasEl.height = viewport.height;\r\n          canvasEl.width = viewport.width;\r\n          currentPage.value = pageNum;\r\n\r\n          // Render PDF page into canvas context\r\n          var renderTask = page.render({\r\n            canvasContext: canvasCtx,\r\n            viewport: viewport,\r\n          });\r\n\r\n          // Wait for rendering to finish\r\n          renderTask.promise.then(() => {\r\n            pageRendering.value = false;\r\n            if (pageNumPending.value !== null && pageNumPending.value !== pageNum) {\r\n              renderPage(pageNumPending.value);\r\n              pageNumPending.value = null;\r\n            } else {\r\n              emit(\"navigated-to-pagenumber\", pageNum);\r\n            }\r\n          });\r\n        }\r\n      }\r\n    });\r\n  }\r\n};\r\n\r\nconst movePage = (currentPageOffset: number): void => {\r\n  renderPage(currentPage.value + currentPageOffset);\r\n};\r\n\r\nconst pageDisplay = (): string => {\r\n  return totalPages.value != null ? `${currentPage.value} of ${totalPages.value}` : \"\";\r\n};\r\n\r\nconst showPageTools = (): boolean => {\r\n  return totalPages.value !== null && totalPages.value > 0;\r\n};\r\n\r\nconst zoom = (zoomPercent: number): void => {\r\n  if (zoomPercent !== 0) {\r\n    scale.value = scale.value + zoomPercent;\r\n    renderPage(currentPage.value);\r\n  }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    (showPageTools())\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n          _createElementVNode(\"div\", _hoisted_3, [\n            (_ctx.showSelectCheckbox)\n              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n                  _createVNode(checkbox, {\n                    checked: _ctx.selected,\n                    label: _ctx.selectCheckboxText,\n                    onUpdated: pdfSelectionChange\n                  }, null, 8, [\"checked\", \"label\"])\n                ]))\n              : _createCommentVNode(\"\", true),\n            (_ctx.allowDownload && downloadUrl() !== '')\n              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n                  _createElementVNode(\"a\", {\n                    href: downloadUrl(),\n                    title: \"Download document\",\n                    onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('pdf-doc-downloaded'))),\n                    target: \"_blank\"\n                  }, [\n                    _createVNode(icon, { icon: \"fa-download\" }),\n                    _cache[5] || (_cache[5] = _createTextVNode(\"Download \"))\n                  ], 8, _hoisted_6)\n                ]))\n              : _createCommentVNode(\"\", true)\n          ]),\n          _createElementVNode(\"div\", _hoisted_7, [\n            _createElementVNode(\"div\", _hoisted_8, [\n              _createElementVNode(\"a\", {\n                href: \"#\",\n                class: \"btn btn-white btn-xs\",\n                onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (zoom(0.1)), [\"prevent\"]))\n              }, [\n                _createVNode(icon, { icon: \"fa-search-plus\" })\n              ]),\n              _createElementVNode(\"a\", {\n                href: \"#\",\n                class: \"btn btn-white btn-xs\",\n                onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (zoom(-0.1)), [\"prevent\"]))\n              }, [\n                _createVNode(icon, { icon: \"fa-search-minus\" })\n              ])\n            ]),\n            _createElementVNode(\"div\", _hoisted_9, [\n              _cache[6] || (_cache[6] = _createTextVNode(\" Page: \")),\n              _createElementVNode(\"a\", {\n                href: \"#\",\n                class: \"pdf-preview-prev\",\n                onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (movePage(-1)), [\"prevent\"])),\n                disabled: currentPage.value === 1 ? true : null\n              }, [\n                _createVNode(icon, { icon: \"fa-backward\" })\n              ], 8, _hoisted_10),\n              _createElementVNode(\"span\", _hoisted_11, _toDisplayString(pageDisplay()), 1),\n              _createElementVNode(\"a\", {\n                href: \"#\",\n                class: \"pdf-preview-next\",\n                onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (movePage(1)), [\"prevent\"])),\n                disabled: currentPage.value === totalPages.value ? true : null\n              }, [\n                _createVNode(icon, { icon: \"fa-forward\" })\n              ], 8, _hoisted_12)\n            ])\n          ])\n        ]))\n      : _createCommentVNode(\"\", true),\n    _createElementVNode(\"div\", _hoisted_13, [\n      (!loadFailed.value)\n        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n            _createElementVNode(\"canvas\", {\n              class: \"pdf-preview-canvas\",\n              id: componentId,\n              width: canvasWidth.value,\n              height: canvasHeight.value,\n              style: {\"background\":\"#fff\"}\n            }, null, 8, _hoisted_15)\n          ]))\n        : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n            _createVNode(alert, { message: \"Could not get document.\" })\n          ]))\n    ])\n  ]))\n}\n}\n\n})","import script from \"./pdfViewer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./pdfViewer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./pdfViewer.vue?vue&type=style&index=0&id=43db1d9e&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\r\n  <div class=\"pdf-viewer-root\">\r\n    <div\r\n      v-if=\"showPageTools()\"\r\n      class=\"flex full-width align-items-center page-tools-wrapper\"\r\n      style=\"justify-content: space-between\"\r\n    >\r\n      <div class=\"flex\">\r\n        <div\r\n          v-if=\"showSelectCheckbox\"\r\n          class=\"ml10\"\r\n        >\r\n          <checkbox\r\n            :checked=\"selected\"\r\n            :label=\"selectCheckboxText\"\r\n            @updated=\"pdfSelectionChange\"\r\n          />\r\n        </div>\r\n        <div\r\n          v-if=\"allowDownload && downloadUrl() !== ''\"\r\n          class=\"ml10\"\r\n        >\r\n          <a\r\n            :href=\"downloadUrl()\"\r\n            title=\"Download document\"\r\n            v-on:click=\"emit('pdf-doc-downloaded')\"\r\n            target=\"_blank\"\r\n          >\r\n            <icon icon=\"fa-download\" />Download\r\n          </a>\r\n        </div>\r\n      </div>\r\n      <div class=\"flex align-items-center\">\r\n        <div class=\"btn-group ml10\">\r\n          <a\r\n            href=\"#\"\r\n            class=\"btn btn-white btn-xs\"\r\n            v-on:click.prevent=\"zoom(0.1)\"\r\n          >\r\n            <icon icon=\"fa-search-plus\" />\r\n          </a>\r\n          <a\r\n            href=\"#\"\r\n            class=\"btn btn-white btn-xs\"\r\n            v-on:click.prevent=\"zoom(-0.1)\"\r\n          >\r\n            <icon icon=\"fa-search-minus\" />\r\n          </a>\r\n        </div>\r\n        <div class=\"ml10\">\r\n          Page:\r\n          <a\r\n            href=\"#\"\r\n            class=\"pdf-preview-prev\"\r\n            v-on:click.prevent=\"movePage(-1)\"\r\n            :disabled=\"currentPage === 1 ? true : null\"\r\n          >\r\n            <icon icon=\"fa-backward\" />\r\n          </a>\r\n          <span class=\"pr10 pl10\">{{ pageDisplay() }}</span>\r\n          <a\r\n            href=\"#\"\r\n            class=\"pdf-preview-next\"\r\n            v-on:click.prevent=\"movePage(1)\"\r\n            :disabled=\"currentPage === totalPages ? true : null\"\r\n          >\r\n            <icon icon=\"fa-forward\" />\r\n          </a>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row mt10\">\r\n      <div\r\n        v-if=\"!loadFailed\"\r\n        class=\"col-xs-12 text-center\"\r\n      >\r\n        <canvas\r\n          class=\"pdf-preview-canvas\"\r\n          :id=\"componentId\"\r\n          :width=\"canvasWidth\"\r\n          :height=\"canvasHeight\"\r\n          style=\"background: #fff\"\r\n        ></canvas>\r\n      </div>\r\n      <div\r\n        v-else\r\n        class=\"col-xs-12\"\r\n      >\r\n        <alert message=\"Could not get document.\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch, onMounted } from \"vue\";\r\nimport * as pdfJsLib from \"pdfjs-dist\";\r\nimport icon from \"./icon.vue\";\r\nimport alert from \"./alert.vue\";\r\nimport checkbox from \"../form/checkbox.vue\";\r\nimport { createGuid } from \"../../utility/utility\";\r\nimport { PDFDocumentProxy } from \"pdfjs-dist/types/display/api\";\r\n\r\npdfJsLib.GlobalWorkerOptions.workerSrc = new URL(\r\n  \"pdfjs-dist/build/pdf.worker.js\",\r\n  import.meta.url\r\n).toString();\r\n\r\ninterface Props {\r\n  pdfUrl: string;\r\n  allowDownload?: boolean;\r\n  startPageNumber?: number;\r\n  showSelectCheckbox?: boolean;\r\n  selected?: boolean;\r\n  selectCheckboxText?: string;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n  pdfUrl: \"\",\r\n  allowDownload: false,\r\n  startPageNumber: 1,\r\n  showSelectCheckbox: false,\r\n  selected: false,\r\n  selectCheckboxText: \"\",\r\n});\r\n\r\nconst emit = defineEmits([\r\n  \"pdf-loaded\",\r\n  \"pdf-load-failed\",\r\n  \"pdf-doc-downloaded\",\r\n  \"navigated-to-pagenumber\",\r\n  \"pdf-selected\",\r\n  \"pdf-unselected\",\r\n  \"pdf-selection-change\",\r\n  \"mounted\",\r\n]);\r\n\r\nconst componentId = `du-pdf-viewer-${createGuid()}`;\r\nconst downloadUrl = (): string => {\r\n  if (props.pdfUrl !== null && props.pdfUrl.trim() !== \"\") {\r\n    const forceDownload = props.pdfUrl.indexOf(\"?\") > -1 ? \"&fdl=1\" : \"?fdl=1\";\r\n    return `${props.pdfUrl}${forceDownload}`;\r\n  }\r\n\r\n  return \"\";\r\n};\r\n\r\nconst totalPages = ref<number | null>(null);\r\nconst currentPage = ref<number>(props.startPageNumber);\r\nconst canvasHeight = ref<number | null>(792);\r\nconst canvasWidth = ref<number | null>(612);\r\nlet pdfDoc: PDFDocumentProxy | null = null;\r\nconst loadFailed = ref(false);\r\nconst pageRendering = ref<Boolean>(false);\r\nconst scale = ref<number>(1.0);\r\nconst pageNumPending = ref<number | null>(null);\r\n\r\nconst loadPdf = () => {\r\n  const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n  if (canvasEl) {\r\n    if (canvasEl.height && canvasEl.width) {\r\n      canvasHeight.value = canvasEl.height;\r\n      canvasWidth.value = canvasEl.width;\r\n    }\r\n\r\n    const loadingTask = pdfJsLib.getDocument(props.pdfUrl);\r\n    loadingTask.promise\r\n      .then((pdf) => {\r\n        totalPages.value = pdf.numPages;\r\n        pdfDoc = pdf;\r\n        emit(\"pdf-loaded\");\r\n        renderPage(currentPage.value);\r\n      })\r\n      .catch(() => {\r\n        loadFailed.value = true;\r\n        emit(\"pdf-load-failed\");\r\n      });\r\n  }\r\n};\r\n\r\nonMounted(() => {\r\n  loadPdf();\r\n  emit(\"mounted\");\r\n});\r\n\r\nconst pdfSelectionChange = function (selected: boolean): void {\r\n  emit(\"pdf-selection-change\", selected);\r\n};\r\n\r\nconst renderPage = (pageNum: number): void => {\r\n  pageRendering.value = true;\r\n  pageNumPending.value = pageNum;\r\n  if (pdfDoc && pageNum > 0 && pageNum <= (totalPages.value ?? 1)) {\r\n    pdfDoc.getPage(pageNum).then((page) => {\r\n      var viewport = page.getViewport({ scale: scale.value });\r\n      const canvasEl = document.getElementById(componentId) as HTMLCanvasElement;\r\n      if (canvasEl !== null) {\r\n        const canvasCtx = canvasEl.getContext(\"2d\");\r\n        if (canvasCtx != null) {\r\n          canvasEl.height = viewport.height;\r\n          canvasEl.width = viewport.width;\r\n          currentPage.value = pageNum;\r\n\r\n          // Render PDF page into canvas context\r\n          var renderTask = page.render({\r\n            canvasContext: canvasCtx,\r\n            viewport: viewport,\r\n          });\r\n\r\n          // Wait for rendering to finish\r\n          renderTask.promise.then(() => {\r\n            pageRendering.value = false;\r\n            if (pageNumPending.value !== null && pageNumPending.value !== pageNum) {\r\n              renderPage(pageNumPending.value);\r\n              pageNumPending.value = null;\r\n            } else {\r\n              emit(\"navigated-to-pagenumber\", pageNum);\r\n            }\r\n          });\r\n        }\r\n      }\r\n    });\r\n  }\r\n};\r\n\r\nconst movePage = (currentPageOffset: number): void => {\r\n  renderPage(currentPage.value + currentPageOffset);\r\n};\r\n\r\nconst pageDisplay = (): string => {\r\n  return totalPages.value != null ? `${currentPage.value} of ${totalPages.value}` : \"\";\r\n};\r\n\r\nconst showPageTools = (): boolean => {\r\n  return totalPages.value !== null && totalPages.value > 0;\r\n};\r\n\r\nconst zoom = (zoomPercent: number): void => {\r\n  if (zoomPercent !== 0) {\r\n    scale.value = scale.value + zoomPercent;\r\n    renderPage(currentPage.value);\r\n  }\r\n};\r\n</script>\r\n<style lang=\"less\">\r\n@import \"@css/utilityClasses/boxUtils.less\";\r\n@import \"@css/utilityClasses/flexUtils.less\";\r\n</style>\r\n"],"names":["cw","$","window","jQuery","extend","pages","dashboard","args","selectedS1AccountId","phoneEditDataTable","phoneTypeList","locationData","$viewport","url","title","$wrapperEl","sigRconn","notificationWidget","autopayConfigComponenent","init","self","this","bindApplicationEvents","setAutoPaymentStatus","AccountBalances","$menuItemReward","closest","length","CanViewRewards","removeClass","addClass","$menuItemAddProd","WholesaleCustomerPortal","$reqDeliveryBtn","bindInteractions","bindRewardsAndCarouselItems","RewardsPoints","setTimeout","then","x","default","switchPage","data","selectedS1AccountCookieKey","refreshS1AccountSelector","analytics","_hsq","push","Title","history","location","pathname","toLowerCase","pushState","vueAddProductApp","$vueAddProductDiv","vueAddProductAppMounted","mobileMenuAnchorSelector","vueAppMenuClickFunc","e","unmount","remove","off","on","preventDefault","attr","addEventListener","oEvent","state","S1AccountNotificationToken","rebindNotificationListener","s1AccountSelectorClickHandler","document","$this","dpMap","custTypes","selZipCode","selProductCode","productAddId","getElementById","replaceChildren","createElement","id","body","appendChild","trigger","productAddWizard","brandTypeId","brandObj","BrandTypeId","s1AcctId","customerTypeIds","selectedDeliveryPointMap","selectedZipCode","selectedProductCode","minimumGallonDelivery","onMounted","onWizardClosed","onProductAddedSuccessfully","productAddRequest","productAddResponse","loadDashboard","onHvacAppointmentSuccessfullyScheduled","mount","href","hasHref","modal","Open","html","modalBody","format","replace","replaceAll","onShownCallback","mr","$modalBody","find","webservices","getJson","wasDismissed","close","rebindS1AccountSelector","s1AccountNotificationToken","getNotificationWidget","$menuItem","some","OnBudget","CustomerBudgetResponse","HasPendingBudget","IsEligible","empty","append","analyticsFireLoginEvent","analyticsObj","event","analyticsCustomerType","customerType","analyticsUserId","userId","hasRewardsAccess","anaylyticsIsRewardsUser","isRewardsRedeemer","anaylyticsIsRewardsRedeemer","dataLayer","email","last_customer_web_login_date","loginTime","each","chosen","width","allow_single_deselect","disable_search_threshold","no_results_text","updateLocationFilter","val","tooltip","dropdown","docId","invoiceId","innerWidth","open","size","successCallback","modalRef","doc","getData","pdfUrl","allowDownload","onPdfLoaded","loadingIndicator","stop","start","budgetManager","budgetEnroll","ServiceLocations","S1AccountId","cancelCallback","rtnData","Alert","text","CustomerService800NumberFormatted","widget","deliveryRequest","s1AccountId","productCode","productSubclass","isWinterBlend","deliveryPointMap","tankSize","usableTankSize","deliverySchedule","paymentTerms","existingBalance","minimumGallonDeliveryFee","creditStatusOk","equipmentId","paymentUpfrontRequired","division","viewUsageHistory","viewPendingDelivery","$dpHash","updateServiceLocationData","servLocHash","element","DeliveryPointHash","ServiceLocationHash","editServiceLocation","deliveryHistory","pendingDeliveries","panelCollapse","siblings","collapse","ticketNumber","hasClass","customerBudgetResp","MonthlyPaymentAmountFormatted","Math","ceil","MonthlyPaymentAmount","toFixed","filter","LocationBudgetEligibility","payment","invoiceHistory","paymentHistory","launchPaymentProfile","showPendingServiceRequest","$title","clone","showContractEquipment","remoteAccountMap","accountSettingsEdit","shipleyOneNumberId","remoteSystemId","RemoteSystemId","remoteSystemAccountId","RemoteSystemAccountId","remoteSystemAccountNumber","RemoteSystemAccountNumber","accountSettings","viewNotes","showServiceCallHistory","showRenewalOffers","loadDashboardQuickActionButtons","loadSpecialOffers","rewardObj","$car","$rewardWapper","$graphTarget","graphData","options","legend","show","series","pie","innerRadius","radius","grid","hoverable","label","formatter","tooltipOpts","cssClass","content","defaultTheme","IsOptedOut","$href","rewards","UnusedPointTotal","RecentlyAddedPointAmount","color","constants","shipleyGreen","ExistingPoints","shipleyBlue","PendingTransactionPoints","ctaOrange","ExpiringIn30DaysPointTotal","unshift","ctaYellow","$existingItems","$energyRewards","has","$budgetPlan","mq","matchMedia","prepend","matches","css","height","$inner","plot","idx","$me","carousel","customerCorrespondenceQueueId","rtnObj","openModal","renewalOptions","productTmpl","autoRenewHtml","altOffer1Html","altOffer2Html","columns","mangePricePlanAndRender","pp","isBestOffer","PricingPlan","PricePlan","PriceFormatted","PriceHtmlFormatted","RenderedTosUrl","TermsAndConditionsUrl","BestOffer","PriceToCompareFormatted","PriceToCompare","AutoRenewalOffer","AltRenewalOffer1","AltRenewalOffer2","colClass","mSrc","renewalOpts","buttons","action","m","$errPnl","alert","ClearAlert","rOpts","BillingAccountId","LdcAccountId","RenewalPriceSheetLineId","CustomerCorrespondenceSendQueueId","RenewalPin","renewalResp","RenewalStatus","$btnRenew","$modalFooter","templating","DownloadTemplateHtml","appEnum","TemplateType","CwWidget","tmplSrc","locationName","srvCallHistoryItems","dialogRef","$targetEl","cols","row","type","meta","utility","tableSortByDate","ServiceCallCreatedDate","ServiceCode","EquipmentType","EquipmentDescription","sortable","className","WebDocsDocumentId","InvoiceNumber","$tblHtml","getTableMarkup","map","c","tableOpts","lengthMenu","iDisplayLength","responsive","deferRender","dom","language","search","order","dt","DataTable","setData","docGuid","dGuid","acctBalances","$profileEl","$profileElSelection","$statusBtn","$statusText","$statusIcon","profile","titleTooltip","prop","eftConfig","acctBal","EftMaskedConfig","ccConfig","CreditCardProfile","forEach","eft","AccountTypeFormatted","AccountNumber","cc","acctNum","CreditCardPaymentProfileId","CreditCardPaymentProfile","filterSingle","a","CardTypeFormatted","MaskedAccountNumber","Type","Config","join","callback","getDashSummaryData","dashSummary","stopPropagation","wasFavorited","wasUnfavorited","showS1AccountEditModal","toggleClass","selectedS1Account","s1Accounts","GetRenderedTemplateHTML","S1Accounts","renderedTmpl","$newMenu","replaceWith","notes","NoteType","NoteText","NoteDate","$tbl","tableLayout","contractId","modalTitle","ContractId","contract","StartDateFormatted","StartDate","EndDateFormatted","EndDate","BillIntervalUOMFormatted","BillIntervalUOM","ContractedEquipment","CoverageFrom","CoverageTo","EquipmentCoverageDateFormatted","docUrl","newBillAccount","hasV2AddProdRight","useV2addProductExperience","CanRedeemNewRewards","S1CustomerTypeIds","JSON","stringify","$s1CustType","CustomerTypes","CustomerType","CustomerJoinYear","sl","CustomerTypeIds","RemoteSystemMap","ProductRows","pr","p","DeliveryPointMap","Dashboard","scrollTop","s1AccountNumber","accountNickname","isFavorite","d","mdata","parentModal","wasSuccess","reload","nickname","trim","Nickname","RemoteSystemDeliveryPointId","selectedLocationRtn","selectedLocation","EveningPhone","FormatAsPhone","number","DaytimePhone","GetPhoneTypeList","myDp","modalSize","S1RemoteSystem","As400","Nexant","Cargas","renderedTemplate","saveServiceLocation","rowData","getDataTableAllRowData","saveObj","DeliveryLocationDescription","ContactName","IsBillToAddress","is","Directions","GetCustomerPhoneNumberList","LocationId","CustomerLocationId","$locationEl","buildPhoneNumberDataTable","bindEditLocationButtons","PhoneData","Location","StreetAddress","PhoneTypeList","PhoneTypeId","PhoneTypeID","PhoneType","PhoneTypeSelected","getPhoneDetailModal","phoneId","phoneNumber","deleteDataTableListing","$dt","getDataTableRowData","customerLocationData","getPhoneEditData","mRef","err","getUniqueNumber","list","i","PhoneID","phoneObj","Contact","IsPrimary","EntityLocationId","PhoneExtension","PhoneNumber","PhoneNumberFormatted","phoneIsFormatted","indexOf","el","parseInt","addUpdateDataTableListing","draw","phone","formatPhoneNumberForDisplay","LocationList","LocationAddress","LocationSelected","phoneData","tableOptions","processing","bSortClasses","orderable","visible","thx","tdx","j","remoteId","$email","$attention","$description","$eveningPhone","$directions","$contactName","orgData","Attention","Email","DayPhone","errs","$el","isValidEmail","contactArr","split","includes","validateContactName","errMsg","phoneList","stripPhoneNumberFormatting","ext","validateServiceLocation","saveResp","returnInt","phoneFormatted","phoneStripped","req","ProductCode","EquipmentId","usageResp","UsageHistory","usageData","$usageTarget","ngEl","Electricity","NaturalGas","usage","WasEstimated","HasForcastedFutureData","msg","drawUsageGraph","timeSeries","uom","barwidth","xMode","seriesData","Date","Value","UOMToText","UnitOfMeasure","s","bars","barWidth","fill","align","toolTipFunc","xAxis","mode","timeformat","xval","yval","flotItem","formatDate","clickable","tickColor","borderWidth","colors","xaxis","position","labelFormatter","getExistingServiceRequest","documentId","s1TicketId","elemId","$div","hvacScheduledApptSummaryModalComp","app","serviceTicketId","workOrderDocumentId","onHvacAppointmentSummaryClosed","getBreadcrumbMarkup","links","rtn","isActive","PendingDeliveryHash","DeliveryLink","PendingDeliveryItemResp","DeliveryData","locationList","hide","appStartArgs","CurrentUserObj","UserId","specialOffersComp","onSpecialOfferAddedToAccount","delLocIds","$parent","delMap","remoteSystemDeliveryPointId","icon","f","startsWith","quickActionBtnsComp","deliveryProductLocationIds","autoPayId","$autopayDiv","autopayConfigApp","onAutoPayConfigured","fn","dataTable","Buttons","defaults","button","copyHtml5","csvHtml5","print","dtTools","tableClasses","date","sortType","displayFormat","newObject","matchingColumnName","redrawTable","matchingKeyValue","getDataTableNextRowData","getDataTablePreviousRowData","factory","result","arguments","attributes","key","decode","decodeURIComponent","converter","api","set","value","path","expires","toUTCString","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","cookie","get","json","jar","cookies","parts","slice","charAt","name","read","parse","getJSON","withConverter","module","exports","getObject","storageType","getItem","setObject","obj","setItem","console","error","isStorageAvailable","storage","removeItem","DOMException","code","constructor","$viewPort","PageRenderFunction","Url","InvoiceHistory","PaymentHistory","accountSettingsApp","dataReference","AccountSettings","breadCrumbs","accountSettingsListing","rootElement","querySelector","brandType","DocumentHistory","documentHistory","PendingDeliveries","Rewards","dashboardSummary","BudgetManager","budgetData","DeliveryHistory","pageHistory","pageMap","Map","setPage","createPage","pageInstance","Error","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","class","_hoisted_5","__name","props","checked","Boolean","disabled","readonly","hover","variant","inputClass","alignLabel","loading","loadingText","labelClass","undefined","labelStyle","Object","Array","emits","setup","__props","emit","__emit","componentId","isChecked","lblClasses","labels","checkVal","newVal","target","HTMLInputElement","_ctx","_cache","for","style","onChange","$slots","innerHTML","animate","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","startPageNumber","showSelectCheckbox","selected","selectCheckboxText","pdf","workerSrc","URL","toString","downloadUrl","forceDownload","totalPages","currentPage","canvasHeight","canvasWidth","pdfDoc","loadFailed","pageRendering","scale","pageNumPending","canvasEl","promise","numPages","renderPage","catch","loadPdf","pdfSelectionChange","pageNum","getPage","page","viewport","getViewport","canvasCtx","getContext","render","canvasContext","movePage","currentPageOffset","zoom","zoomPercent","onUpdated","onClick","$event","message"],"sourceRoot":""}