Help
RSS
API
Feed
Maltego
Contact
Domain > prelive0commitenergy.energypricing.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-17
143.204.68.81
(
ClassC
)
2026-02-24
3.169.173.10
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Tue, 24 Feb 2026 16:26:53 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://prelive0commitenergy.energypricing.com/X-Cache: Redirect from cloudfrontVia: 1.1 474071c4c0fe7769ce8d0b73ccd104b0.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: RI0dmBsE9UhCRGPEV9ZsTvFr4mB8TEXse4tpGN5GKS9FUhQckI1ctg html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: nginx/1.14.1Date: Tue, 24 Feb 2026 16:26:54 GMTX-XSS-Protection: 1; modeblockX-Frame-Options: SAMEORIGINVary: Accept-EncodingX-Powered-By: PHP/8.1.23Set-Cookie: PHPSESSID6aj41kbnsfmu2uest7en95rrbm; expiresTue, 24-Feb-2026 17:26:54 GMT; Max-Age3600; path/; domainprelive0commitenergy.energypricing.com; secure; HttpOnly; SameSiteLaxSet-Cookie: X-Magento-Vary1ea407ba76ed1b3266038d907aa4bd1afaf955a6; expiresTue, 24-Feb-2026 17:26:54 GMT; Max-Age3600; path/; secure; HttpOnly; SameSiteLaxPragma: no-cacheCache-Control: max-age0, must-revalidate, no-cache, no-storeExpires: Mon, 24 Feb 2025 16:26:54 GMTx-built-with: Hyva ThemesReport-To: {group:report-endpoint,max_age:10886400,endpoints:{url:https:\/\/maps.googleapis.com\/}}Content-Security-Policy: font-src https://fonts.gstatic.com *.fontawesome.com *.googleapis.com https://www.google.com https://www.gstatic.com maxcdn.bootstrapcdn.com *.cloudflare.com *.twitter.com *.gstatic.com *.typekit.net *.twimg.com *.trustedshops.com *.zopim.com *.zopim.io *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com fonts.gstatic.com data: self unsafe-inline; form-action geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com pilot-payflowlink.paypal.com www.paypal.com www.sandbox.paypal.com https://plumrocket.com *.twitter.com *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline; frame-ancestors self; frame-src fast.amc.demdex.net *.adobe.com bid.g.doubleclick.net *.youtube.com *.youtube-nocookie.com geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com www.paypal.com www.sandbox.paypal.com pilot-payflowlink.paypal.com player.vimeo.com *.google.com https://plumrocket.com *.www.youtube.com *.www.sandbox.paypal.com *.www.paypal.com *.twitter.com *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.doubleclick.net *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline; img-src assets.adobedtm.com amcglobal.sc.omtrdc.net dpm.demdex.net cm.everesttech.net *.adobe.com widgets.magentocommerce.com self data: www.googleadservices.com www.google-analytics.com googleads.g.doubleclick.net www.google.com bid.g.doubleclick.net analytics.google.com www.googletagmanager.com t.paypal.com www.paypal.com www.paypalobjects.com fpdbs.paypal.com fpdbs.sandbox.paypal.com *.vimeocdn.com i.ytimg.com *.youtube.com validator.swagger.io https://images.unsplash.com ebizmarts-website.s3.amazonaws.com downloads.mailchimp.com gallery.mailchimp.com https://www.magezon.com *.google.com *.cloudflare.com *.klarna.com *.googleadservices.com *.google-analytics.com *.paypal.com *.twitter.com *.twimg.com *.ytimg.com *.bing.com *.zopim.com *.zopim.io *.doubleclick.net *.google.co.in *.mastercard.com https://maps.gstatic.com *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.bbb.org *.facebook.net *.facebook.com *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com *.lightemporium.com *.usercentrics.eu data: self unsafe-inline; script-src assets.adobedtm.com *.adobe.com www.googleadservices.com www.google-analytics.com googleads.g.doubleclick.net analytics.google.com www.googletagmanager.com geostag.cardinalcommerce.com 1eafstag.cardinalcommerce.com geoapi.cardinalcommerce.com 1eafapi.cardinalcommerce.com songbird.cardinalcommerce.com includestest.ccdc02.com www.paypal.com www.sandbox.paypal.com www.paypalobjects.com t.paypal.com s.ytimg.com www.googleapis.com vimeo.com www.vimeo.com *.vimeocdn.com *.youtube.com chimpstatic.com downloads.mailchimp.com *.list-manage.com *.googleapis.com *.google.com *.gstatic.com *.avada.io *.cloudflare.com *.twitter.com *.google-analytics.com *.twimg.com *.trustedshops.com *.usercentrics.eu *.fontawesome.com *.bing.com *.zopim.com *.zdassets.com *.hotjar.com *.googleapis.com self *.dwin1.com *.doubleclick.net *.shareasale.com *.dtn.com *.adobedtm.com *.reviews.io *.widget.reviews.io *.assets.reviews.io *.formilla.com *.bbb.org seal-dc-easternpa.bbb.org *.canvasjs.com *.jsdelivr.net *.html2canvas.hertzen.com *.hertzen.com *.facebook.net *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline unsafe-eval; style-src *.adobe.com downloads.mailchimp.com https://fonts.googleapis.com *.fontawesome.com *.googleapis.com *.google.com *.gstatic.com maxcdn.bootstrapcdn.com *.bootstrapcdn.com *.usercentrics.eu *.fonts.googleapis.com *.cloudfront.net *.cloudflare.com *.twitter.com *.twimg.com *.typekit.net *.trustedshops.com *.bing.com *.shareasale.com *.dtn.com *.reviews.io https://assets.reviews.io *.assets.reviews.io *.formilla.com *.tailwindcss.com data: *.jsdelivr.net *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com fonts.googleapis.com self unsafe-inline; object-src self unsafe-inline; media-src *.adobe.com *.zopim.com *.zopim.io *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline; manifest-src self unsafe-inline; connect-src dpm.demdex.net amcglobal.sc.omtrdc.net www.google-analytics.com www.googleadservices.com analytics.google.com www.googletagmanager.com vimeo.com geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com www.sandbox.paypal.com www.paypalobjects.com www.paypal.com pilot-payflowlink.paypal.com http://dpm.demdex.net https://www.google.com https://www.gstatic.com https://get.geojs.io *.avada.io wss://ws.hotjar.com content.hotjar.io *.cloudflare.com *.twitter.com *.paypal.com *.twimg.com *.zdassets.com *.zopim.com *.zopim.io https://maps.googleapis.com *.google-analytics.com *.stats.g.doubleclick.net *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.google.com *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline; child-src http: https: blob: self unsafe-inline; default-src self *.google-analytics.com *.fontawesome.com *.shareasale.com *.reviews.io *.assets.reviews.io *.formilla.com *.awin1.com *.lantern.roeyecdn.com *.roeyecdn.com *.prelive0commitenergy.energypricing.com self unsafe-inline unsafe-eval; base-uri self unsafe-inline; report-uri https://maps.googleapis.com/; report-to report-endpoint;X-Content-Type-Options: nosniffX-Cache: Miss from cloudfrontVia: 1.1 cb2339b8008ceeabfc2dd9e6cfbc465c.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: ZFLaFIUgv7wMgsoXZjXB7VcjOMIKyF4iXHv3iw0j5Uxdko3FLJdtow !doctype html>html langen>head > meta charsetutf-8/>meta nametitle content404 Not Found/>meta namedescription contentPage description/>meta namekeywords contentPage keywords/>meta namerobots contentNOINDEX,NOFOLLOW/>meta nameviewport contentwidthdevice-width, initial-scale1/>title>404 Not Found/title>link relstylesheet typetext/css mediaall hrefhttps://prelive0commitenergy.energypricing.com/static/_cache/merged/f5b4b9b9c27640a99504bc3a316abb1d.css />link relicon typeimage/x-icon hrefhttps://prelive0commitenergy.energypricing.com/media/favicon/stores/2/0-Commit_Energy.png />link relshortcut icon typeimage/x-icon hrefhttps://prelive0commitenergy.energypricing.com/media/favicon/stores/2/0-Commit_Energy.png /> style> #social-login-popup .social-login-title { background-color: #6e716e } #social-login-popup .social-login #bnt-social-login-authentication, #social-login-popup .forgot .primary button, #social-login-popup .create .primary button, #social-login-popup .fake-email .primary button { background-color: #6e716e; border: #6e716e } .block.social-login-authentication-channel.account-social-login .block-content { text-align: center; } #bnt-social-login-fake-email { background-color: grey !important; border: grey !important; } #request-popup .social-login-title { background-color: grey !important; } /* Compatible ETheme_YOURstore*/ div#centerColumn .column.main .block.social-login-authentication-channel.account-social-login { max-width: 900px !important; margin: 0 auto !important; } div#centerColumn .column.main .block.social-login-authentication-channel.account-social-login .block-content { text-align: center; } @media (max-width: 1024px) { div#centerColumn .column.main .block.social-login-authentication-channel.account-social-login .block-content { padding: 0 15px; } }/style>link relcanonical hrefhttps://prelive.energypricing.com/no-route />script> var BASE_URL https://prelive0commitenergy.energypricing.com/; var THEME_PATH https://prelive0commitenergy.energypricing.com/static/frontend/Epstore/default/en_US; var COOKIE_CONFIG { expires: null, path: \u002F, domain: .prelive0commitenergy.energypricing.com, secure: false, lifetime: 3600, cookie_restriction_enabled: false }; var CURRENT_STORE_CODE zero_commit; var CURRENT_WEBSITE_ID 2; window.hyva window.hyva || {} window.cookie_consent_groups window.cookie_consent_groups || {} window.cookie_consent_groupsnecessary true; window.cookie_consent_config window.cookie_consent_config || {}; window.cookie_consent_confignecessary .concat( window.cookie_consent_confignecessary || , user_allowed_save_cookie, form_key, mage-messages, private_content_version, mage-cache-sessid, last_visited_store, section_data_ids );/script>script> use strict; (function( hyva, undefined ) { function lifetimeToExpires(options, defaults) { var lifetime options.lifetime || defaults.lifetime; if (lifetime) { var date new Date; date.setTime(date.getTime() + lifetime * 1000); return date; } return null; } function generateRandomString() { const allowedCharacters 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ, length 16; let formKey , charactersLength allowedCharacters.length; for (var i 0; i length; i++) { formKey + allowedCharactersMath.round(Math.random() * (charactersLength - 1)) } return formKey; } const cookieTempStorage {}; const internalCookie { get(name) { const v document.cookie.match((^|;) ? + name + (^;*)(;|$)); return v ? v2 : null; }, set(name, value, days, skipSetDomain) { let expires, path, domain, secure, samesite; const defaultCookieConfig { expires: null, path: /, domain: null, secure: false, lifetime: null, samesite: lax }; const cookieConfig window.COOKIE_CONFIG || {}; expires days ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; path cookieConfig.path || defaultCookieConfig.path; domain !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); secure cookieConfig.secure || defaultCookieConfig.secure; samesite cookieConfig.samesite || defaultCookieConfig.samesite; document.cookie name + + encodeURIComponent(value) + (expires ? ; expires + expires.toGMTString() : ) + (path ? ; path + path : ) + (domain ? ; domain + domain : ) + (secure ? ; secure : ) + (samesite ? ; samesite + samesite : lax); }, isWebsiteAllowedToSaveCookie() { const allowedCookies this.get(user_allowed_save_cookie); if (allowedCookies) { const allowedWebsites JSON.parse(unescape(allowedCookies)); return allowedWebsitesCURRENT_WEBSITE_ID 1; } return false; }, getGroupByCookieName(name) { const cookieConsentConfig window.cookie_consent_config || {}; let group null; for (let prop in cookieConsentConfig) { if (!cookieConsentConfig.hasOwnProperty(prop)) continue; if (cookieConsentConfigprop.includes(name)) { group prop; break; } } return group; }, isCookieAllowed(name) { const cookieGroup this.getGroupByCookieName(name); return cookieGroup ? window.cookie_consent_groupscookieGroup : this.isWebsiteAllowedToSaveCookie(); }, saveTempStorageCookies() { for (const name, data of Object.entries(cookieTempStorage)) { if (this.isCookieAllowed(name)) { this.set(name, datavalue, datadays, dataskipSetDomain); delete cookieTempStoragename; } } } }; hyva.getCookie (name) > { const cookieConfig window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { return cookieTempStoragename ? cookieTempStoragenamevalue : null; } return internalCookie.get(name); } hyva.setCookie (name, value, days, skipSetDomain) > { const cookieConfig window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { cookieTempStoragename {value, days, skipSetDomain}; return; } return internalCookie.set(name, value, days, skipSetDomain); } hyva.getBrowserStorage () > { const browserStorage window.localStorage || window.sessionStorage; if (!browserStorage) { console.warn(Browser Storage is unavailable); return false; } try { browserStorage.setItem(storage_test, 1); browserStorage.removeItem(storage_test); } catch (error) { console.warn(Browser Storage is not accessible, error); return false; } return browserStorage; } hyva.postForm (postParams) > { const form document.createElement(form); let data postParams.data; if (! postParams.skipUenc && ! data.uenc) { data.uenc btoa(window.location.href); } form.method POST; form.action postParams.action; Object.keys(postParams.data).map(key > { const field document.createElement(input); field.type hidden field.value postParams.datakey; field.name key; form.appendChild(field); }); const form_key document.createElement(input); form_key.type hidden; form_key.value hyva.getFormKey(); form_key.nameform_key; form.appendChild(form_key); document.body.appendChild(form); form.submit(); } hyva.getFormKey function () { let formKey hyva.getCookie(form_key); if (!formKey) { formKey generateRandomString(); hyva.setCookie(form_key, formKey); } return formKey; } hyva.formatPrice (value, showSign) > { var formatter new Intl.NumberFormat( en\u002DUS, { style: currency, currency: USD, signDisplay: showSign ? always : auto } ); return (typeof Intl.NumberFormat.prototype.formatToParts function) ? formatter.formatToParts(value).map(({type, value}) > { switch (type) { case currency: return $ || value; case minusSign: return - ; case plusSign: return + ; default : return value; } }).reduce((string, part) > string + part) : formatter.format(value); } const formatStr function (str, nStart) { const args Array.from(arguments).slice(2); return str.replace(/(%+)(0-9+)/g, (m, p, n) > { const idx parseInt(n) - nStart; if (argsidx null || argsidx void 0) { return m; } return p.length % 2 ? p.slice(0, -1).replace(%%, %) + argsidx : p.replace(%%, %) + n; }) } hyva.str function (string) { const args Array.from(arguments); args.splice(1, 0, 1); return formatStr.apply(undefined, args); } hyva.strf function () { const args Array.from(arguments); args.splice(1, 0, 0); return formatStr.apply(undefined, args); } /** * Take a html string as `content` parameter and * extract an element from the DOM to replace in * the current page under the same selector, * defined by `targetSelector` */ hyva.replaceDomElement (targetSelector, content) > { // Parse the content and extract the DOM node using the `targetSelector` const parser new DOMParser(); const doc parser.parseFromString(content, text/html); const contentNode doc.querySelector(targetSelector); // Bail if content cant be found if (!contentNode) { return; } // Extract all the script tags from the new content. // Script tags wont execute when inserted into a dom-element directly, // therefore we need to inject them to the head of the document. const tmpScripts contentNode.getElementsByTagName(script); if (tmpScripts.length > 0) { // Push all script tags into an array // (to prevent dom manipulation while iterating over dom nodes) const scripts ; for (let i 0; i tmpScripts.length; i++) { scripts.push(tmpScriptsi); } // Iterate over all script tags and duplicate+inject each into the head for (let i 0; i scripts.length; i++) { let script document.createElement(script); script.innerHTML scriptsi.innerHTML; document.head.appendChild(script); // Remove the original (non-executing) node from the page scriptsi.parentNode.removeChild(scriptsi); } } // Replace the old DOM node with the new content document.querySelector(targetSelector).replaceWith(contentNode); // Reload customerSectionData and display cookie-messages if present window.dispatchEvent(new CustomEvent(reload-customer-section-data)); hyva.initMessages(); } const replace {+: -, /: _, : ,}; hyva.getUenc () > btoa(window.location.href).replace(/+//g, match > replacematch); window.addEventListener(user-allowed-save-cookie, () > internalCookie.saveTempStorageCookies()) }( window.hyva window.hyva || {} ));/script>/head>body classpl-thm-epstore pl-thm-epstore-default marketplace-portal cms-no-route cms-index-index page-layout-2columns-right idhtml-body> script typetext/javascript> var affPrefix u; if (affPrefix ) { affPrefix u; } var hash window.location.hash; var url_loading location.href; var url_standard new URL(url_loading); var parameter url_standard.searchParams.get(affPrefix); if (parameter ! null) { var cookieValue parameter; var cookieName affiliate_key; var expirationTime 31536000; expirationTime expirationTime * 1000; var date new Date(); var dateTimeNow date.getTime(); date.setTime(dateTimeNow + expirationTime); var expirationTime date.toUTCString(); document.cookie cookieName + + cookieValue + ;expires + expirationTime + ; path/; domain. + location.hostname.replace(/^www\./i, ; HttpOnly; SameSiteNone; Secure); window.location.pathname.split(?)0; } if (hash.indexOf(affPrefix) ! -1) { var cookieValue hash.substr(affPrefix.length + 1); var cookieName affiliate_key; var expirationTime 31536000; expirationTime expirationTime * 1000; var date new Date(); var dateTimeNow date.getTime(); date.setTime(dateTimeNow + expirationTime); var expirationTime date.toUTCString(); document.cookie cookieName + + cookieValue + ;expires + expirationTime + ; path/; domain. + location.hostname.replace(/^www\./i, ; HttpOnly; SameSiteNone; Secure); window.location.href; } /script> script typetext/javascript> //!CDATA /* require( jquery, mage/cookies , function ($) { use strict; var affPrefix u; if (affPrefix ) { affPrefix u; } var hash window.location.hash; var url_loading location.href; var url_standard new URL(url_loading); var parameter url_standard.searchParams.get(affPrefix); if (parameter ! null) { $.mage.cookies.set( affiliate_key, parameter, {lifetime: 31536000} ); window.location.pathname.split(?)0; } if (hash.indexOf(affPrefix) ! -1) { $.mage.cookies.set( affiliate_key, hash.substr(affPrefix.length + 1), {lifetime: 31536000} ); window.location.href; } }); */ //> /script>style> /*--add custom css for affiliate--*/ /style>input nameform_key typehidden valueSa6T3AjS6p3UBhsh />div classpage-wrapper>header classpage-header>a classaction skip sr-only contentarea href#contentarea> span> Skip to Content /span>/a>script> function initHeader () { return { searchOpen: false, cart: {}, goBack(prm) { //console.log(prm); // Smart Back Navigation if (document.referrer && window.history.length > 1 && prm 1) { window.history.back(); } else { var host window.location.hostname; // redirect only if hostname contains .energypricing if (host.includes(.energypricing)) { var newHost host.replace(.energypricing, ); var newUrl window.location.protocol + // + newHost + window.location.hash; window.location.replace(newUrl); // prevents back loop } } }, getData(data) { if (data.cart) { this.cart data.cart } } } } function initCompareHeader() { return { compareProducts: null, itemCount: 0, receiveCompareData(data) { if (datacompare-products) { this.compareProducts datacompare-products; this.itemCount this.compareProducts.count; } } } }/script>div idheader classcontainer flex relative z-30 w-full bg-white x-datainitHeader() @keydown.window.escapesearchOpen false; @private-content-loaded.windowgetData(event.detail.data)> div classflex justify-left items-left order-1 mt-3 absolute> a @clickgoBack(1) classinline-flex items-center h-10 px-3 md:px-6 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg shadow-sm hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-blue-500 transition cursor-pointer> !-- Left Arrow Icon --> svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 mr-2 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM15 19l-7-7 7-7 /> /svg> Back /a> /div> div classlogo-container container flex flex-wrap items-center justify-center w-full px-6 py-1 mx-auto mt-0 order-2> !--Logo--> div classorder-2 sm:order-2 lg:order-1 w-auto pb-2 sm:w-auto sm:pb-0> a classflex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title logo cursor-pointer @clickgoBack(2) title aria-labelstore logo> picture> source typeimage/webp srcsethttps://prelive0commitenergy.energypricing.com/media/webp_image/logo/stores/2/0_Commit_Energy-_logo_1.webp> source typeimage/png srcsethttps://prelive0commitenergy.energypricing.com/media/logo/stores/2/0_Commit_Energy-_logo_1.png> img srchttps://prelive0commitenergy.energypricing.com/media/logo/stores/2/0_Commit_Energy-_logo_1.png title alt width189 height64 /> /picture> /a>/div> /div> !--Search--> !-- div classabsolute z-10 w-full border-t shadow-sm bg-container-lighter border-container-lighter idsearch-content :class{ block: searchOpen} x-cloak x-showsearchOpen @click.outsidesearchOpen false > script> use strict; function initMiniSearch() { return { minSearchLength: 3, suggestions: , suggest() { const search this.$refs.searchInput; if (search.value.length > this.minSearchLength) { search.setCustomValidity(); search.reportValidity(); this.fetchSuggestions(search.value); } else { this.suggestions ; } }, fetchSuggestions(term) { fetch( window.BASE_URL + search/ajax/suggest? + new URLSearchParams({q: term}), { headers: { X-Requested-With: XMLHttpRequest } } ) .then(response > response.json()) .then(result > this.suggestions result); }, search(term) { const search this.$refs.searchInput; term term || search.value; if (term.length this.minSearchLength) { search.setCustomValidity(Minimum\u0020Search\u0020query\u0020length\u0020is\u00203); search.reportValidity(); } else { search.setCustomValidity(); search.value term; this.$refs.form.submit(); } }, focusElement(element) { if (element && element.nodeName DIV) { element.focus(); return true; } else { return false; } } } }/script>div classcontainer py-2 mx-auto text-black x-datainitMiniSearch()> form classform minisearch idsearch_mini_form x-refform @submit.preventsearch() actionhttps://prelive0commitenergy.energypricing.com/catalogsearch/result/ methodget> label classhidden forsearch data-roleminisearch-label> span>Search/span> /label> input idsearch x-refsearchInput typesearch autocompleteoff nameq value placeholderSearch entire store here... maxlength128 classw-full p-2 text-lg leading-normal transition appearance-none text-grey-800 focus:outline-none focus:border-transparent lg:text-xl @focus.oncesuggest @input.debounce.300suggest @keydown.arrow-down.preventfocusElement($root.querySelector(tabindex)) /> template x-ifsuggestions.length > 0> div classw-full leading-normal transition appearance-none text-grey-800 flex flex-col mt-1> template x-forsuggestion in suggestions> div classflex justify-between p-2 bg-container-lighter even:bg-container mb-1 cursor-pointer border border-container hover:bg-container-darker tabindex0 @clicksearch(suggestion.title) @keydown.entersearch(suggestion.title) @keydown.arrow-up.prevent focusElement($event.target.previousElementSibling) || $refs.searchInput.focus() @keydown.arrow-down.preventfocusElement($event.target.nextElementSibling) > span x-textsuggestion.title>/span> span x-textsuggestion.num_results>/span> /div> /template> /div> /template> button typesubmit titleSearch classaction search sr-only aria-labelSearch > Search /button> /form>/div> /div> --> !--Cart Drawer--> script> function initCartDrawer() { return { open: false, isLoading: false, cart: {}, maxItemsToDisplay: 10, itemsCount: 0, totalCartAmount: 0, getData(data) { if (data.cart) { this.cart data.cart; this.itemsCount data.cart.items && data.cart.items.length || 0; this.totalCartAmount this.cart.summary_count; this.setCartItems(); } this.isLoading false; }, cartItems: , getItemCountTitle() { return hyva.strf((%0 of %1), this.maxItemsToDisplay, this.itemsCount) }, setCartItems() { this.cartItems this.cart.items && this.cart.items.sort((a, b) > b.item_id - a.item_id) || ; if (this.maxItemsToDisplay > 0) { this.cartItems this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); } }, deleteItemFromCart(itemId) { this.isLoading true; const formKey hyva.getFormKey(); const postUrl BASE_URL + checkout/sidebar/removeItem/; fetch(postUrl, { headers: { content-type: application/x-www-form-urlencoded; charsetUTF-8, }, body: form_key + formKey + &item_id + itemId, method: POST, mode: cors, credentials: include }).then(response > { if (response.redirected) { window.location.href response.url; } else if (response.ok) { return response.json(); } else { window.dispatchMessages && window.dispatchMessages({ type: warning, text: Could\u0020not\u0020remove\u0020item\u0020from\u0020quote. }); this.isLoading false; } }).then(result > { window.dispatchMessages && window.dispatchMessages({ type: result.success ? success : error, text: result.success ? You\u0020removed\u0020the\u0020item. : result.error_message }, result.success ? 5000 : 0) window.dispatchEvent(new CustomEvent(reload-customer-section-data)); }); } } }/script>section idcart-drawer x-datainitCartDrawer() @private-content-loaded.windowgetData($event.detail.data) @toggle-cart.windowopentrue @keydown.window.escapeopenfalse> template x-ifcart && cart.summary_count> div roledialog aria-labelledbycart-drawer-title aria-modaltrue @click.outsideopenfalse classfixed inset-y-0 right-0 z-30 flex max-w-full> div classbackdrop x-showopen x-transition:enterease-in-out duration-500 x-transition:enter-startopacity-0 x-transition:enter-endopacity-100 x-transition:leaveease-in-out duration-500 x-transition:leave-startopacity-100 x-transition:leave-endopacity-0 @clickopenfalse aria-labelClose panel>/div> div classrelative w-screen max-w-md shadow-2xl x-showopen x-transition:entertransform transition ease-in-out duration-500 sm:duration-700 x-transition:enter-starttranslate-x-full x-transition:enter-endtranslate-x-0 x-transition:leavetransform transition ease-in-out duration-500 sm:duration-700 x-transition:leave-starttranslate-x-0 x-transition:leave-endtranslate-x-full > div x-showopen x-transition:enterease-in-out duration-500 x-transition:enter-startopacity-0 x-transition:enter-endopacity-100 x-transition:leaveease-in-out duration-500 x-transition:leave-startopacity-100 x-transition:leave-endopacity-0 classabsolute top-0 right-0 flex p-2 mt-2> button @clickopenfalse aria-labelClose panel classp-2 text-gray-300 transition duration-150 ease-in-out hover:text-black> svg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 24 24 strokecurrentColor width24 height24> path stroke-linecapround stroke-linejoinround stroke-width2 dM6 18L18 6M6 6l12 12/>/svg> /button> /div> div classflex flex-col h-full py-6 space-y-6 bg-white shadow-xl> header classpx-4 sm:px-6> h2 idcart-drawer-title classtext-lg font-medium leading-7 text-gray-900> My Cart span classitems-total text-xs x-showmaxItemsToDisplay && maxItemsToDisplay itemsCount x-textgetItemCountTitle()> /span> /h2> /header> div classrelative grid gap-6 px-4 py-6 overflow-y-auto bg-white border-b sm:gap-8 sm:px-6 border-container> template x-foritem in cartItems> div classflex items-start p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100> a :hrefitem.product_url classw-1/4> img :srcitem.product_image.src :widthitem.product_image.width :heightitem.product_image.height loadinglazy /> /a> div classw-3/4 space-y-2> div> p classtext-xl> span x-htmlitem.qty>/span> x span x-htmlitem.product_name>/span> /p> p classtext-sm>span x-htmlitem.product_sku>/span>/p> /div> template x-foroption in item.options> div classpt-2> p classfont-semibold x-textoption.label + :>/p> p classtext-secondary x-htmloption.value>/p> /div> /template> p>span x-htmlitem.product_price>/span>/p> div classpt-4> a :hrefitem.configure_url x-showitem.product_type ! grouped classinline-flex p-2 mr-2 btn btn-primary> svg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 24 24 strokecurrentColor width20 height20> path stroke-linecapround stroke-linejoinround stroke-width2 dM15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z/>/svg> /a> button classinline-flex p-2 btn btn-primary @clickdeleteItemFromCart(item.item_id) > svg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 24 24 strokecurrentColor width20 height20> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16/>/svg> /button> /div> /div> /div> /template> /div> div classrelative grid gap-6 px-4 py-6 bg-white sm:gap-8 sm:px-6> div classw-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100> p>Subtotal: span x-htmlcart.subtotal>/span>/p> /div> div classw-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100> a @click.prevent.stop$dispatch(toggle-authentication, {url: https://prelive0commitenergy.energypricing.com/checkout/}); hrefhttps://prelive0commitenergy.energypricing.com/checkout/ classinline-flex btn btn-primary> Checkout /a> span>or/span> a hrefhttps://prelive0commitenergy.energypricing.com/checkout/cart/ classunderline> View and Edit Cart /a> /div> /div> /div> /div> div classflex flex-row justify-center items-center w-full h-full fixed select-none z-50 styleleft: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7); x-showisLoading x-transition:enterease-out duration-200 x-transition:enter-startopacity-0 x-transition:enter-endopacity-100 x-transition:leaveease-in duration-200 x-transition:leave-startopacity-100 x-transition:leave-endopacity-0> !-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 57 57 strokecurrentColor classtext-primary width57 height57> g fillnone fill-ruleevenodd> g transformtranslate(1 1) stroke-width2> circle cx5 cy50 r5> animate attributeNamecy begin0s dur2.2s values50;5;50;50 calcModelinear repeatCountindefinite/> animate attributeNamecx begin0s dur2.2s values5;27;49;5 calcModelinear repeatCountindefinite/> /circle> circle cx27 cy5 r5> animate attributeNamecy begin0s dur2.2s from5 to5 values5;50;50;5 calcModelinear repeatCountindefinite/> animate attributeNamecx begin0s dur2.2s from27 to27 values27;49;5;27 calcModelinear repeatCountindefinite/> /circle> circle cx49 cy50 r5> animate attributeNamecy begin0s dur2.2s values50;50;5;50 calcModelinear repeatCountindefinite/> animate attributeNamecx from49 to49 begin0s dur2.2s values49;5;27;49 calcModelinear repeatCountindefinite/> /circle> /g> /g>/svg> div classml-10 text-primary text-xl> Loading... /div>/div> /div> /template>/section> !--Authentication Pop-Up--> /div>style> header.page-header{ background: #fff; } div.page-main, .sidebar.sidebar-additional { display: none; } @media (min-width: 768px) { .logo-container{ justify-content: center; } }/style>/header>main idmaincontent classpage-main>div idcontentarea tabindex-1>/div>div classpage messages>script> function initMessages() { use strict; return { messages: window.mageMessages || , isEmpty() { return this.messages.reduce( function (isEmpty, message) { return isEmpty && message undefined }, true ) }, removeMessage(messageIndex) { this.messagesmessageIndex undefined; }, addMessages(messages, hideAfter) { messages.map((message) > { this.messages this.messages.concat(message); if (hideAfter) { this.setHideTimeOut(this.messages.length -1, hideAfter); } }); }, setHideTimeOut(messageIndex, hideAfter) { setTimeout((messageIndex) > { this.removeMessage(messageIndex); }, hideAfter, messageIndex); }, eventListeners: { @messages-loaded.window() { this.addMessages(event.detail.messages, event.detail.hideAfter) }, @private-content-loaded.window(event) { const data event.detail.data; if ( data.messages && data.messages.messages && data.messages.messages.length ) { this.addMessages(data.messages.messages); } }, @clear-messages.window() { this.messages ; } } } }/script>section idmessages x-datainitMessages() x-bindeventListeners> template x-if!isEmpty()> div classw-full> div rolealert classmessages container mx-auto py-3> template x-for(message, index) in messages :keyindex> div> template x-ifmessage> div classmessage :classmessage.type :ui-idmessage- + message.type > span x-htmlmessage.text>/span> a href# classclose cursor-pointer titleclose @click.preventremoveMessage(index)> svg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 24 24 strokecurrentColor classtext-white width18 height18> path stroke-linecapround stroke-linejoinround stroke-width2 dM6 18L18 6M6 6l12 12/>/svg> /a> /div> /template> /div> /template> /div> /div> /template>/section>/div>div classcolumns>div classcolumn main>style>::backdrop {--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }/style>div data-content-typehtml data-appearancedefault data-elementmain data-decodedtrue>dl>dt>The page you requested was not found, and we have a fine guess why./dt>dd>ul classdisc>li>If you typed the URL directly, please make sure the spelling is correct./li>li>If you clicked on a link to get here, the link is outdated./li>/ul>/dd>/dl>dl>dt>What 2 can you do?/dt>dd>Have no fear, help is near! There are many ways you can get back on track with Magento Store./dd>dd>ul classdisc>li>a href# onclickhistory.go(-1); return false;>Go back/a> to the previous page./li>li>Use the search bar at the top of the page to search for your products./li>li>Follow these links to get you back on track!br />a hrefhttps://prelive0commitenergy.energypricing.com/>Store Home/a> span classseparator>|/span> a hrefhttps://prelive0commitenergy.energypricing.com/customer/account/>My Account/a>/li>/ul>/dd>/dl>/div>/div>aside classsidebar sidebar-additional>/aside>/div>/main>footer classpage-footer>div classfooter content>script> function initUtmTracker () { var cookieValue ; if(window.location.search ! undefined && window.location.search.indexOf(utm_) ! -1){ var params window.location.search; cookieValue params; }else if(document.referrer ! undefined && document.referrer ! && document.referrer.match(location.hostname) null){ cookieValue utm_source+document.referrer; } if(cookieValue ! ){ var cookieName __utmz; var expirationTime 2592000; expirationTime expirationTime * 1000; var date new Date(); var dateTimeNow date.getTime(); date.setTime(dateTimeNow + expirationTime); var expirationTime date.toUTCString(); document.cookie cookieName + + cookieValue + ;expires + expirationTime + ; path/; domain. + location.hostname.replace(/^www\./i, ; HttpOnly; SameSiteNone; Secure); } }/script>div x-datainitUtmTracker()>!-- div classtext-gray-700 body-font bg-container-darker border-t border-container-darker shadow pb-3> div classcontainer py-8 mx-auto> div class footer-links> ?// $childName ! footer-copyright ? $block->getBlockHtml($childName) : ?> /div> /div> div class ep-footer-bottom> div classcontainer py-6 mx-auto border-t border-container> div classfooter-bottom> /div> /div> /div> /div> -->/div>/div>/footer>script> (() > { function src_default(Alpine) { Alpine.directive(intersect, (el, { value, expression, modifiers }, { evaluateLater, cleanup }) > { let evaluate evaluateLater(expression); let options { rootMargin: getRootMargin(modifiers), threshold: getThreshhold(modifiers) }; let observer new IntersectionObserver((entries) > { entries.forEach((entry) > { if (entry.isIntersecting (value leave)) return; evaluate(); modifiers.includes(once) && observer.disconnect(); }); }, options); observer.observe(el); cleanup(() > { observer.disconnect(); }); }); } function getThreshhold(modifiers) { if (modifiers.includes(full)) return 0.99; if (modifiers.includes(half)) return 0.5; if (!modifiers.includes(threshold)) return 0; let threshold modifiersmodifiers.indexOf(threshold) + 1; if (threshold 100) return 1; if (threshold 0) return 0; return Number(`.${threshold}`); } function getLengthValue(rawValue) { let match rawValue.match(/^(-?0-9+)(px|%)?$/); return match ? match1 + (match2 || px) : void 0; } function getRootMargin(modifiers) { const key margin; const fallback 0px 0px 0px 0px; const index modifiers.indexOf(key); if (index -1) return fallback; let values ; for (let i 1; i 5; i++) { values.push(getLengthValue(modifiersindex + i || )); } values values.filter((v) > v ! void 0); return values.length ? values.join( ).trim() : fallback; } document.addEventListener(alpine:init, () > { window.Alpine.plugin(src_default); }); })();/script>script typemodule srchttps://prelive0commitenergy.energypricing.com/static/frontend/Epstore/default/en_US/Hyva_Theme/js/alpine3.min.js defer crossorigin>/script>script> use strict; function dispatchMessages(messages, hideAfter) { const messagesEvent new CustomEvent(messages-loaded, { detail: { messages: messages, hideAfter: hideAfter } }); window.dispatchEvent(messagesEvent); } if (typeof hyva undefined || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn(Hyvä helpers are not loaded yet. Make sure they are included before this script); } (function( hyva, undefined ) { hyva.initFormKey () > { const inputSelector inputnameform_key, formKey hyva.getFormKey(); Array.from(document.querySelectorAll(inputSelector)).map(function (input) { input.value formKey }); } hyva.initMessages () > { try { const messages hyva.getCookie(mage-messages); window.mageMessages messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, )) : ; dispatchMessages(window.mageMessages); // empty `mage-messages` cookie const skipSetDomain true; hyva.setCookie(mage-messages,, -1, skipSetDomain); } catch (error) { console.warn(Error parsing Cookie Messages:, error); } } window.addEventListener(DOMContentLoaded, hyva.initFormKey); window.addEventListener(load, hyva.initMessages); }( window.hyva window.hyva || {} ));/script>script> use strict; { const private_content_key mage-cache-storage; const private_content_expire_key mage-cache-timeout; const private_content_version_key private_content_version; const section_data_ids_key section_data_ids; const mage_cache_session_id_key mage-cache-sessid; const last_visited_store_key last_visited_store; const ttl 3600; if (typeof hyva undefined || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn(Hyvä helpers are not loaded yet. Make sure they are included before this script); } function loadSectionData () { const browserStorage hyva.getBrowserStorage(); if (!browserStorage) { typeof window.dispatchMessages ! undefined && window.dispatchMessages( { type: warning, text: Please enable LocalStorage in your browser. } ); return; } try { let isInvalid false; if (hyva.getCookie(last_visited_store_key) ! CURRENT_STORE_CODE) { isInvalid true; } hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); if (!hyva.getCookie(mage_cache_session_id_key)) { isInvalid true; const skipSetDomain true; const days false; hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) } const cookieVersion hyva.getCookie(private_content_version_key); const storageVersion browserStorage.getItem(private_content_version_key); if (cookieVersion && !storageVersion || cookieVersion ! storageVersion) { isInvalid true; } const privateContentExpires browserStorage.getItem(private_content_expire_key); if (privateContentExpires && new Date(privateContentExpires) new Date()) { browserStorage.removeItem(private_content_key); } if (isInvalid) { fetchPrivateContent(); } else if (cookieVersion && storageVersion && cookieVersion storageVersion) { const privateContent JSON.parse(browserStorage.getItem(private_content_key)); if ( privateContent && privateContentExpires && privateContent.cart && privateContent.customer ) { dispatchPrivateContent(privateContent); } else { fetchPrivateContent(); } } else { dispatchPrivateContent({}); } } catch (error) { console.warn(Error retrieving Private Content:, error); } } window.addEventListener(load, loadSectionData); window.addEventListener(reload-customer-section-data, loadSectionData); function dispatchPrivateContent(data) { const privateContentEvent new CustomEvent(private-content-loaded, { detail: { data: data } }); window.dispatchEvent(privateContentEvent); } function fetchPrivateContent(sections) { fetch(`${BASE_URL}customer/section/load/?sections${encodeURIComponent(sections.join(,))}`, { method: GET, headers: { Content-Type: application/json, X-Requested-With: XMLHttpRequest } }) .then(response > response.json()) .then( data > { if (data) { try { const browserStorage hyva.getBrowserStorage(); // merge new data preserving non-invalidated sections const oldSectionData JSON.parse(browserStorage.getItem(private_content_key) || {}); if ((! data.cart || ! data.cart.cartId) && oldSectionDatacheckout-data) { delete oldSectionDatacheckout-data; } const newSectionData Object.assign(oldSectionData, data); dispatchPrivateContent(newSectionData); // dont persist messages, theyve been dispatched already if (newSectionData.messages && newSectionData.messages.messages ) { newSectionData.messages.messages ; } browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); const expiresAt new Date(Date.now() + (ttl * 1000)).toISOString(); browserStorage.setItem(private_content_expire_key, expiresAt); const newCookieVersion hyva.getCookie(private_content_version_key); browserStorage.setItem(private_content_version_key, newCookieVersion); // We dont need the section_data_ids in Hyvä, but we store them for compatibility // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout hyva.setCookie( section_data_ids_key, JSON.stringify( Object.keys(data).reduce((sectionDataIds, sectionKey) > { sectionDataIdssectionKey datasectionKeydata_id; return sectionDataIds; }, {}) ), false, true ); } catch (error) { console.warn(Couldnt store privateContent, error); } } } ); } }/script>!-- View Model Identities: -->script> (() > { document.addEventListener(submit, event > event.target.action event.target.action.replace(%25uenc%25, hyva.getUenc())); })()/script>script> (events > { const dispatchUserInteractionEvent () > { events.forEach(type > window.removeEventListener(type, dispatchUserInteractionEvent)) window.dispatchEvent(new Event(init-external-scripts)) }; events.forEach(type > window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) })(touchstart, mouseover, wheel, scroll, keydown)/script>script> function initConfigurableOptions(productId, optionConfig) { function findPathParam(key) { const baseUrl (BASE_URL.substring(0, 2) // ? http: : ) + BASE_URL; const baseUrlParts (new URL(baseUrl)).pathname.replace(/\/$/, ).split(/); const pathParts window.location.pathname.split(/).slice(baseUrlParts.length + 3); for (let i 0; i pathParts.length; i + 2) { if (pathPartsi key && pathParts.length > i) { return pathPartsi + 1; } } } return { optionConfig, productId, itemId: (new URLSearchParams(window.location.search)).get(id) || findPathParam(id), allowedAttributeOptions: , selectedValues: , init() { this.findAllowedAttributeOptions(); this.$nextTick(() > { if (typeof this.optionConfig.defaultValues object) { for (const attributeId, value of Object.entries(this.optionConfig.defaultValues)) { this.changeOption(attributeId, value + ); } } }); }, findSimpleIndex() { this.productIndex this.calculateSimpleIndexForPartialSelection(this.selectedValues); }, calculateSimpleIndexForPartialSelection(selectedValues) { if (selectedValues.length 0) return 0; let productIndexIds Object.keys(this.optionConfig.index); Object.keys(this.optionConfig.attributes).forEach((attribute) > { const productsWithAttributeMatch selectedValuesattribute ? productIndexIds.filter((productIndex) > { return this.optionConfig.indexproductIndexattribute this.selectedValuesattribute }) : ; productIndexIds productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds }) return productIndexIds0; }, calculateSimpleIndexForFullSelection(selectedValues) { const productIndexes this.optionConfig.index; return Object.keys(productIndexes).find(productIndex > { const productCandidateOptions productIndexesproductIndex; for (const productOption in productCandidateOptions) { if ( ! selectedValuesproductOption || selectedValuesproductOption ! productCandidateOptionsproductOption ) { return false; } } return productIndex; }); }, productIndex: 0, findAllowedAttributeOptions() { this.allowedAttributeOptions this.calculateAllowedAttributeOptions(this.selectedValues); }, calculateAllowedAttributeOptions(selectedValues) { const allAttributes this.optionConfig.attributes; const allAttributesSorted Object.values(allAttributes).sort((a,b) > { return a.position - b.position }); const selectionWithoutAttr attrId > { return Object.keys(selectedValues).reduce((acc, id) > { if (id ! attrId) accid selectedValuesid; return acc; }, {}) } const newAllowedAttributeOptions ; allAttributesSorted.forEach(attribute > { const availableIndexes this.calculateAvailableProductIndexes(selectionWithoutAttr(attribute.id)); newAllowedAttributeOptionsattribute.id allAttributesattribute.id.options.filter(option > { return !!option.products.find(product > { return availableIndexes.includes(product); }) }); }); return newAllowedAttributeOptions; }, calculateAvailableProductIndexes(selectedOptions) { if (Object.keys(selectedOptions).length 0) { if (Object.values(this.optionConfig.salable || {}).length) { return .concat.apply(, .concat.apply(, Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) > a.indexOf(x) i) } return Object.keys(this.optionConfig.index); } const selectedIds Object.keys(selectedOptions); if (Object.values(this.optionConfig.salable || {}).length) { const selectedOptionIndexes selectedIds.map(attrId > { const optionValue selectedOptionsattrId; return this.optionConfig.salableattrId && this.optionConfig.salableattrIdoptionValue || }) return selectedOptionIndexes.reduce((acc, optionIndexes) > { return acc.filter(index > optionIndexes.includes(index)); }); } else { const productIndexes this.optionConfig.index; return Object.keys(productIndexes).filter(index > { return selectedIds.find(attrId > productIndexesindexattrId `${selectedOptionsattrId}`) }); } }, findAttributeByOptionId(optionId) { for (const attributeId in this.optionConfig.attributes) { const attributeOptions this.optionConfig.attributesattributeId.options || ; if (attributeOptions.find(option > option.id optionId)) { return attributeId; } } }, getAllowedAttributeOptions(attributeId) { return this.allowedAttributeOptionsattributeId || }, getProductIdsForOption(option) { const attributeId this.findAttributeByOptionId(option.id); const allOptions this.optionConfig.attributesattributeId; const opt (allOptions && allOptions.options || ).find(o > o.id option.id); return opt && opt.products ? opt.products : ; }, findProductIdsForPartialSelection(optionSelection) { const candidateProducts Object.values(optionSelection).reduce((candidates, optionId) > { const newCandidates this.getProductIdsForOption({id: optionId}); return candidates null ? newCandidates : candidates.filter(productId > newCandidates.includes(productId)); }, null); return candidateProducts || ; }, findCheapestProductForPartialSelection(optionSelection) { const candidateProducts this.findProductIdsForPartialSelection(optionSelection); return candidateProducts.reduce((cheapest, simpleIdx) > { // in the first iteration we start with simpleIdx as the currently cheapest product if (! this.optionConfig.optionPricescheapest) return simpleIdx; const knownCheapestPrice this.optionConfig.optionPricescheapest.finalPrice.amount; return knownCheapestPrice > this.optionConfig.optionPricessimpleIdx.finalPrice.amount ? simpleIdx : cheapest; }, 0) }, findProductIdToUseForOptionPrice(option) { // try to find a product for a complete selection const attributeId this.findAttributeByOptionId(option.id); const optionSelection Object.assign({}, this.selectedValues, {attributeId: option.id}); const matchingSimpleIndex this.calculateSimpleIndexForFullSelection(optionSelection); // if there is no complete selection, use the cheapest product for the option return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); }, getAttributeOptionLabel(option) { const optionProduct this.findProductIdToUseForOptionPrice(option); if ((! optionProduct) || (optionProduct this.productIndex)) { return option.label; } const currentPrice this.getOptionPriceAdjustmentBasePrice(); if (this.optionConfig.optionPricesoptionProduct) { const optionPrice this.optionConfig.optionPricesoptionProduct.finalPrice.amount; if (optionPrice ! currentPrice){ return option.label + + hyva.formatPrice(optionPrice - currentPrice, true); } } return option.label; }, getOptionPriceAdjustmentBasePrice() { if (this.optionConfig.optionPricesthis.productIndex) { return this.optionConfig.optionPricesthis.productIndex.finalPrice.amount } const cheapestForSelection this.findCheapestProductForPartialSelection(this.selectedValues); return this.optionConfig.optionPricescheapestForSelection ? this.optionConfig.optionPricescheapestForSelection.finalPrice.amount : this.optionConfig.prices.finalPrice.amount; // default price if no option selection }, changeOption(attributeId, value) { if (value ) { this.selectedValues this.selectedValues.reduce((newSelection, val, attr) > { if (attr ! attributeId) { newSelectionattr val; } return newSelection; }, ); } else if (value && this.getAllowedAttributeOptions(attributeId).find(option > option.id value)) { this.selectedValuesattributeId value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateGallery(); window.dispatchEvent( new CustomEvent( configurable-selection-changed, { detail: { productId: this.productId, optionId: attributeId, value: value, productIndex: this.productIndex, selectedValues: this.selectedValues, candidates: this.findProductIdsForPartialSelection(this.selectedValues), } } ) ); }, calculateIsMinimalPrice() { return ( this.selectedValues.filter(value > !!value).length Object.keys(this.optionConfig.attributes).length ); }, updatePrices() { const value this.productIndex ? this.optionConfig.optionPricesthis.productIndex : this.optionConfig.prices; window.dispatchEvent( new CustomEvent( update-prices- + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updateGallery () { if (this.productIndex) { const images this.optionConfig.imagesthis.productIndex; images && window.dispatchEvent(new CustomEvent( update-gallery, { detail: this.sortImagesByPosition(images) } )); } else { window.dispatchEvent(new Event(reset-gallery)); } }, sortImagesByPosition(images) { return images.sort((x, y) > { return x.position y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) }); }, onGetCartData(data) { }, preselectCartItems(data) { // pre-select options based on cart data for current (quote) itemId const cart data && data.cart; if (cart && cart.items) { const cartItem cart.items.find((item) > { return ( item.item_id this.itemId && item.product_id this.productId ) }); if (cartItem && cartItem.options && cartItem.options.length) { cartItem.options.map(option > { this.changeOption(option.option_id, option.option_value); }) } } }, preselectQuerystringItems() { // pre-select option like ?size167 const urlQueryParams new URLSearchParams(window.location.search.replace(?,)); this.preselectItemsBasedOnLocation(attribute > urlQueryParams.get(attribute.code)); }, preselectLocationHashItems() { // pre-select option like #144167 const urlHashParams new URLSearchParams(window.location.hash.replace(#,)); this.preselectItemsBasedOnLocation(attribute > urlHashParams.get(attribute.id)); }, preselectItemsBasedOnLocation(getLocationValue) { Object.values(this.optionConfig.attributes).map(attribute > { this.changeOption(attribute.id, getLocationValue(attribute)) }); } } }/script>script> function initSwatchOptions(swatchConfig) { return { swatchConfig, getAttributeSwatchData(attributeId) { const swatchConfig Object.assign({}, this.swatchConfigattributeId); swatchConfigdetails JSON.parse(swatchConfigadditional_data); return swatchConfig; }, getAllAttributeOptions(attributeId) { return ( this.optionConfig.attributesattributeId && this.optionConfig.attributesattributeId.options ) || }, optionIsActive(attributeId, optionId) { // return true if a product with this option is in stock return !!this.getAllowedAttributeOptions(attributeId).find( option > option.id optionId ) }, optionIsEnabled(attributeId, optionId) { // return true if a product with this option is enabled for (const productId in this.optionConfig.index) { if (this.optionConfig.indexproductIdattributeId optionId) { return true; } } return false; }, mapSwatchTypeNumberToTypeCode(typeNumber) { switch ( + typeNumber) { case 1: return color case 2: return image case 3: return empty case 0: default: return text } }, getTypeOfFirstOption(attributeId) { for (const optionId in this.swatchConfigattributeId) { const option this.swatchConfigattributeIdoptionId; if (typeof option.type ! undefined) { return this.mapSwatchTypeNumberToTypeCode(option.type); } } }, getVisualSwatchType(attributeId, targetOptionId) { // If a type configuration is present for the given option id, use it const config this.swatchConfigattributeId; if (configtargetOptionId && typeof configtargetOptionId.type ! undefined) { return this.mapSwatchTypeNumberToTypeCode(configtargetOptionId.type); } // Otherwise - if no config is present for the target option - use the type of the first option // with a type property from the attribute, thus assuming its the same type as the target option. // (This edge case condition can occur on single swatch products if some options are not salable) return this.getTypeOfFirstOption(attributeId); }, getSwatchType(attributeId, optionId) { // Deserialize the attribute details the first time they are used if (this.swatchConfigattributeId && ! this.swatchConfigattributeId.details) { this.swatchConfigattributeId this.getAttributeSwatchData(attributeId); } const type this.swatchConfigattributeId && this.swatchConfigattributeId.details && this.swatchConfigattributeId.details.swatch_input_type || empty; return type visual ? this.getVisualSwatchType(attributeId, optionId) : type; }, isTextSwatch(attributeId, optionId) { return this.getSwatchType(attributeId, optionId) text; }, isVisualSwatch(attributeId, optionId) { const type this.getSwatchType(attributeId, optionId); return image, color.includes(type); }, getSwatchBackgroundStyle(attributeId, optionId) { const config this.getSwatchConfig(attributeId, optionId); const type this.getSwatchType(attributeId, optionId); if (type color) { return background-color: + config.value; } else if (type image) { return background: #ffffff url( + config.value + ) no-repeat center; } else { return ; } }, getSwatchText(attributeId, optionId) { const config this.getSwatchConfig(attributeId, optionId); return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); }, getOptionLabelFromOptionConfig(attributeId, optionId) { // Fallback if no value is present in swatchConfig data // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 const option this.getAllAttributeOptions(attributeId).filter(option > option.id optionId); return option && option0 && option0.label ||; }, getSwatchConfig(attributeId, optionId) { return this.swatchConfigattributeId && this.swatchConfigattributeIdoptionId ? this.swatchConfigattributeIdoptionId : false; }, activeTooltipItem: false, tooltipPositionElement: false, isTooltipVisible() { return this.activeTooltipItem && this.getSwatchConfig( this.activeTooltipItem.attribute, this.activeTooltipItem.item ); }, isFirstItemCol() { return this.activeTooltipItem.index 0; }, getTooltipImageStyle(attributeId, optionId) { const config this.getSwatchConfig(attributeId, optionId); const type this.getSwatchType(attributeId, optionId); if (type color) { return background-color: + config.value + ; width: 110px; height: 90px;; } else if (type image) { return background: #ffffff url( + config.thumb + ) center center no-repeat; width: 110px; height: 90px;; } else { return display:none; } }, getTooltipPosition() { return this.tooltipPositionElement ? `top: ${this.tooltipPositionElement.offsetTop}px;` + `left: ${ this.tooltipPositionElement.offsetLeft - ( this.tooltipPositionElement.closest(.snap) && this.tooltipPositionElement.closest(.snap).scrollLeft || 0 ) }px;` : }, getTooltipLabel() { return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label }, focusedLabel: false, focusLabel(optionId) { this.focusedLabel optionId; }, blurLabel() { this.focusedLabel false; }, showSwatches: false, initShowSwatchesIntersect() { if (IntersectionObserver in window && !window.scrollY) { let io new IntersectionObserver( entries > { entries.map(entry > { if (entry.isIntersecting) { this.showSwatches true; io.unobserve(this.$root); } }) } ); io.observe(this.$root); } else { this.showSwatches true } } } }/script>script> use strict; (() > { const equalizeButtonWidths (buttons) > { const buttonList buttons.querySelectorAll(data-elementlink, data-elementempty_link); let buttonMinWidth 0; buttonList.forEach(button > { const buttonWidth button.offsetWidth; if (buttonWidth > buttonMinWidth) { buttonMinWidth buttonWidth; } }); buttonList.forEach(button > { button.style.minWidth `${buttonMinWidth}px`; }); }; window.addEventListener(DOMContentLoaded, () > { document.querySelectorAll(data-content-typebuttonsdata-same-widthtrue).forEach(buttons > { equalizeButtonWidths(buttons); }); }); })();/script>script> use strict; (() > { const initCarousels (elements) > { if (!Glider) { return; } const initProductCarousel (carousel) > { const gliderElement carousel.querySelector(data-roleglider-content); if (!gliderElement) { return; } const gliderDots carousel.querySelector(.glider-dots); const gliderPrev carousel.querySelector(.glider-prev); const gliderNext carousel.querySelector(.glider-next); const glider new Glider(gliderElement, { slidesToShow: 2, slidesToScroll: 2, scrollLock: true, draggable: true, dragVelocity: 2.5, dots: gliderDots, arrows: { prev: gliderPrev, next: gliderNext, }, responsive: { breakpoint: 768, settings: { slidesToShow: 3, slidesToScroll: 3, } }, { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4, } }, , }); carousel.classList.remove(overflow-x-scroll); gliderPrev.classList.remove(hidden); gliderNext.classList.remove(hidden); if (carousel.dataset.autoplay ! false) { gliderAutoplay( glider, carousel.dataset.autoplaySpeed, carousel.dataset.infiniteLoop ); } }; const initSliderCarousel (slider) > { slider.innerHTML `div data-roleglider-content>${slider.innerHTML}/div>`; slider.classList.add(glider-contain); slider.insertAdjacentHTML( beforeend, \u000A\u003Cdiv\u0020class\u003D\u0022carousel\u002Dnav\u0020flex\u0020items\u002Dcenter\u0020justify\u002Dcenter\u0020flex\u002D1\u0020p\u002D4\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Previous\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dprev\u0020w\u002D8\u0020h\u002D8\u0020mr\u002D1\u0020text\u002Dblack\u0020rounded\u002Dfull\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020d\u003D\u0022M15\u002019l\u002D7\u002D7\u00207\u002D7\u0022\u002F\u003E\u000A\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u0020\u0020\u0020\u0020\u003Cdiv\u0020role\u003D\u0022tablist\u0022\u0020class\u003D\u0022glider\u002Ddots\u0020select\u002Dnone\u0020flex\u0020flex\u002Dwrap\u0020mx\u002D1\u0020justify\u002Dcenter\u0020p\u002D0\u0020focus\u003Aoutline\u002Dnone\u0022\u003E\u003C\u002Fdiv\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Next\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dnext\u0020w\u002D8\u0020h\u002D8\u0020ml\u002D1\u0020text\u002Dblack\u0020rounded\u002Dfull\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020d\u003D\u0022M9\u00205l7\u00207\u002D7\u00207\u0022\u002F\u003E\u000A\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u003C\u002Fdiv\u003E\u000A ); const gliderElement slider.querySelector(data-roleglider-content); const gliderDots slider.querySelector(.glider-dots); const gliderPrev slider.querySelector(.glider-prev); const gliderNext slider.querySelector(.glider-next); const glider new Glider(gliderElement, { slidesToShow: 1, slidesToScroll: 1, scrollLock: true, scrollLockDelay: 250, draggable: true, dragVelocity: 2.5, dots: gliderDots, arrows: { prev: gliderPrev, next: gliderNext, }, }); slider.classList.add(glider-initialized); if (slider.dataset.showArrows true) { gliderPrev.classList.remove(hidden); gliderNext.classList.remove(hidden); } if (slider.dataset.autoplay ! false) { gliderAutoplay( glider, slider.dataset.autoplaySpeed, slider.dataset.infiniteLoop ); } }; const gliderAutoplay (glider, milliseconds, loop) > { const pagesCount glider.track.childElementCount; let slideTimeout null; let nextIndex 1; let paused false; const slide () > { slideTimeout setTimeout( () > { if (loop && nextIndex > pagesCount) { nextIndex 0; } glider.scrollItem(nextIndex); }, parseInt(milliseconds) ); }; glider.ele.addEventListener(glider-animated, () > { nextIndex glider.slide + glider.opt.slidesToScroll; window.clearInterval(slideTimeout); if (!paused && (loop || nextIndex pagesCount)) { slide(); } }); const pause () > { if (!paused) { clearInterval(slideTimeout); paused true; } }; const unpause () > { if (paused) { slide(); paused false; } }; glider.ele.parentElement.addEventListener(mouseover, pause, {passive: true}); glider.ele.parentElement.addEventListener(touchstart, pause, {passive: true}); glider.ele.parentElement.addEventListener(mouseout, unpause, {passive: true}); glider.ele.parentElement.addEventListener(touchend, unpause, {passive: true}); slide(); }; elements.forEach(element > { if (element.dataset.contentType products) { initProductCarousel(element); } if (element.dataset.contentType slider) { initSliderCarousel(element); } }); }; window.addEventListener(DOMContentLoaded, () > { const carouselElements document.querySelectorAll( `data-content-typeproductsdata-appearancecarousel, data-content-typeslider` ); if (carouselElements.length > 0) { const script document.createElement(script); script.type text/javascript; script.addEventListener(load, () > { initCarousels(carouselElements); }); script.src https\u003A\u002F\u002Fprelive0commitenergy.energypricing.com\u002Fstatic\u002Ffrontend\u002FEpstore\u002Fdefault\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fglider.min.js; document.head.appendChild(script); } }); })();/script>script> use strict; (() > { const initMaps (elements) > { const renderMap (element) > { const dataLocations element.dataset.locations; // Hide map if no locations set if (!dataLocations || dataLocations ) { element.classList.add(hidden); return; } const map new google.maps.Map( element, getMapOptions( element.dataset.showControls ! true, element.dataset.showControls true ) ); const locations JSON.parse(dataLocations); const latitudeLongitudeBounds new google.maps.LatLngBounds(); const bounds ; locations.forEach(location > { const position { lat: parseFloat(location.position.latitude), lng: parseFloat(location.position.longitude), }; bounds.push(position); const infowindow new google.maps.InfoWindow({ content: getInfoWindowContent(location), }); const marker new google.maps.Marker({ position: position, map, title: location.location_name, }); marker.addListener(click, () > { infowindow.open(map, marker); }); }); // Set bounds if multiple locations if (bounds.length > 1) { bounds.forEach(function (bound) { latitudeLongitudeBounds.extend(bound); }); map.fitBounds(latitudeLongitudeBounds); } // Center if single location if (bounds.length 1) { map.setCenter(bounds0); } }; const getMapOptions (disableDefaultUI, mapTypeControl) > { const style ; return { zoom: 8, scrollwheel: false, disableDoubleClickZoom: false, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DEFAULT, }, styles: style ? JSON.parse(style) : , disableDefaultUI: disableDefaultUI, mapTypeControl: mapTypeControl, }; }; const getInfoWindowContent (location) > { const title location.location_name ? `h3 classtext-2xl font-medium text-gray-900 title-font>${location.location_name}/h3>` : ; const comment location.comment ? `p classpx-1 pt-3 text-primary>${location.comment}/p>` : ; const phone location.phone ? `p classpx-1 pt-3 text-primary>Phone: ${location.phone}/p>` : ; const street location.address ? `${location.address}br/>` : ; const city location.city ? `${location.city}br/>` : ; const state location.state ? `${location.state}br/>` : ; const zipCode location.zipcode ? `${location.zipcode}br/>` : ; const country location.country ? location.country : ; return `div> ${title} ${comment} ${phone} p classpx-1 pt-3 text-primary> ${street} ${city} ${state} ${zipCode} ${country} /p> /div>`; }; const hideAllMaps () > { document.querySelectorAll(data-content-typemap).forEach(element > { element.classList.add(hidden); }); }; window.gm_authFailure () > { hideAllMaps(); }; if (typeof google.maps undefined) { hideAllMaps(); return; } elements.forEach(element > { if (element.dataset.contentType map) { renderMap(element); } }); }; window.addEventListener(DOMContentLoaded, () > { const mapElements document.querySelectorAll(data-content-typemap); if (mapElements.length > 0) { const script document.createElement(script); script.type text/javascript; script.addEventListener(load, () > { initMaps(mapElements); }); script.src https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\u002Fapi\u002Fjs\u003Fv\u003D3\u0026key\u003D; document.head.appendChild(script); } }); })();/script>script> use strict; (() > { const initParallaxImage (element) > { if (!window.jarallax) { return; } element.classList.add(jarallax); element.dataset.jarallax ; const parallaxSpeed parseFloat(element.dataset.parallaxSpeed) || 0.5; const elementStyle window.getComputedStyle(element); window.jarallax(element, { imgPosition: elementStyle.backgroundPosition || 50% 50%, imgRepeat: elementStyle.backgroundRepeat || no-repeat, imgSize: elementStyle.backgroundSize || cover, speed: parallaxSpeed, }); }; const initVideoBackground (element) > { if (!window.jarallax) { return; } let slider null; if (element.classList.contains(pagebuilder-slide-wrapper)) { const viewportElement document.createElement(div); slider element.closest(data-content-typeslider); viewportElement.classList.add(jarallax-viewport-element); element.dataset.elementInViewport .jarallax-viewport-element; element.appendChild(viewportElement); } element.classList.add(jarallax); element.dataset.jarallax ; const parallaxSpeed parseFloat(element.dataset.parallaxSpeed) || 0.5; window.jarallax(element, { imgSrc: element.dataset.videoFallbackSrc, speed: parallaxSpeed, videoLoop: element.dataset.videoLoop, videoPlayOnlyVisible: element.dataset.videoPlayOnlyVisible, videoLazyLoading: element.dataset.videoLazyLoad, disableVideo: false, elementInViewport: element.dataset.elementInViewport && element.querySelector(element.dataset.elementInViewport), }); if (slider) { if (slider.dataset.afterChangeIsSet) { return; } slider.addEventListener(glider-loaded, () > { slider.querySelectorAll(.jarallax).forEach(videoSlide > { videoSlide.jarallax && videoSlide.jarallax.onScroll(); }); }); slider.addEventListener(glider-animated, () > { slider.querySelectorAll(.jarallax).forEach(videoSlide > { videoSlide.jarallax && videoSlide.jarallax.onScroll(); }); }); slider.dataset.afterChangeIsSet true; } }; window.addEventListener(DOMContentLoaded, () > { const parallaxImageElements document.querySelectorAll( `data-content-typerowdata-background-typeimagedata-enable-parallax1, data-content-typerow > data-background-typeimagedata-enable-parallax1` ); const videoBackgroundsElements document.querySelectorAll( `data-content-typerowdata-background-typevideodata-enable-parallax1, data-content-typerow > data-background-typevideodata-enable-parallax1, data-content-typebanner data-background-typevideo, data-content-typeslide data-background-typevideo` ); if (parallaxImageElements.length > 0 || videoBackgroundsElements.length > 0) { const jarallaxScript document.createElement(script); jarallaxScript.type text/javascript; jarallaxScript.addEventListener(load, () > { parallaxImageElements.forEach(row > { initParallaxImage(row); }); const jarallaxVideoScript document.createElement(script); jarallaxVideoScript.type text/javascript; jarallaxVideoScript.addEventListener(load, () > { videoBackgroundsElements.forEach(element > { initVideoBackground(element); }); }); jarallaxVideoScript.src https\u003A\u002F\u002Fprelive0commitenergy.energypricing.com\u002Fstatic\u002Ffrontend\u002FEpstore\u002Fdefault\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fjarallax\u002Dvideo.min.js; document.head.appendChild(jarallaxVideoScript); }); jarallaxScript.src https\u003A\u002F\u002Fprelive0commitenergy.energypricing.com\u002Fstatic\u002Ffrontend\u002FEpstore\u002Fdefault\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fjarallax.min.js; document.head.appendChild(jarallaxScript); } }); })();/script>script> use strict; (() > { const applyShowOnHover (element) > { const showOverlayOnHover (element) > { const overlay element.querySelector(.pagebuilder-overlay); const color overlay.dataset.overlayColor; element.addEventListener(mouseover, () > { overlay.style.backgroundColor color; }); element.addEventListener(mouseout, () > { overlay.style.backgroundColor transparent; }); }; const showButtonOnHover (element) > { const button element.querySelector(.pagebuilder-banner-button); element.addEventListener(mouseover, () > { button.style.opacity 1; button.style.visibility visible; }); element.addEventListener(mouseout, () > { button.style.opacity 0; button.style.visibility hidden; }); }; if (element.dataset.showOverlay hover) { showOverlayOnHover(element); } if (element.dataset.showButton hover) { showButtonOnHover(element); } }; window.addEventListener(DOMContentLoaded, () > { document.querySelectorAll(data-content-typebanner,data-content-typeslider).forEach(element > { applyShowOnHover(element); }); }); })();/script>script> use strict; (() > { document.querySelectorAll(data-content-typetab-item).forEach(tabItem > { tabItem.setAttribute(x-show, `tab ${tabItem.id}`); }); document.querySelectorAll(data-content-typetabs).forEach(tab > { const defaultActiveTab parseInt(tab.dataset.activeTab) || 0; tab.querySelectorAll(.tab-header).forEach((tabHeader, index) > { const tabLink tabHeader.querySelector(a); const tabId tabLink.getAttribute(href).replace(#, ); tabHeader.setAttribute(:class, `{ active: tab ${tabId} }`); tabLink.setAttribute(x-on:click.prevent, `tab ${tabId}`); if (index defaultActiveTab) { tab.setAttribute(x-data, `{ tab: ${tabId} }`); } }); }); })();/script>script> use strict; (function () { const modals ; const excludedFromFocusTrapping new Set(); function loadInertPolyfill(callback) { if (window.hyva.modal.disableInertPolyfill) { callback && callback(); } else { const polyfill document.createElement(script); polyfill.src https\u003A\u002F\u002Fprelive0commitenergy.energypricing.com\u002Fstatic\u002Ffrontend\u002FEpstore\u002Fdefault\u002Fen_US\u002FHyva_Theme\u002Fjs\u002Fwicg\u002Dinert\u002D3.1.1\u002Finert.min.js; callback && polyfill.addEventListener(load, callback); const firstScriptTag document.getElementsByTagName(script)0; firstScriptTag.parentNode.insertBefore(polyfill, firstScriptTag); } } let isInertPolyfillLoaded 0; function setSiblingsInert(dialogElement, toState) { if (isInertPolyfillLoaded 0) { isInertPolyfillLoaded 1; loadInertPolyfill(() > { isInertPolyfillLoaded 2; setSiblingsInert(dialogElement, toState) }) return; } if (isInertPolyfillLoaded 1) { return; } let el dialogElement; while (el && (el el.parentElement)) { if (el document.body || el.parentElement null) continue; Array.from(el.parentElement.children).forEach(sibling > { if (sibling ! el) { sibling.inert toState; } }) } (function setChildrenInert(el, toState) { if (el) { el.inert toState; Array.from(el.children).forEach(child > setChildrenInert(child, toState)); } })(findParentWithOverlaySpread(dialogElement), ! toState) excludedFromFocusTrapping.forEach(selector > { Array.from(document.querySelectorAll(selector)).map(el > el.inert false); }) } function findParentWithOverlaySpread(el) { while (el && (el el.parentElement)) { if (el document.body || el.parentElement null) continue; if (el.hasAttribute(x-spread) && el.getAttribute(x-spread).indexOf(overlay() ! -1) { return el; } } } function freeFocusFromModalTrap(modal) { const dialogElement modal.instance.$refsmodal.name; isOverlayDisabled(dialogElement) || modal.instance.$nextTick(() > setSiblingsInert(dialogElement, false)); } function trapFocusInNextModalWithOverlay() { for (let idx modals.length -1; idx > 0; idx--) { const nextOnStack modalsidx; const nextDialogElement nextOnStack.instance.$refsnextOnStack.name; if (! isOverlayDisabled(nextDialogElement)) { nextOnStack.instance.$nextTick(() > setSiblingsInert(nextDialogElement, true)); break; } } } function focusables(dialogElement) { const selector a, button, input, textarea, select, details, tabindex:not(tabindex-1); return Array.from(dialogElement.querySelectorAll(selector)) .filter(el > !el.hasAttribute(disabled)); } function firstVisible(elements) { const a Array.from(elements); for (let i 0; i a.length; i++) { if (ai.offsetWidth || ai.offsetHeight || ai.getClientRects().length) return ai; } return null; } function isInViewport(element) { const rect element && element.getBoundingClientRect(); return rect && rect.top > 0 && rect.left > 0 && rect.right window.innerWidth && rect.bottom window.innerHeight; } function setFocusAfterTransition(dialogElement, duration) { window.setTimeout(() > { const focusElement firstVisible(dialogElement.querySelectorAll(x-focus-first)) || focusables(dialogElement)0 || null; focusElement && isInViewport(focusElement) && focusElement.focus(); }, duration + 1); } function determineTrigger($refs, dialog, trigger) { if (typeof trigger undefined && typeof dialog object && dialog.target && dialog.target.focus) { return dialog.target; } if (typeof dialog string && typeof trigger object && trigger.target && trigger.target.focus) { return trigger.target; } if (typeof trigger string && $refstrigger) { return $refstrigger; } else { return null; } } function isOverlayDisabled(dialog) { return dialog && dialog.hasAttribute(x-no-overlay) } function areRemainingModalsWithoutOverlay(modals) { const overflowDisabled modals.map(modal > modal.instance.$refsmodal.name).filter(isOverlayDisabled); return overflowDisabled.length modals.length; } window.hyva.modal function(options) { const config Object.assign({ dialog: dialog, duration: 300, transitionEnter: transition ease-out duration-300, transitionEnterStart: opacity-0, transitionEnterEnd: opacity-100, transitionLeave: transition ease-in duration-300, transitionLeaveStart: opacity-100, transitionLeaveEnd: opacity-0, }, options); let lastHide 0; return { opened: {}, show(dialog, trigger) { const focusTargetAfterHide determineTrigger(this.$refs, dialog, trigger); const name typeof dialog string ? dialog : config.dialog; const dialogElement this.$refsname; if (! dialogElement) { console.error(`Use $modal->getShowJs() in the open trigger, or specify a custom name with\n$modal->withDialogRefName(my-name) and use show(my-name, $event).`); return; } const useOverlay ! dialogElement.hasAttribute(x-no-overlay); dialogElement.scrollTop 0; if (this.openedname) { return; } this.openedname true; useOverlay && this.$nextTick(() > setSiblingsInert(dialogElement, true)); setFocusAfterTransition(dialogElement, config.duration); const frame {name, instance: this, focusTarget: focusTargetAfterHide, time: Date.now()}; modals.push(frame); if (useOverlay) { document.body.classList.add(overflow-hidden); } return new Promise(resolve > frame.resolve resolve); }, cancel() { this.hide(false); }, ok() { this.hide(true); }, hide(value) { if (Date.now() - lastHide config.duration) { return; } lastHide Date.now(); const modal modals.pop() || {}; const name modal.name; this.openedname false; freeFocusFromModalTrap(modal) trapFocusInNextModalWithOverlay(); const nextFocusAfterHide modal.focusTarget; nextFocusAfterHide && this.$nextTick(() > nextFocusAfterHide.focus()); if (modals.length 0 || areRemainingModalsWithoutOverlay(modals)) { document.body.classList.remove(overflow-hidden); } modal.resolve(value); }, overlay(dialog) { const name typeof dialog string ? dialog : config.dialog; return { x-show() { return this.openedname }, x-transition:enter: config.transitionEnter, x-transition:enter-start: config.transitionEnterStart, x-transition:enter-end: config.transitionEnterEnd, x-transition:leave: config.transitionLeave, x-transition:leave-start: config.transitionLeaveStart, x-transition:leave-end: config.transitionLeaveEnd, @hyva-modal-show.window(event) { event.detail && event.detail.dialog name && this.show(name) } }; } }; } window.hyva.modal.peek () > modals.length > 0 && modalsmodals.length -1 window.hyva.modal.pop function () { if (modals.length > 0) { const modal modalsmodals.length -1; modal.instance.hide(); } } window.hyva.modal.excludeSelectorsFromFocusTrap function (selectors) { typeof selectors string || selectors instanceof String ? excludedFromFocusTrapping.add(selectors) : selectors.map(selector > excludedFromFocusTrapping.add(selector)); } window.hyva.modal.eventListeners { keydown: event > { if (event.key Escape) { window.hyva.modal.pop(); } }, click: event > { if (modals.length > 0) { const modal modalsmodals.length -1; const dialog modal.instance.$refsmodal.name; if (modal.time + 50 Date.now() && // if last click processing is more than 50ms ago ! isOverlayDisabled(dialog) && // if dialog has overlay ! dialog.contains(event.target)) { // if click is outside of dialog modal.instance.hide(); } } } }; document.addEventListener(keydown, window.hyva.modal.eventListeners.keydown); document.addEventListener(click, window.hyva.modal.eventListeners.click); })();/script>script>(() > { function mapGenerationForTerms(e){const aJanuary,February,March,April,May,June,July,August,September,October,November,December,{chartId:r,seriesData:n,borderColors:d,seriesColors:p,currentLoanType:c,loanTerms:y}e,m{1:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:1 months fixed},2:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:2 months fixed},3:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:3 months fixed},4:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:4 months fixed},5:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:5 months fixed},6:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:6 months fixed},7:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:7 months fixed},8:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:8 months fixed},9:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:9 months fixed},10:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:10 months fixed},11:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:11 months fixed},12:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:12 months fixed},13:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:13 months fixed},14:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:14 months fixed},15:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:15 months fixed},16:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:16 months fixed},17:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:17 months fixed},18:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:18 months fixed},19:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:19 months fixed},20:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:20 months fixed},21:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:21 months fixed},22:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:22 months fixed},23:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:circle,label:23 months fixed},24:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:24 months fixed},25:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:25 months fixed},26:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:26 months fixed},27:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:27 months fixed},28:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:28 months fixed},29:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:29 months fixed},30:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:30 months fixed},31:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:31 months fixed},32:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:32 months fixed},33:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:33 months fixed},34:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:34 months fixed},35:{pointHoverRadius:7,pointHoverBorderWidth:4,pointStyle:circle,label:35 months fixed},36:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:36 months fixed},37:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:37 months fixed},38:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:38 months fixed},39:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:39 months fixed},40:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:40 months fixed},41:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:41 months fixed},42:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:42 months fixed},43:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:43 months fixed},44:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:44 months fixed},45:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:45 months fixed},46:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:46 months fixed},47:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:47 months fixed},48:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:48 months fixed},49:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:49 months fixed},50:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rectRot,label:50 months fixed},51:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:51 months fixed},52:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:52 months fixed},53:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:53 months fixed},54:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:54 months fixed},55:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:55 months fixed},56:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:56 months fixed},57:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:57 months fixed},58:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:58 months fixed},59:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:59 months fixed},60:{pointHoverRadius:8,pointHoverBorderWidth:3,pointStyle:rect,label:60 months fixed}},l,fn.datasetse.productFamilyc;let s0;if(y.forEach(o>{const t{termKey:o,borderColor:ps,pointHoverBorderColor:ds,pointHoverBackgroundColor:ps,...mo};ctermsfind&&(t.label`${t.label} refinance`),t.datafo,l.push(t),s+1}),e.myChart!null){e.myChart.data.datasetsl,e.myChart.update();return}var montharraynew Array();const v{type:line,data:{labels:n.labels,datasets:l},options:{animation:{duration:1000},padding:0px,spanGaps:!0,responsive:!0,maintainAspectRatio:!1,hover:{mode:nearest,intersect:!1},elements:{point:{radius:0,hitRadius:0}},plugins:{legend:{display:!1},autocolors:!1,tooltip:{enabled:!0,yAlign:bottom,xAlign:start,intersect:!1,displayColors:!1,padding:8,backgroundColor:#F7F7F7,cornerRadius:2,borderColor:o>{try{return o.tooltip.labelColors0.borderColor}catch{return#AED3F1}},borderWidth:1,titleColor:#515260,titleFont:{size:12px,family:Arial, Helvetica},bodyColor:#515260,bodyFont:{size:12px,family:Arial, Helvetica},callbacks:{title:o>`$${o0.raw.toFixed(4)}`,beforeBody:o>o0.dataset.label,label:o>{const to.label.split(-);return`${t1}/${t2}/${t0}`}}}},scales:{ x:{ticks:{callback:(o,t)>{const un.labelst.split(-); if(montharray.length 0){ montharray.push(u0+u1); return aNumber(u1)-1+ +u0; } var arrayvalue false; montharray.find((value, index) > { if (value u0+u1) { arrayvalue true; } }); if(arrayvalue false){ montharray.push(u0+u1); return aNumber(u1)-1+ +u0; } },maxTicksLimit: 40,autoSkip:true,padding:10,font:{color:#474955,size:12px,family:Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif}},grid:{display:!0,drawTicks:!2}}, y:{ticks:{callback:o>`$${o.toFixed(4)}`,display:!0,font:{color:#474955,size:12px,family:Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif},stepSize:e.stepSize,padding:10},grace:e.stepGrace,bounds:ticks,grid:{drawTicks:!1,color:#E6E6E6,drawBorder:!1}} }}};e.myChartnew Chart(document.getElementById(`${r}`),v)}document.addEventListener(alpine:init,()>{window.Alpine.data(energypricingPlanPriceAvgChart,e>({preActive:!!(document.querySelector(data-pre-v1)||document.querySelector(data-pre-v3)),init(){mapGenerationForTerms(e)}}))}); })();/script> script typetext/javascript srchttps://prelive0commitenergy.energypricing.com/static/frontend/Epstore/default/en_US/Energy_RatesWidget/js/chart.js>/script> input typehidden namezipvalidationSuppliers idzipvalidationSuppliers value6 />script> var baseurl https://prelive0commitenergy.energypricing.com/; var zipvalidationSuppliers 6;/script> script> function initZipcodeSearch() { return { utilityOpt: , selectedUtility: , utilityStateSelection: false, selectedState: false, isZipSearch: false, isLoading: false, isMultipleUtility: false, zipCode: , getBaseURL() { //const loc window.location; //const baseURL loc.protocol + // + loc.hostname + (loc.port ? : + loc.port : ) + /; return baseurl; }, getCategoryUrl() { const category compare-electricity-rates?customer_type7&plan_product_type9&; return category; }, async energyPricing(zipcode) { try { const response await fetch(this.getBaseURL()+`rest/V1/energypricing?search${zipcode}&type1`, { method: GET, dataType: json, headers: { Content-Type: application/json; charsetutf-8 }, }); if(!response.ok) { throw new Error(Network response was not ok); } const data await response.json(); // Get the response text if (data && data.length > 1) { this.isMultipleUtility true; this.isLoading false; // this.utilityOpt data; // Populate the utility options window.location.href this.getBaseURL() +this.getCategoryUrl() + utilitylistfound+zipcode; return true; }else if (data && data.length 1) { data.forEach(item > { const extraParam utility+item.id+&state+item.region_id+#categorylist; window.location.href this.getBaseURL() +this.getCategoryUrl() + extraParam; }); return false; }else if (data && data.length 0) { window.location.href this.getBaseURL() +this.getCategoryUrl() + utilitynotfound; return false; } } catch (error) { //console.error(error); return false; // Return false in case of an error } }, continueWithZip() { document.querySelector(inputnamezipCode).style border:0px; if(document.querySelector(inputnamefav_language:checked).value Business){ window.location.href this.getBaseURL() +contact-us; }else if (this.zipCode.length > 5) { this.isLoading true; // Using an async function this.energyPricing(this.zipCode).then(success > { if (success) { this.isLoading false; } }); } else { document.querySelector(inputnamezipCode).style border:2px solid #fc7c7c;; this.utilityOpt ; this.isLoading false; } }, utilityStateSelectionTrigger(param) { if (param !) { window.location.href this.getBaseURL() +this.getCategoryUrl() + param +#categorylist; } } }; }/script>script> function initBlogWigetZipcodeSearch() { return { utilityOpt: , selectedUtility: , utilityStateSelection: false, selectedState: false, isZipSearch: false, isLoading: false, isMultipleUtility: false, zipCode: , favLanguageWidget: Residential, getBaseURL() { //const loc window.location; //const baseURL loc.protocol + // + loc.hostname + (loc.port ? : + loc.port : ) + /; return baseurl; }, getCategoryUrl() { const category compare-electricity-rates?customer_type7&plan_product_type9&; return category; }, async energyPricing(zipcode) { try { const response await fetch(this.getBaseURL()+`rest/V1/energypricing?search${zipcode}&type1`, { method: GET, dataType: json, headers: { Content-Type: application/json; charsetutf-8 }, }); if(!response.ok) { throw new Error(Network response was not ok); } const data await response.json(); // Get the response text if (data && data.length > 1) { this.isMultipleUtility true; this.isLoading false; // this.utilityOpt data; // Populate the utility options window.location.href this.getBaseURL() +this.getCategoryUrl() + utilitylistfound+zipcode; return true; }else if (data && data.length 1) { data.forEach(item > { const extraParam utility+item.id+&state+item.region_id+#categorylist; window.location.href this.getBaseURL() +this.getCategoryUrl() + extraParam; }); return false; }else if (data && data.length 0) { window.location.href this.getBaseURL() +this.getCategoryUrl() + utilitynotfound; return false; } } catch (error) { //console.error(error); return false; // Return false in case of an error } }, continueWithZip() { document.querySelector(.zipCode).style border:0px; if(document.querySelector(inputnamefavLanguageWidget:checked).value Business){ window.location.href this.getBaseURL() +contact-us; }else if (this.zipCode.length > 5) { this.isLoading true; // Using an async function this.energyPricing(this.zipCode).then(success > { if (success) { this.isLoading false; } }); } else { document.querySelector(.zipCode).style border:2px solid #fc7c7c;; this.utilityOpt ; this.isLoading false; } }, utilityStateSelectionTrigger(param) { if (param !) { window.location.href this.getBaseURL() +this.getCategoryUrl() + param +#categorylist; } } }; }/script>script srchttps://www.dwin1.com/63956.js typetext/javascript deferdefer>/script>/div>/body>/html>
Subdomains
Date
Domain
IP
image.mail.energypricing.com
2025-10-31
23.46.228.170
prelive0commitenergy.energypricing.com
2026-02-24
3.169.173.10
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]