{"version":3,"sources":["data.js","error.js","helpers.js","_main.js"],"names":["parsePetrolPriceData","petrolPriceJsonData","parsedPetrolPriceData","stations","forEach","i","stationData","JSON","parse","push","error","console","message","sortPetrolPriceData","sortType","sortedPetrolPriceData","length","slice","sort","a","b","ModalPrice","Distance","filterData","filterOnlyOpenCheckbox","displayData","checked","filter","e","IsOpen","errorHTML","errorValues","document","getElementById","apiError","container","dataset","apierror","innerHTML","needToLogInView","errorMessage","errorTitle","needtologinviewtitle","createErrorMessageHTML","exceededLookups","exceededlookupsmessage","exceededlookupstitle","noResultsFound","authenticated","noresultstitle","backToSearch","backtosearch","homepageButton","homepageButtonHTML","createerrormessagehtmlbuttonlink","createerrormessagehtmlbutton","formatDate","date","Date","toLocaleDateString","day","month","year","setFuelTypes","selectedFuelType","search","fuelTypeSelect","getElementsByName","fuelTypeSelectSort","fuelType","value","setPostCode","postCodeField","selectedPostCode","placeholder","setRadius","radius","expand","radiusSelect","checkedIndex","radiusSelected","setSort","sortSelected","errorValidation","location","fieldGroup","closest","locationGroup","previousElementSibling","validationGroup","postCodeRegex","undefined","test","classList","add","remove","scrollIntoView","behavior","block","inline","setupShowMoreOptions","querySelectorAll","showMoreOptionLink","addEventListener","preventDefault","async","getLatLng","Promise","resolve","reject","google","maps","Geocoder","geocode","address","results","status","geometry","lat","long","lng","setSessionCookie","name","cookie","encodeURIComponent","cookieExists","cookies","split","trim","startsWith","deleteCookie","scrollToTop","window","scrollTo","top","petrolPrices","isAuthenticatedUser","loggedInStatus","geoLat","geoLong","geoLocation","geoLocationError","APIURLS","apiSubKey","apisubkey","priceStatisticsUrl","apipricestatistics","petrolPricesUrl","apipetrolprices","querySelector","getLocationButton","openFilters","closedFilters","parent","viewMoreButton","resetValues","resultsTableTextValues","resultsTablePricePerLitre","resultstablepriceperlitre","resultsTableDistance","resultstabledistance","resultsTableLocation","resultstablelocation","resultsTableFillUpToSave","resultstablefilluptosave","resultsTableFillUpToSaveNoSaving","resultstablefilluptosavenosaving","resultsTablePricesUpdated","resultstablepricesupdated","resultsTableGetDirectionsText","resultstablegetdirectionstext","resultsTablePriceCheapest","resultstablepricecheapest","navigator","geolocation","getCurrentPosition","position","latlng","coords","latitude","longitude","address_components","component","types","includes","postalCode","short_name","postCodeInput","postcodeInputSort","log","event","target","displayPriceStatisticsData","priceStatsJsonData","pricesTable","lastUpdatedDate","genericTextValues","averageText","average","lowestText","lowest","highestText","highest","petrolText","petrol","dieselText","diesel","updatedTextBeginning","updatedtextbeginning","updatedTextEnd","updatedtextend","updatedText","fuelPricesHTML","lastUpdated","fuelPrices","fuelPrice","tableHTML","setupEventListeners","getPricesWithPostCodeButton","updatePricesButton","postcodeInput","pushGAEvent","loadStationsPricesJSON","pageSize","radiusVal","toString","requestPayload","FuelType","Radius","Postcode","PostcodeLatitude","PostcodeLongitude","RequestSource","authCookie","petrolPricesForm","petrolPricesResults","apiPetrol","UnauthenticatedUserPricesNumberOfRequests","stringify","response","fetch","headers","json","IsAuthenticatedUserPricesRequestsCapped","Array","isArray","CategoryNumber","displayPetrolPriceData","IsUnauthenticatedUserPricesRequestsCapped","NumberOfPricesWithin10Miles","NumberOfPricesWithin25Miles","list","html","htmlFilter","headerHTML","loginRequest","prices","map","price","highestPrice","Math","max","lowestPrice","min","splice","stn","entries","priceDifference","ranking","fillUpToSave","toFixed","SiteName","directionsLink","brand","postcode","distanceMiles","IsAuthenticatedUser","input","inputType","validation","searchRadius","sortBy","openStations","dataLayer","alert","payload","continueValidation","continueValidationErrors","collateErrorMessages","elementId","getAttribute","formId","form","openStationsOnly","init","statdata","getPriceStatistics","sortSelect"],"mappings":"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","file":"petrolPrices.min.js","sourcesContent":["// PARSE THE RETURNED JSON STATION DATA & PUSH INTO ARRAY\r\nexport const parsePetrolPriceData = (petrolPriceJsonData) => {\r\n let parsedPetrolPriceData = [];\r\n\r\n petrolPriceJsonData.stations.forEach(function (stations, i) {\r\n try {\r\n const stationData = JSON.parse(stations);\r\n parsedPetrolPriceData.push(stationData);\r\n } catch (error) {\r\n // Handle the JSON parsing error, e.g., log the error or ignore the entry\r\n console.error(`Error parsing JSON at index ${i}: ${error.message}`);\r\n }\r\n });\r\n\r\n return parsedPetrolPriceData;\r\n};\r\n\r\n// SORT PARSEDPETROLPRICEDATA. SLICE(0) CREATES NEW ARRAY FROM ARRAY TO SORT ON, 1 - BY PRICE, 2 BY DISTANCE\r\nexport const sortPetrolPriceData = (parsedPetrolPriceData, sortType, sortedPetrolPriceData) => {\r\n if (parsedPetrolPriceData.length > 1) {\r\n sortedPetrolPriceData = parsedPetrolPriceData.slice(0);\r\n switch (sortType) {\r\n case 'price':\r\n sortedPetrolPriceData = sortedPetrolPriceData.sort((a, b) => {\r\n if (a.ModalPrice !== b.ModalPrice) {\r\n return a.ModalPrice - b.ModalPrice;\r\n }\r\n return a.Distance - b.Distance;\r\n });\r\n break;\r\n \r\n case 'distance':\r\n sortedPetrolPriceData = sortedPetrolPriceData.sort((a, b) => {\r\n if (a.Distance !== b.Distance) {\r\n return a.Distance - b.Distance;\r\n }\r\n return a.ModalPrice - b.ModalPrice;\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n sortedPetrolPriceData = parsedPetrolPriceData;\r\n }\r\n return sortedPetrolPriceData;\r\n};\r\n\r\n// FILTER FOR ONLY CURRENTLY OPEN STATIONS OR ALL\r\nexport const filterData = (filterOnlyOpenCheckbox, sortedPetrolPriceData, displayData) => {\r\n if (filterOnlyOpenCheckbox.checked) {\r\n const filterOnlyOpenData = sortedPetrolPriceData.filter(function(e) {\r\n return e.IsOpen === true;\r\n });\r\n displayData = filterOnlyOpenData;\r\n } else {\r\n displayData = sortedPetrolPriceData;\r\n }\r\n return displayData;\r\n};","let errorHTML = '';\r\nconst errorValues = document.getElementById('petrol-prices-error-values'); \r\n\r\n// API ERROR\r\nexport const apiError = (container) => { \r\n\r\n let errorTitle = `

${errorValues.dataset.apierror}

`;\r\n let errorHTML = `\r\n
\r\n
\r\n
\r\n

${errorTitle}

\r\n
\r\n
\r\n
\r\n `;\r\n container.innerHTML = errorHTML;\r\n \r\n};\r\n\r\n\r\n// NEED TO LOG IN TO VIEW RESULTS \r\nexport const needToLogInView = (container) => { \r\n\r\n let errorMessage = document.getElementById('petrol-prices-error-LoginToViewText').innerHTML || 'There was a problem displaying your results.';\r\n let errorTitle = `

${errorValues.dataset.needtologinviewtitle}

`;\r\n createErrorMessageHTML(errorMessage, errorTitle, false);\r\n\r\n container.innerHTML = errorHTML;\r\n\r\n};\r\n\r\n// EXCEEDED WEEKLY LOOKUPS\r\nexport const exceededLookups = (container) => { \r\n\r\n let errorMessage = `

${errorValues.dataset.exceededlookupsmessage}

`;\r\n let errorTitle = `

${errorValues.dataset.exceededlookupstitle}

`;\r\n createErrorMessageHTML(errorMessage, errorTitle, true);\r\n\r\n container.innerHTML = errorHTML;\r\n\r\n};\r\n\r\nexport const noResultsFound = (container, authenticated) => {\r\n\r\n let errorMessage = document.getElementById('petrol-prices-error-LoginToViewText').innerHTML || 'There was a problem displaying your results.';\r\n let errorTitle = errorValues.dataset.noresultstitle;\r\n let backToSearch = errorValues.dataset.backtosearch;\r\n errorHTML = '';\r\n if (authenticated) {\r\n errorHTML = `\r\n
\r\n
\r\n
\r\n

${errorTitle}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n ${backToSearch}\r\n \r\n
\r\n `;\r\n } else {\r\n errorHTML = `\r\n
\r\n
\r\n
\r\n

${errorTitle}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Exclamation mark icon\r\n
\r\n
\r\n
\r\n ${errorMessage}\r\n
\r\n
\r\n
\r\n `;\r\n }\r\n container.innerHTML = errorHTML;\r\n\r\n};\r\n\r\nexport const createErrorMessageHTML = (errorMessage, errorTitle, homepageButton) => { \r\n let homepageButtonHTML = `\r\n \r\n `;\r\n errorHTML = '';\r\n errorHTML = `\r\n
\r\n
\r\n
\r\n ${errorTitle}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Exclamation mark icon\r\n
\r\n
\r\n
\r\n ${errorMessage}\r\n
\r\n
\r\n
\r\n ${homepageButton ? homepageButtonHTML : ''}`;\r\n return errorHTML;\r\n\r\n};","export function formatDate(date) {\r\n const options = { day: '2-digit', month: 'long', year: 'numeric' };\r\n return new Date(date).toLocaleDateString('en-GB', options);\r\n}\r\n\r\nexport const setFuelTypes = (selectedFuelType, search) => {\r\n const fuelTypeSelect = document.getElementsByName('fuelTypeSelect'),\r\n fuelTypeSelectSort = document.getElementsByName('fuelTypeSelectSort');\r\n if (search === 'search') {\r\n fuelTypeSelect.forEach((fuelType) => {\r\n if (fuelType.checked) {\r\n selectedFuelType = fuelType.value;\r\n }\r\n });\r\n\r\n fuelTypeSelectSort.forEach((fuelType) => {\r\n if (fuelType.value == selectedFuelType) {\r\n fuelType.checked = true;\r\n }\r\n });\r\n } else if (search === 'initial') {\r\n fuelTypeSelect[0].checked = true;\r\n } else {\r\n fuelTypeSelectSort.forEach((fuelType) => {\r\n if (fuelType.checked) {\r\n selectedFuelType = fuelType.value;\r\n }\r\n });\r\n fuelTypeSelectSort.forEach((fuelType) => {\r\n if (fuelType.value == selectedFuelType) {\r\n fuelType.checked = true;\r\n }\r\n });\r\n }\r\n\r\n return selectedFuelType;\r\n};\r\n\r\nexport const setPostCode = (postCodeField, selectedPostCode) => {\r\n postCodeField.placeholder = selectedPostCode;\r\n postCodeField.value = selectedPostCode;\r\n}; \r\n\r\nexport const setRadius = (radius, expand) => {\r\n const radiusSelect = document.getElementsByName('searchRadius');\r\n \r\n if (expand) {\r\n let checkedIndex = -1;\r\n // Find the index of the currently checked radio button\r\n for (let i = 0; i < radiusSelect.length; i++) {\r\n if (radiusSelect[i].checked) {\r\n checkedIndex = i;\r\n break;\r\n }\r\n }\r\n \r\n if (checkedIndex < radiusSelect.length - 1) {\r\n radiusSelect[checkedIndex + 1].checked = true;\r\n radius = radiusSelect[checkedIndex + 1].value;\r\n }\r\n } else {\r\n radiusSelect.forEach((radiusSelected) => {\r\n if (radiusSelected.checked) {\r\n radius = radiusSelected.value;\r\n }\r\n });\r\n }\r\n\r\n return radius;\r\n};\r\n\r\nexport const setSort = (sortType) => {\r\n const sortSelect = document.getElementsByName('sortBy');\r\n sortSelect.forEach((sortSelected) => {\r\n if (sortSelected.checked) {\r\n sortType = sortSelected.value;\r\n }\r\n });\r\n\r\n return sortType;\r\n};\r\n\r\nexport const errorValidation = (location, error) => { \r\n \r\n if (location === null) return false;\r\n let fieldGroup = location.closest('.field-group');\r\n let locationGroup = location.previousElementSibling;\r\n let validationGroup = locationGroup.previousElementSibling;\r\n const postCodeRegex = /^[a-zA-Z]{1,2}\\d[a-zA-Z\\d]?\\s*\\d[a-zA-Z]{2}$/;\r\n \r\n if (fieldGroup) {\r\n if (location.value === '' || location.value === undefined || !postCodeRegex.test(location.value)) {\r\n fieldGroup.classList.add('field-group--error');\r\n validationGroup.classList.remove('display-none');\r\n fieldGroup.scrollIntoView({behavior: 'smooth', block: 'start', inline: 'nearest'});\r\n return false;\r\n } else if (error) {\t\r\n fieldGroup.classList.add('field-group--error');\r\n locationGroup.classList.remove('display-none');\r\n fieldGroup.scrollIntoView({behavior: 'smooth', block: 'start', inline: 'nearest'});\t\r\n } else {\r\n fieldGroup.classList.remove('field-group--error');\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const setupShowMoreOptions = () => {\r\n const showMoreOptionsCSSClass = 'show-more-link';\r\n\r\n let showMoreOptionLinks = document.querySelectorAll('.' + showMoreOptionsCSSClass);\r\n\r\n showMoreOptionLinks.forEach(function(showMoreOptionLink) {\r\n showMoreOptionLink.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n showMoreOptionLink.remove();\r\n });\r\n });\r\n};\r\n\r\nexport async function getLatLng(selectedPostCode) {\r\n return new Promise((resolve, reject) => { \r\n // Create a Geocoder instance\r\n var geocoder = new google.maps.Geocoder();\r\n \r\n // Perform geocoding\r\n geocoder.geocode({ address: selectedPostCode }, function(results, status) {\r\n if (status === 'OK' && results[0].geometry) {\r\n var location = results[0].geometry.location;\r\n var lat = location.lat();\r\n var long = location.lng();\r\n resolve({ lat, long });\r\n } else {\r\n console.error('Geocoding failed:', status);\r\n reject(status);\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport function setSessionCookie(name, value) {\r\n document.cookie = name + '=' + encodeURIComponent(value) + '; path=/';\r\n}\r\n\r\nexport function cookieExists(name) {\r\n // Get all cookies\r\n var cookies = document.cookie.split(';');\r\n \r\n // Iterate through each cookie to check if it matches the name\r\n for (var i = 0; i < cookies.length; i++) {\r\n var cookie = cookies[i].trim();\r\n \r\n // Check if the cookie starts with the specified name\r\n if (cookie.startsWith(name + '=')) {\r\n return true; // Cookie exists\r\n }\r\n }\r\n \r\n return false; // Cookie doesn't exist\r\n}\r\n\r\nexport function deleteCookie(name) {\r\n document.cookie = name + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\r\n}\r\n\r\nexport function scrollToTop() {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth' // Optional: animated smooth scroll\r\n });\r\n}","const petrolPrices = (function () {\r\n\tlet sortedPetrolPriceData = [],\r\n\t\tdisplayData = [],\r\n\t\tisAuthenticatedUser = document.getElementById('petrol-prices-logged-status').dataset.loggedInStatus,\r\n\t\tselectedFuelType,\r\n\t\tselectedPostCode,\r\n\t\trequestSource = 'SearchForm',\r\n\t\tgeoLat = null,\r\n\t\tgeoLong = null,\r\n\t\tgeoLocation = null,\r\n\t\tgeoLocationError = false,\r\n\t\tradius = 5,\r\n\t\tsortType = 'price',\r\n\t\tAPIURLS = document.getElementById('petrol-prices-api'), \r\n\t\tapiSubKey = APIURLS.dataset.apisubkey,\r\n\t\tpriceStatisticsUrl = APIURLS.dataset.apipricestatistics,\r\n\t\tpetrolPricesUrl = APIURLS.dataset.apipetrolprices;\r\n\tconst container = document.querySelector('.petrol-prices'),\r\n\t\tgetLocationButton = document.getElementById('getLocationButton'),\r\n\t\topenFilters = document.getElementById('openFilters'),\r\n\t\tclosedFilters = document.getElementById('closedFilters'),\r\n\t\tfilter = document.getElementById('filter'),\r\n\t\tparent = document.getElementById('petrol-prices-results'),\r\n\t\tviewMoreButton = document.getElementById('expandSearchDistance'),\r\n\t\tresetValues = () => {\r\n\t\t\tgeoLocation = '';\r\n\t\t\tgeoLat = '';\r\n\t\t\tgeoLong = '';\r\n\t\t\tselectedPostCode = '';\r\n\t\t\tgeoLocationError = false;\r\n\t\t};\r\n\r\n\t\r\n\tif (isAuthenticatedUser === 'False') {\r\n\t\tisAuthenticatedUser = false;\r\n\t} else if (isAuthenticatedUser === 'True') {\r\n\t\tisAuthenticatedUser = true;\r\n\t} else {\r\n\t\tisAuthenticatedUser = true;\r\n\t}\r\n\r\n\t// Text Values from the nodes on the HTML\r\n\tconst resultsTableTextValues = document.getElementById('petrol-prices-result-table'), \r\n\t\t// Text/Links for the Results Table and its columns.\r\n\t\tresultsTablePricePerLitre = resultsTableTextValues.dataset.resultstablepriceperlitre, \r\n\t\tresultsTableDistance = resultsTableTextValues.dataset.resultstabledistance,\r\n\t\tresultsTableLocation = resultsTableTextValues.dataset.resultstablelocation,\r\n\t\tresultsTableFillUpToSave = resultsTableTextValues.dataset.resultstablefilluptosave,\r\n\t\tresultsTableFillUpToSaveNoSaving = resultsTableTextValues.dataset.resultstablefilluptosavenosaving,\r\n\t\tresultsTablePricesUpdated = resultsTableTextValues.dataset.resultstablepricesupdated,\r\n\t\t// Reintroduced in v3\r\n\t\t// resultsTableOpeningTimes = resultsTableTextValues.dataset.resultstableopeningtimes,\r\n\t\t// resultsTableOpeningTimes24Hrs = resultsTableTextValues.dataset.resultstableopeningtimes24hrs,\r\n\t\t// resultsTablePriceOpeningTimesNow = resultsTableTextValues.dataset.resultstablepriceopeningtimesnow,\r\n\t\tresultsTableGetDirectionsText = resultsTableTextValues.dataset.resultstablegetdirectionstext,\r\n\t\tresultsTablePriceCheapest = resultsTableTextValues.dataset.resultstablepricecheapest;\r\n\r\n\tfunction init() {\r\n\t\tgetPriceStatistics(priceStatisticsUrl);\r\n\t\tsetupEventListeners();\r\n\r\n\t\t// Setting Initial Checked for Fuel Types and Radius.\r\n\t\tsetFuelTypes(null, 'initial');\r\n\t\tconst radiusSelect = document.getElementsByName('searchRadius');\r\n\t\tconst sortSelect = document.getElementsByName('sortBy');\r\n\t\tradiusSelect[0].checked = true;\r\n\t\tsortSelect[0].checked = true;\r\n\t}\r\n\r\n\tfunction initMap() {\r\n\t\tif ('geolocation' in navigator) {\r\n\t\t\t// If geolocation is available\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n \r\n\t\t\t // Retrieve the user's latitude and longitude\r\n\t\t\t const latitude = position.coords.latitude,\r\n\t\t\t\t longitude = position.coords.longitude,\r\n\t\t\t\t geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\t let latlng = { lat: latitude, lng: longitude};\t \r\n\t\t\t \r\n\t\t\t // Get this to be a PostCode\r\n\t\t\t geocoder.geocode({ location: latlng }, (results, status) => {\r\n\t\t\t\t if (status === 'OK') {\r\n\t\t\t\t\tif (results[0]) {\r\n\t\t\t\t\t for (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\tconst component = results[0].address_components[i];\r\n\t\t\t\t\t\tif (component.types.includes('postal_code')) {\r\n\t\t\t\t\t\t const postalCode = component.short_name;\r\n\t\t\t\t\t\t // Display the location result\r\n\t\t\t\t\t\t let postCodeInput = document.getElementById('petrolPricesPostcode'),\r\n\t\t\t\t\t\t\t postcodeInputSort = document.getElementById('petrolPricesPostcodeSort');\r\n\t\t\t\t\t\t setPostCode(postCodeInput, postalCode);\r\n\t\t\t\t\t\t setPostCode(postcodeInputSort, postalCode);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t errorValidation(getLocationButton);\r\n\t\t\t\t\t}\r\n\t\t\t\t } else {\r\n\t\t\t\t\tconsole.log('Geocoder failed due to: ' + status);\r\n\t\t\t\t\terrorValidation(getLocationButton);\r\n\t\t\t\t }\r\n\t\t\t\t});\r\n\t\t\t}, function(error) {\r\n\t\t\t // Handle any errors that occur\r\n\t\t\t console.log('Geocoder failed due to: ' + error);\r\n\t\t\t errorValidation(getLocationButton);\r\n\t\t\t});\r\n\t\t } else {\r\n\t\t\terrorValidation(getLocationButton);\r\n\t\t }\r\n\t}\r\n\r\n\tgetLocationButton.addEventListener('click', function() {\r\n\t\tinitMap();\r\n\t});\r\n\r\n\topenFilters.addEventListener('click', function(e) {\r\n\t\te.preventDefault();\r\n\t\tparent.classList.add('show-filters-parent');\r\n\t\tfilter.classList.add('show-filters-child');\r\n\t});\r\n\r\n\tclosedFilters.addEventListener('click', function(e) {\r\n\t\te.preventDefault();\r\n\t\tparent.classList.remove('show-filters-parent');\r\n\t\tfilter.classList.remove('show-filters-child');\r\n\t});\r\n\r\n\t// Close the menu when clicking on the shadowed area\r\n\tdocument.getElementById('filter').addEventListener('click', function(event) {\r\n\t\t// Check if the click occurred on the ::before pseudo-element\r\n\t\tif (event.target === document.getElementById('filter')) {\r\n\t\t\tparent.classList.remove('show-filters-parent');\r\n\t\t\tfilter.classList.remove('show-filters-child');\r\n\t\t}\r\n\t});\r\n\r\n\t// GET GENERALISED PRICE STATISTICS FROM GETPRICESTATISTICS API\r\n\tasync function getPriceStatistics(priceStatisticsUrl) {\r\n\t\ttry {\r\n\t\t\tlet statdata = await fetch(priceStatisticsUrl, {\r\n\t\t\t\t'headers': {\r\n\t\t\t\t\t'Ocp-Apim-Subscription-Key': apiSubKey\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tlet priceStatsJsonData = await statdata.json();\r\n\t\t\tdisplayPriceStatisticsData(priceStatsJsonData);\r\n\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Error:', error);\r\n\t\t}\r\n\t}\r\n\r\n\t// USING THE PARSED JSON DATA, BUILD HTML FOR TABLE TO DISPLAY DATA\r\n\tconst displayPriceStatisticsData = (priceStatsJsonData) => {\r\n\t\tconst pricesTable = document.querySelector('.petrol-prices__table'),\r\n\t\t\tlastUpdatedDate = document.querySelector('.prices-updated'),\r\n\t\t\tgenericTextValues = document.getElementById('petrol-prices-generic-text'), \r\n\t\t\toptions = { day: '2-digit', month: 'long', year: 'numeric' },\r\n\t\t\taverageText = genericTextValues.dataset.average,\r\n\t\t\tlowestText = genericTextValues.dataset.lowest,\r\n\t\t\thighestText = genericTextValues.dataset.highest,\r\n\t\t\tpetrolText = genericTextValues.dataset.petrol,\r\n\t\t\tdieselText = genericTextValues.dataset.diesel,\r\n\t\t\tupdatedTextBeginning = genericTextValues.dataset.updatedtextbeginning,\r\n\t\t\tupdatedTextEnd = genericTextValues.dataset.updatedtextend;\r\n\t\tlet updatedText = '',\r\n\t\t\tfuelPricesHTML = '',\r\n\t\t\tdate = new Date(priceStatsJsonData.lastUpdated);\r\n\r\n\t\tupdatedText = `

${updatedTextBeginning}${date.toLocaleDateString('en-GB', options)}${updatedTextEnd}

`;\r\n\r\n\t\tpriceStatsJsonData.fuelPrices.forEach(function (fuelPrice) {\r\n\t\t\tfuelPricesHTML += `\r\n\t\t\t\r\n\t\t\t\t${fuelPrice.fuelType === 6 ? dieselText : petrolText}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
${fuelPrice.fuelType === 6 ? dieselText : petrolText}
\r\n\t\t\t\t
${fuelPrice.average}p
\r\n\t\t\t\t
${fuelPrice.lowest}p
\r\n\t\t\t\t
${fuelPrice.highest}p
\r\n\t\t\t\r\n\t\t\t`;\r\n\t\t});\r\n\r\n\t\tlet tableHTML = `\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t${fuelPricesHTML}\r\n\t\t\t\t\r\n\t\t\t
 ${averageText}${lowestText}${highestText}
\t\r\n\t\t`;\r\n\t\t\r\n\t\tlastUpdatedDate.innerHTML = updatedText;\r\n\t\tpricesTable.innerHTML = tableHTML;\r\n\t};\r\n\r\n\t// SET UP EVENT LISTENERS FOR CLICK & CHANGE FUNCTIONS ON EXISTING HTML ELEMENTS\r\n\tconst setupEventListeners = () => {\r\n\t\tconst getPricesWithPostCodeButton = document.getElementById('usePostCode'),\r\n\t\t\tupdatePricesButton = document.getElementById('updatePrices'),\r\n\t\t\tpostcodeInput = document.getElementById('petrolPricesPostcode'),\r\n\t\t\tpetrolPricesForm = document.getElementById('petrol-prices-form'),\r\n\t\t\tpetrolPricesResults = document.getElementById('petrol-prices-results'),\r\n\t\t\tpostcodeInputSort = document.getElementById('petrolPricesPostcodeSort');\r\n\r\n\t\tgetPricesWithPostCodeButton.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tresetValues();\r\n\t\t\tscrollToTop();\r\n\r\n\t\t\tif (errorValidation(postcodeInput)) {\r\n\t\t\t\tselectedPostCode = postcodeInput.value;\r\n\t\t\t\tselectedFuelType = setFuelTypes(selectedFuelType, 'search');\r\n\t\t\t\tsetPostCode(postcodeInputSort, selectedPostCode);\r\n\t\r\n\t\t\t\tif (selectedFuelType != '' && selectedPostCode != '' && radius != '') {\r\n\t\t\t\t\tpushGAEvent(getPricesWithPostCodeButton, 'search', true, selectedPostCode, selectedFuelType);\r\n\t\t\t\t\tloadStationsPricesJSON(selectedPostCode, selectedFuelType, radius, 5);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tupdatePricesButton.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tresetValues();\r\n\t\t\tscrollToTop();\r\n\r\n\t\t\tif (errorValidation(postcodeInputSort)) {\r\n\t\t\t\tselectedPostCode = postcodeInputSort.value;\r\n\t\t\t\tselectedFuelType = setFuelTypes(selectedFuelType, false);\r\n\t\t\t\tsetPostCode(postcodeInputSort, selectedPostCode);\r\n\t\t\t\tradius = setRadius(radius);\r\n\t\t\t\tconst sort = setSort(sortType);\r\n\t\t\t\t// To be reintroduced in v3\r\n\t\t\t\t// const openStations = document.getElementById('filterOnlyOpenCheckbox').checked;\r\n\t\r\n\t\t\t\tif (selectedFuelType != '' && selectedPostCode != '' && radius != '') {\r\n\t\t\t\t\tpushGAEvent(getPricesWithPostCodeButton, 'filter', true, selectedPostCode, selectedFuelType, radius, sort, false);\r\n\t\t\t\t\tloadStationsPricesJSON(selectedPostCode, selectedFuelType, radius, 5);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tparent.classList.remove('show-filters-parent');\r\n\t\t\tfilter.classList.remove('show-filters-child');\r\n\t\t});\r\n\r\n\t\tviewMoreButton.addEventListener('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tresetValues();\r\n\t\t\tscrollToTop();\r\n\r\n\t\t\tif (errorValidation(postcodeInput)) {\r\n\t\t\t\tselectedPostCode = postcodeInput.value;\r\n\t\t\t\tselectedFuelType = setFuelTypes(selectedFuelType, false);\r\n\t\t\t\tsetPostCode(postcodeInputSort, selectedPostCode);\r\n\t\t\t\tradius = setRadius(radius, 'expand');\r\n\t\r\n\t\t\t\tif (selectedFuelType != '' && selectedPostCode != '' && radius != '') {\r\n\t\t\t\t\tloadStationsPricesJSON(selectedPostCode, selectedFuelType, radius, 10);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t// FETCH PETROL PRICE DATA FROM API\r\n\tasync function loadStationsPricesJSON(selectedPostCode, selectedFuelType, radius, pageSize) {\r\n\r\n\t\tlet radiusVal = radius.toString(),\r\n\t\t\trequestPayload = { FuelType: selectedFuelType, Radius: radiusVal, Postcode: selectedPostCode, PostcodeLatitude: geoLat = null, PostcodeLongitude: geoLong = null, RequestSource: requestSource },\r\n\t\t\tpetrolPriceJsonData = [],\r\n\t\t\tfilterOnlyOpenCheckbox = false,\r\n\t\t\tauthCookie = 'AuthPrompt',\r\n\t\t\tpostcodeInput = document.getElementById('petrolPricesPostcode'),\r\n\t\t\tpostcodeInputSort = document.getElementById('petrolPricesPostcodeSort'),\r\n\t\t\tpetrolPricesForm = document.getElementById('petrol-prices-form'),\r\n\t\t\tpetrolPricesResults = document.getElementById('petrol-prices-results');\r\n\r\n\t\tsortType = setSort(sortType);\r\n\t\ttry {\r\n\t\t\tconst { lat, long } = await getLatLng(selectedPostCode);\r\n\t\t\t// Use lat and long here as geoLat and geoLong\r\n\t\t\tgeoLat = lat;\r\n\t\t\tgeoLong = long;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"Error:\", error);\r\n\t\t\terrorValidation(postcodeInput, true);\r\n\t\t\terrorValidation(postcodeInputSort, true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet apiPetrol = `${petrolPricesUrl}?lat=${geoLat}&long=${geoLong}&fuelType=${selectedFuelType}&radius=${radiusVal}&pageSize=${pageSize}&sortBy=${sortType}`;\r\n\r\n\t\t// Authentication stuff for the logged out user.\r\n\t\tconsole.log('isAuthenticatedUser', isAuthenticatedUser);\r\n\t\tif (isAuthenticatedUser === false) {\r\n\t\t\t// Checking if Cookie Exists\r\n\t\t\tif (cookieExists(authCookie)) {\r\n\t\t\t\t// Setting the value on the payload\r\n\t\t\t\trequestPayload.UnauthenticatedUserPricesNumberOfRequests = '1';\r\n\t\t\t} else {\r\n\t\t\t\t// Creating the Cookie\r\n\t\t\t\tsetSessionCookie(authCookie, '0 ' + selectedPostCode);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// If logged in remove the cookie.\r\n\t\t\tif (cookieExists(authCookie)) {\r\n\t\t\t\tdeleteCookie(authCookie);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trequestPayload = JSON.stringify(requestPayload);\r\n\r\n\t\ttry {\r\n\t\t\tlet response = await fetch(apiPetrol, {\r\n\t\t\t\t'headers': {\r\n\t\t\t\t\t'Ocp-Apim-Subscription-Key': apiSubKey\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tpetrolPriceJsonData = await response.json();\r\n\t\t\tlet parsedPetrolPriceData = petrolPriceJsonData.stations;\r\n\r\n\t\t\tsortedPetrolPriceData = sortPetrolPriceData(parsedPetrolPriceData, sortType, sortedPetrolPriceData);\r\n\t\t\tdisplayData = filterData(filterOnlyOpenCheckbox, sortedPetrolPriceData, displayData); \r\n\t\t\r\n\t\t\t(async () => {\r\n\t\t\t\tgeoLocation = await getLatLng(selectedPostCode);\r\n\t\t\t\tif (selectedPostCode && selectedFuelType) {\r\n\t\t\t\t\tpetrolPricesResults.classList.remove('display-none');\r\n\t\t\t\t\tpetrolPricesForm.classList.add('display-none');\r\n\t\t\t\t} \r\n\t\r\n\t\t\t\tif (isAuthenticatedUser === true) {\r\n\t\t\t\t\tif (petrolPriceJsonData.IsAuthenticatedUserPricesRequestsCapped === true) {\r\n\t\t\t\t\t\texceededLookups(container);\r\n\t\t\t\t\t} else if (Array.isArray(parsedPetrolPriceData) && parsedPetrolPriceData.length === 0 || parsedPetrolPriceData[0].CategoryNumber === 0) {\r\n\t\t\t\t\t\tnoResultsFound(container, true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdisplayPetrolPriceData(displayData, petrolPriceJsonData);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (petrolPriceJsonData.IsUnauthenticatedUserPricesRequestsCapped === true) {\r\n\t\t\t\t\t\tneedToLogInView(container);\r\n\t\t\t\t\t} else if (Array.isArray(parsedPetrolPriceData) && parsedPetrolPriceData.length === 0 || parsedPetrolPriceData[0].CategoryNumber === 0) {\r\n\t\t\t\t\t\tnoResultsFound(container, false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdisplayPetrolPriceData(displayData, petrolPriceJsonData);\r\n\t\t\t\t\t}\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t})();\r\n\r\n\t\t\tswitch (radiusVal) { \r\n\t\t\t\tcase '5':\r\n\t\t\t\t\tif (petrolPriceJsonData.NumberOfPricesWithin10Miles < 0) {\r\n\t\t\t\t\t\tviewMoreButton.classList.add('visually-hidden');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tviewMoreButton.classList.remove('visually-hidden');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '10':\r\n\t\t\t\t\tif (petrolPriceJsonData.NumberOfPricesWithin25Miles < 0) {\r\n\t\t\t\t\t\tviewMoreButton.classList.add('visually-hidden');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tviewMoreButton.classList.remove('visually-hidden');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '25':\r\n\t\t\t\t\tviewMoreButton.classList.add('visually-hidden');\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Error:', error);\r\n\t\t\tapiError(container);\r\n\t\t}\r\n\t}\r\n\r\n\t// HANDLE DISPLAYING THE DATA - LOOP THROUGH EACH RESULT & BUILD UP CARD HTML\r\n\t// 2 CARD TYPES, CHEAPEST & NEAREST WITH ADDITIONAL CARDS FOR LOGIN AND SHOW MORE\r\n\tasync function displayPetrolPriceData(displayData, petrolPriceJsonData) {\r\n\t\t\r\n\t\tlet list = document.querySelector('.petrol-prices__results-list');\r\n\t\tlet html = '';\r\n\t\tlet htmlFilter = '';\r\n\t\tlet headerHTML = document.getElementById('petrol-prices-rewards-text').innerHTML;\r\n\t\tlet loginRequest = document.getElementById('petrol-prices-error-LoginToViewText').innerHTML;\r\n\t\tlet stationsLatLang = [];\r\n\t\t\r\n\t\t//- Have to determine the cheapest now ourselves. Mapping the prices to see the highest and the lowest prices\r\n\t\tconst prices = displayData.map(displayData => displayData.price);\r\n\t\tconst highestPrice = Math.max(...prices);\r\n\t\tconst lowestPrice = Math.min(...prices);\r\n\r\n\t\t//- To add the rewards banner.\r\n\t\tdisplayData.splice(2, 0, '');\r\n\r\n\t\tfor (const [i, stn] of displayData.entries()) {\r\n\r\n\t\t\t//- To fill in the fill up to save function. \r\n\t\t\tconst priceDifference = (highestPrice - stn.price) / 100;\r\n\t\t\tconst multipliedResult = priceDifference * 50;\r\n\t\t\tlet fillUpToSave = `£${multipliedResult.toFixed(2)}`;\r\n\t\t\tif (priceDifference === 0) {\r\n\t\t\t\tfillUpToSave = `${resultsTableFillUpToSaveNoSaving}`;\r\n\t\t\t}\r\n\r\n\t\t\t//- Determining the ranking of the results. Checking if the prices of the results is equal to the lowest to display the cheapest banner.\r\n\t\t\tlet ranking;\r\n\t\t\tif (stn.price === lowestPrice) {\r\n\t\t\t\tranking = 1;\r\n\t\t\t}\r\n\r\n\t\t\t//REPLACE WITH NODES WHEN IN F\r\n\t\t\tif ((displayData.length === 2 ? i == 1 : i == 2)) {\r\n\t\t\t\thtml += `\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t${headerHTML}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t`;\r\n\t\t\t} else if (stn.CategoryNumber !== 0 && stn.SiteName !== null && i !== 2) {\r\n\r\n\t\t\t\t//- Making sure the lat and long are used in the googlemaps url. To be replaced with data in the API eventually.\r\n\t\t\t\tlet directionsLink;\r\n\t\t\t\tif (!geoLocationError) {\r\n\t\t\t\r\n\t\t\t\t\tdirectionsLink = `${resultsTableGetDirectionsText}`;\r\n\t\t\t\t} \r\n\r\n\t\t\t\tif (!isAuthenticatedUser && i !== 0 && i !== 2) {\r\n\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t${resultsTablePricePerLitre}\r\n\t\t\t\t\t\t\t\t\t${stn.price.toFixed(1)}p\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tExclamation mark icon\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t${loginRequest || 'There was a problem displaying your results.'}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t${ranking === 1 ? `
${resultsTablePriceCheapest}
` : ''}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t`;\t\t\t\t\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t${resultsTablePricePerLitre}\r\n\t\t\t\t\t\t\t\t\t${stn.price.toFixed(1)}p\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t${resultsTableLocation}\r\n\t\t\t\t\t\t\t\t${stn.brand}\r\n\t\t\t\t\t\t\t\t${stn.address}\r\n\t\t\t\t\t\t\t\t${stn.postcode}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t\t${directionsLink}\r\n\t\t\t\t\t\t\t
\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t${resultsTableDistance}\r\n\t\t\t\t\t\t\t\t${stn.distanceMiles} Miles\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t${resultsTableFillUpToSave}1\r\n\t\t\t\t\t\t\t\t${fillUpToSave}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t${resultsTablePricesUpdated}\r\n\t\t\t\t\t\t\t\t${formatDate(stn.lastUpdated)}\r\n\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t${ranking === 1 ? `
${resultsTablePriceCheapest}
` : ''}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t`;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\tif (petrolPriceJsonData.IsAuthenticatedUser === false) {\r\n\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t${resultsTablePricePerLitre}\r\n\t\t\t\t\t\t\t\t\t${stn.price.toFixed(1)}p\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tExclamation mark icon\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t${loginRequest || 'There was a problem displaying your results.'}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t${ranking === 1 ? `
${resultsTablePriceCheapest}
` : ''}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (isAuthenticatedUser) {\r\n\t\t\tlet filter = document.querySelector('.petrol-prices__sort-filter');\r\n\t\t\tfilter.classList.remove('visually-hidden');\r\n\t\t} else {\r\n\t\t\topenFilters.classList.add('visually-hidden');\r\n\t\t\tviewMoreButton.classList.add('visually-hidden');\r\n\t\t\tlet filter = document.getElementById('filterNotLoggedIn');\r\n\t\t\tfilter.classList.remove('visually-hidden');\r\n\t\t\thtmlFilter += `
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\tExclamation mark icon\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t${document.getElementById('petrol-prices-error-LoginToViewText').innerHTML || 'There was a problem displaying your results.'}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
`;\r\n\t\t\tfilter.innerHTML = htmlFilter;\r\n\t\t}\r\n\t\t\r\n\t\tlist.innerHTML = html;\r\n\t}\r\n\r\n\tasync function pushGAEvent(input, inputType = '', validation = false, postcode, fuelType, searchRadius, sortBy, openStations ) {\r\n if (typeof dataLayer === 'undefined') {\r\n // DataLayer is not defined\r\n // You can handle this situation here\r\n alert('no dataLayer');\r\n } else {\r\n // DataLayer exists and is defined\r\n // You can work with the dataLayer here\r\n let payload = {};\r\n\r\n\t\t\tswitch(inputType) {\r\n\t\t\t\tcase 'search':\r\n\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t'event': 'continue',\r\n\t\t\t\t\t\t'continueValidation': validation,\r\n\t\t\t\t\t\t'continueValidationErrors': collateErrorMessages(),\r\n\t\t\t\t\t\t'elementId': input.getAttribute('id'),\r\n\t\t\t\t\t\t'formId': input.form.getAttribute('id'),\r\n\t\t\t\t\t\t'postcode': postcode,\r\n\t\t\t\t\t\t'fuelType': fuelType,\r\n\t\t\t\t\t\t'searchRadius': '5',\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'filter':\r\n\t\t\t\t\tpayload = {\r\n\t\t\t\t\t\t'event': 'continue',\r\n\t\t\t\t\t\t'continueValidation': validation,\r\n\t\t\t\t\t\t'continueValidationErrors': collateErrorMessages(),\r\n\t\t\t\t\t\t'elementId': input.getAttribute('id'),\r\n\t\t\t\t\t\t'formId': input.form.getAttribute('id'),\r\n\t\t\t\t\t\t'postcode': postcode,\r\n\t\t\t\t\t\t'fuelType': fuelType,\r\n\t\t\t\t\t\t'searchRadius': searchRadius,\r\n\t\t\t\t\t\t'sortBy': sortBy,\r\n\t\t\t\t\t\t'openStationsOnly': openStations,\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n dataLayer.push(payload);\r\n\r\n console.log(dataLayer);\r\n }\r\n\t}\r\n\r\n\tfunction collateErrorMessages() {\r\n let continueValidationErrors = '';\r\n let errors = document.querySelectorAll('.field-group--error');\r\n \r\n errors.forEach(error => {\r\n let errorMessage = error.querySelector('.error-message');\r\n continueValidationErrors += `${errorMessage.innerHTML};`;\r\n });\r\n return continueValidationErrors;\r\n }\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\t\r\n\t};\r\n})();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tpetrolPrices.init();\r\n\tsetupShowMoreOptions();\r\n});\r\n"]}