{"version":3,"sources":["jsdelivr-header.js","/gh/isoumpasis/webflow-scripts@3e368a0/home.js"],"names":[],"mappings":"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","file":"/gh/isoumpasis/webflow-scripts@3e368a0/home.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /gh/isoumpasis/webflow-scripts@3e368a0/home.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* System Identification */\nlet serverUrl = 'https://lovatohellas.herokuapp.com/';\n// let serverUrl = 'http://localhost:1917/';\nconst baseUrl = location.origin;\nconst mapUrl = '/stores';\nconst urlYears = serverUrl + 'vehicleDB/get/years';\nconst urlModels = serverUrl + 'vehicleDB/get/models';\nconst urlDescriptions = serverUrl + 'vehicleDB/get/descriptions';\nconst urlFuelPrices = serverUrl + 'fuelPrices';\nlet downloadSummaryUrl = serverUrl + 'summaries/download/system';\n// const downloadSummaryUrl = 'http://localhost:1917/summaries/download/system'; //\nlet emailSummaryUrl = serverUrl + 'summaries/email/system';\n// const emailSummaryUrl = 'http://localhost:1917/summaries/email/system';\nconst mapBaseUrl = baseUrl + mapUrl;\nconst numPlaceUrl = serverUrl + 'map/pins/numPlace';\nconst closestUrl = serverUrl + 'map/pins/closest';\nconst urlContactForm = serverUrl + 'contact/';\nconst easyPayFileUploaderUrl = serverUrl + 'summaries/easyPay';\n// const baseDateUrl = serverUrl + 'lottery/base-date';\nconst urlNotConvForm = serverUrl + 'notConvertible';\n// const urlRemainingPremium = serverUrl + 'remainingPremium';\n\nlet fetchedYears;\nlet fetchedModels;\nlet fetchedModelObj;\nlet foundVehicleObj;\nlet suggestedPricesChanges = [];\nlet userSelections = { selectedFuel: 'lpg', vehicle: {}, calculator: {}, easyPay: {} };\nlet userInfo = { username: '', email: '', phone: '' };\nconst preferredStorage = localStorage;\n//one week and one hour\n// const fuelPricesCacheTime = 1000 * 60 * 60 * 24 * 7 + 1000 * 60 * 60;\n// const numPlacesCacheTime = 1000 * 60 * 60 * 24 * 7 + 1000 * 60 * 60;\nlet fetchedPinsLength,\n  fetchedClosests,\n  isLocationSelected = false,\n  geolocationError = false;\nlet formType = 'DOWNLOAD';\n\nconst makeSelect = document.querySelector('#makeSelect');\nconst modelSelect = document.querySelector('#modelSelect');\nconst yearSelect = document.querySelector('#yearSelect');\nconst descriptionSelect = document.querySelector('#descriptionSelect');\n\nconst suggestedContainers = document.querySelectorAll('.suggested-container');\nlet suggestedSystems;\nlet driveOftenIndexValue = 2;\n\nconst lpgSystemQueryDict = {\n  604701308: 'di3000b', //Direct Injection\n  604701310: 'di3000b-uhpii', //Direct Injection UHPII\n  604701305: 'di60-uhpii', //Direct Injection ExR UHPII\n  604701306: 'di108-uhpii', //Direct Injection ExR UHPII\n  604701304: 'di60-dd', //Direct Injection ExR DD\n  604701309: 'di3000b-dd', //Direct Injection DD\n  604701574: 'di60canff-dd', //Direct Injection ExR CAN FF DD\n  604701559: 'di60canff-uhpii', //Direct Injection ExR CAN FF UHPII\n  604701307: 'di108-8cyl-uhpii' //Direct Injection ExR UHPII\n};\n\nconst cngSystemQueryDict = {\n  604701308: 'di3000b', //Direct Injection\n  604701310: 'di3000b', //Direct Injection\n  604701305: 'di60', //Direct Injection ExR\n  604701306: 'di108', //Direct Injection ExR 5-6cyl\n  604701304: 'di60', //Direct Injection ExR\n  604701309: 'di3000b', //Direct Injection\n  604701574: 'di60canff', //Direct Injection ExR CAN FF\n  604701559: 'di60canff', //Direct Injection ExR CAN FF\n  604701307: 'di108-8cyl' //Direct Injection ExR 8cyl\n};\n\nconst apaitoumenaEmulatorTypes = ['p', 'b6', 'b8', 'hp', 'double-hp', 'tap'];\nconst cngOnlyEmulatorTypes = ['b6', 'b8', 'f', 'p', 'tap'];\nconst emulatorTextDict = {\n  p: 'Fuel Pressure Emulator',\n  t: 'Reducer Lovato RGJ DD',\n  f: 'Petrol Level Emulator',\n  b6: 'Petrol Injectors Emulator',\n  b8: 'Dual Injector Engine 4x2 = 8cyl',\n  hp: 'Εξαερωτής RGJ UHPII έως 350HP',\n  'double-hp': 'Διπλός Εξαερωτής RGJ UHPII άνω των 350HP',\n  tap: 'Timing Advanced Processor'\n};\nconst emulatorIsMandatoryDict = {\n  p: true,\n  t: false,\n  f: false,\n  b6: true,\n  b8: true,\n  hp: true,\n  'double-hp': true,\n  tap: true\n};\nconst emulatorPriceDict = {\n  p: 85,\n  b6: 95,\n  b8: -250, // - from cobd 8cyl = 1000€\n  hp: 90,\n  'double-hp': 130,\n  t: 90,\n  f: 85,\n  tap: 100\n};\n//90eurw sthn timh gia ta panw apo 180 hp\n\nlet emulatorSelected = false;\n\nconst systemNamesFromIdDict = {\n  'notConvertible-lpg': ['not convertible lpg'],\n  'notConvertible-cng': ['not convertible cng'],\n  'notConvertible-form': ['not convertible form'],\n\n  'suggested-lpg-ego': ['Lovato E-GO II'],\n  'suggested-lpg-exr': ['Lovato Smart ExR'],\n  'suggested-lpg-exr-ego': ['Lovato Smart ExR', 'Lovato E-GO II'],\n  'suggested-lpg-cobd-exr': ['Lovato C-OBD II', 'Lovato Smart ExR'],\n  'suggested-lpg-cobd': ['Lovato C-OBD II'],\n  'suggested-lpg-cobd-6cyl': ['Lovato C-OBD II 5-6cyl'],\n  'suggested-lpg-cobd-8cyl': ['Lovato C-OBD II 8cyl'],\n\n  'suggested-lpg-di3000b': ['Lovato Direct Injection'],\n  'suggested-lpg-di3000b-uhpii': ['Lovato Direct Injection UHPII'],\n  'suggested-lpg-di60-uhpii': ['Lovato Direct Injection ExR UHPII'],\n  'suggested-lpg-di108-uhpii': ['Lovato Direct Injection ExR UHPII 5-6cyl'],\n  'suggested-lpg-di60-dd': ['Lovato Direct Injection ExR DD'],\n  'suggested-lpg-di3000b-dd': ['Lovato Direct Injection DD'],\n  'suggested-lpg-di60canff-dd': ['Lovato Direct Injection ExR CAN FF DD'],\n  'suggested-lpg-di60canff-uhpii': ['Lovato Direct Injection ExR CAN FF UHPII'],\n  'suggested-lpg-di108-8cyl-uhpii': ['Lovato Direct Injection ExR UHPII 8cyl'],\n\n  'suggested-lpg-monou': ['Lovato Μονού Ψεκασμού'],\n  'suggested-cng-ego': ['Lovato E-GO II'],\n  'suggested-cng-exr': ['Lovato Smart ExR'],\n  'suggested-cng-exr-ego': ['Lovato Smart ExR', 'Lovato E-GO II'],\n  'suggested-cng-cobd-exr': ['Lovato C-OBD II', 'Lovato Smart ExR'],\n  'suggested-cng-cobd': ['Lovato C-OBD II'],\n  'suggested-cng-cobd-6cyl': ['Lovato C-OBD II 5-6cyl'],\n  'suggested-cng-cobd-8cyl': ['Lovato C-OBD II 8cyl'],\n  'suggested-cng-di3000b': ['Lovato Direct Injection'],\n  'suggested-cng-di60': ['Lovato Direct Injection ExR'],\n  'suggested-cng-di60canff': ['Lovato Direct Injection ExR CAN FF'],\n  'suggested-cng-di108': ['Lovato Direct Injection ExR 5-6cyl'],\n  'suggested-cng-di108-8cyl': ['Lovato Direct Injection ExR 8cyl'],\n  'suggested-cng-monou': ['Lovato Μονού Ψεκασμού']\n};\n\nconst makeImgPrefix = 'https://uploads-ssl.webflow.com/60362f40a83dcf0034eb880b/';\nconst makeImgDict = {\n  'ALFA ROMEO': '6077f1d502c7ef4d03ff154b_Alfa_Romeo.avif',\n  'ALFA ROMEO PNG': '6077f1d502c7ef4d03ff154b_Alfa_Romeo.png',\n  AUDI: '6077f607b580721ba1274496_Audi.png',\n  BMW: '6077f607325eb960af680a4e_BMW.png',\n  CADILLAC: '61b8fd8721dd7f462b25e630_Cadillac.png',\n  CHEVROLET: '6077f60729203574193c205c_Chevrolet.png',\n  CHRYSLER: '6077f6077735848685f48c4d_Chrysler.png',\n  CITROEN: '6077f607703f5581b7a6b6e9_Citroen.png',\n  DACIA: '6077f607ac4c2566782969fa_Dacia.png',\n  DAEWOO: '6077f6096e3ae999700f15ad_Daewoo.png',\n  DAIHATSU: '6077f6095e0f21739e801c4d_Daihatsu.png',\n  DODGE: '6077f60929203581043c205d_Dodge.png',\n  FIAT: '6077f609aecccf25fc3868f0_Fiat.png',\n  FORD: '6077f609ed355314a4ea8ba7_Ford.png',\n  HONDA: '6077f6094bacedfa12748b66_Honda.png',\n  HUMMER: '6077f609325eb912c5680a51_Hummer.png',\n  HYUNDAI: '6077f60969316192201b5e9a_Hyundai.png',\n  JAGUAR: '6077f609703f555667a6b6eb_Jaguar.png',\n  JEEP: '6077f6099881859ece0dc158_Jeep.png',\n  KIA: '6077f609ed35535997ea8ba8_Kia.jpg',\n  LADA: '6077f60b7735848bc7f48c50_Lada.png',\n  LANCIA: '6077f60b703f55244fa6b6ec_Lancia.png',\n  'LAND ROVER': '6077f60baecccf47553868f2_Land_Rover.png',\n  LEXUS: '6077f60b02c7ef3588ff4bed_Lexus.png',\n  MAZDA: '6077f60bac4c25e840296a07_Mazda.png',\n  'MERCEDES-BENZ': '6077f60b2cf4c1fc9aeb4a97_Mercedes-Benz.png',\n  MG: '63132f4ce66c6bff8c0bdbba_MG.png',\n  MINI: '6077f60dec0785fc99826f63_Mini.png',\n  MITSUBISHI: '6077f60df4fa193ad096cf91_Mitsubishi.png',\n  NISSAN: '6077f60c3f6057d3245ac3fd_Nissan.png',\n  OPEL: '6077f60d8ec314543c0c7030_Opel.png',\n  PEUGEOT: '6077f60da5cf01576cad4d60_Peugeot.png',\n  PORSCHE: '6077f60dec07850afc826f64_Porsche.png',\n  RENAULT: '6077f60e7c02f416a420a7ea_Renault.png',\n  ROVER: '6077f60deb33aa3e792d0d74_Rover.png',\n  SAAB: '6077f60dde273a2a845dc8c0_Saab.png',\n  SEAT: '6077f60e66bedcb79fa5a7ff_Seat.png',\n  SKODA: '6077f60e9d13c22e7326344f_Skoda.png',\n  SMART: '6077f60dacb311235e2254ff_Smart.png',\n  SUBARU: '6077f60f51e2742da00ac18a_Subaru.png',\n  SUZUKI: '6077f60f1fb9c523b6315031_Suzuki.png',\n  TOYOTA: '6077f60f163ba8861a8a41ee_Toyota.png',\n  VOLVO: '6077f60f6931617b461b5e9e_Volvo.png',\n  VW: '6077f60f66bedc404ea5a800_VW.png'\n};\n\nconst systemFullKitLogoUrlPrefix = 'https://uploads-ssl.webflow.com/60362f40a83dcf0034eb880b/';\nconst systemFullKitLogoUrlDict = {\n  'Lovato E-GO II': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee7346ab570f60d7bb37a_4cyl-lpg-ego.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6754280dc37314e8f73e_4cyl-cng-ego.jpg'\n    },\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '6088406ac599186f8b2b6a24_ego-logo-02.svg',\n      cng: systemFullKitLogoUrlPrefix + '6088406ac599186f8b2b6a24_ego-logo-02.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '610521c827db504fc22c670e_ego-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '610521c827db504fc22c670e_ego-logo.png'\n    }\n  },\n  'Lovato Smart ExR': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee733adf1d40cb74f7833_4cyl-lpg-smart.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6754af4e784afb8330cf_4cyl-cng-smart-exr.jpg'\n    },\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '622a02bdd112ce17bceea736_smart-exr-flat-03.svg',\n      cng: systemFullKitLogoUrlPrefix + '622a02bdd112ce17bceea736_smart-exr-flat-03.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '6105218ad75db243ceeb475a_exr-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '6105218ad75db243ceeb475a_exr-logo.png'\n    }\n  },\n  'Lovato C-OBD II': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee60f5628ed4315175916_4cyl-lpg-cobd.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef67541fd9cd4ad1733d00_4cyl-cng-cobd.jpg'\n    },\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg',\n      cng: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png'\n    }\n  },\n  'Lovato C-OBD II 5-6cyl': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee733d5512eddeaba0e27_6-cyl-lpg-cobd.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef675387535ba8bd37a04b_6-cyl-cng-cobd.jpg'\n    },\n    cylsDescr: '5-6cyl',\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg',\n      cng: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png'\n    }\n  },\n  'Lovato C-OBD II 8cyl': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee73479dd0f4e870b8c45_8-cyl-lpg-cobd.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6755572ae6790a962780_8-cyl-cng-cobd.jpg'\n    },\n    cylsDescr: '8cyl',\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg',\n      cng: systemFullKitLogoUrlPrefix + '60883f7a4d700e4999151d5c_c-obd-logo-01.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '610521b043afc02057ae8d57_c-obd-logo.png'\n    }\n  },\n\n  //DI\n  'Lovato Direct Injection': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee7341aea14affe7a7745_4cyl-lpg-DI.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6754a7bdb14d467b2a9b_4cyl-cng-DI.jpg'\n    },\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '608843a4610d5c0d5968174c_direct-logo-04.svg',\n      cng: systemFullKitLogoUrlPrefix + '608843a4610d5c0d5968174c_direct-logo-04.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '61052116bda194738e42d1c5_di-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '61052116bda194738e42d1c5_di-logo.png'\n    }\n  },\n  'Lovato Direct Injection ExR': {\n    fullKit: {\n      cng: systemFullKitLogoUrlPrefix + '60ef6754b39a8f3c2e68a726_4cyl-cng-DI-exr.jpg'\n    },\n    logo: { cng: systemFullKitLogoUrlPrefix + '608842f17c61a41e6f07fe13_di-exr-logo-04.svg' },\n    pngLogo: { cng: systemFullKitLogoUrlPrefix + '610521dc5b98822c26e0144d_di-exr-logo.png' }\n  },\n\n  'Lovato Direct Injection UHPII': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee7341aea14affe7a7745_4cyl-lpg-DI.jpg'\n    },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f1388d4d57ff9843091_DI-UHPII.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f1c86fca5d72d1a5a64_DI-UHPII.png' }\n  },\n  'Lovato Direct Injection ExR UHPII': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee73476c7f3f6e21a5dd8_4cyl-lpg-DI-exr.jpg'\n    },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f12b96f0a0e014dec6d_DI-EXR-UHPII.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f1c88d4d54f4d8431a4_DI-EXR-UHPII.png' }\n  },\n  'Lovato Direct Injection ExR UHPII 5-6cyl': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee73479dd0f30d40b8c44_6-cyl-lpg-DI-exr.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6753d4f2f6533da6f5d7_6-cyl-cng-DI-exr.jpg'\n    },\n    cylsDescr: '5-6cyl',\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f12b96f0a0e014dec6d_DI-EXR-UHPII.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f1c88d4d54f4d8431a4_DI-EXR-UHPII.png' }\n  },\n  'Lovato Direct Injection ExR 5-6cyl': {\n    fullKit: { cng: systemFullKitLogoUrlPrefix + '60ef6753d4f2f6533da6f5d7_6-cyl-cng-DI-exr.jpg' },\n    cylsDescr: '5-6cyl',\n    logo: { cng: systemFullKitLogoUrlPrefix + '608842f17c61a41e6f07fe13_di-exr-logo-04.svg' },\n    pngLogo: { cng: systemFullKitLogoUrlPrefix + '610521dc5b98822c26e0144d_di-exr-logo.png' }\n  },\n  'Lovato Direct Injection ExR DD': {\n    fullKit: { lpg: systemFullKitLogoUrlPrefix + '60eee73476c7f3f6e21a5dd8_4cyl-lpg-DI-exr.jpg' },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f11d60a033413f2f3fc_DI-EXR-DD.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f192fdd336f76ea0a54_DI-EXR-DD.png' }\n  },\n  'Lovato Direct Injection DD': {\n    fullKit: { lpg: systemFullKitLogoUrlPrefix + '60eee7341aea14affe7a7745_4cyl-lpg-DI.jpg' },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f10b6166640ccb3f619_DI-DD.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f19292185d881e24ef3_DI-DD.png' }\n  },\n  'Lovato Direct Injection ExR CAN FF DD': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee73476c7f3f6e21a5dd8_4cyl-lpg-DI-exr.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6754b39a8f3c2e68a726_4cyl-cng-DI-exr.jpg'\n    },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f126bc64e2e221b4c41_DI-CAN-FF-DD.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f19d60a038cdcf2f496_DI-EXR-CAN-FF-DD.png' }\n  },\n  'Lovato Direct Injection ExR CAN FF UHPII': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60eee73476c7f3f6e21a5dd8_4cyl-lpg-DI-exr.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60ef6754b39a8f3c2e68a726_4cyl-cng-DI-exr.jpg'\n    },\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f13522f8bfd8f96a8c5_DI-EXR-CAN-FF-UHPII.svg' },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '61b71f195f659e06efd543d8_DI-EXR-CAN-FF-UHPII.png'\n    }\n  },\n  'Lovato Direct Injection ExR CAN FF': {\n    fullKit: { cng: systemFullKitLogoUrlPrefix + '60ef6754b39a8f3c2e68a726_4cyl-cng-DI-exr.jpg' },\n    logo: { cng: systemFullKitLogoUrlPrefix + '61b88412710b69bfcfde130d_DI-EXR-CAN-FF-05.svg' },\n    pngLogo: { cng: systemFullKitLogoUrlPrefix + '61b8843c4e91a4356998ff18_DI-EXR-CAN-FF.png' }\n  },\n  'Lovato Direct Injection ExR UHPII 8cyl': {\n    fullKit: { lpg: systemFullKitLogoUrlPrefix + '60eee73410da6d79bf573625_8-cyl-lpg-DI-exr.jpg' },\n    cylsDescr: '8cyl',\n    logo: { lpg: systemFullKitLogoUrlPrefix + '61b71f12b96f0a0e014dec6d_DI-EXR-UHPII.svg' },\n    pngLogo: { lpg: systemFullKitLogoUrlPrefix + '61b71f1c88d4d54f4d8431a4_DI-EXR-UHPII.png' }\n  },\n\n  'Lovato Direct Injection ExR 8cyl': {\n    fullKit: { cng: systemFullKitLogoUrlPrefix + '60ef6759d2274958726b8934_8-cyl-cng-DI-exr.jpg' },\n    cylsDescr: '8cyl',\n    logo: { cng: systemFullKitLogoUrlPrefix + '608842f17c61a41e6f07fe13_di-exr-logo-04.svg' },\n    pngLogo: { cng: systemFullKitLogoUrlPrefix + '610521dc5b98822c26e0144d_di-exr-logo.png' }\n  },\n\n  'Lovato Μονού Ψεκασμού': {\n    fullKit: {\n      lpg: systemFullKitLogoUrlPrefix + '60f01499ce19af4ccee7b7ea_lpg-monou-simeiou.jpg',\n      cng: systemFullKitLogoUrlPrefix + '60f014997b549b2900dc2d28_cng-monou-simeiou.jpg'\n    },\n    logo: {\n      lpg: systemFullKitLogoUrlPrefix + '60a7d730fbc8089bc98263ae_monou-psekasmou-05.svg',\n      cng: systemFullKitLogoUrlPrefix + '60a7d730fbc8089bc98263ae_monou-psekasmou-05.svg'\n    },\n    pngLogo: {\n      lpg: systemFullKitLogoUrlPrefix + '610521a1778a96783b06a71d_monou-logo.png',\n      cng: systemFullKitLogoUrlPrefix + '610521a1778a96783b06a71d_monou-logo.png'\n    }\n  }\n};\n\nconst strictSummaryPolicyReferrers = ['kalogritsasgas.gr', 'autoroumeliotis.gr']; //\n\nconst VAT = 1.24;\n\n//SELECTED FUEL\nlpgFuelSelectBtns = document.querySelectorAll('.lpg-fuel-select-btn');\ncngFuelSelectBtns = document.querySelectorAll('.cng-fuel-select-btn');\n\n//EASY PAY\nconst prokatavoliNoCreditSlider = document.querySelector('.prokatavoli-no-credit-slider');\nconst prokatavoliCreditSlider = document.querySelector('.prokatavoli-credit-slider');\n\nconst doseisNoCreditSlider = document.querySelector('.doseis-no-credit-slider');\n// const doseisCreditSelect = document.querySelector('.doseis-credit-select');\nconst doseisCreditSlider = document.querySelector('.doseis-credit-slider');\n\nconst noVehicleNoCreditSlider = document.querySelector('.no-vehicle-no-credit-slider');\nconst noVehicleCreditSlider = document.querySelector('.no-vehicle-credit-slider');\nconst noVehicleMetrhtaSlider = document.querySelector('.no-vehicle-metrhta-slider');\n\nconst prokatavoliNoCreditCover = document.querySelector('.prokatavoli-no-credit-cover');\nconst prokatavoliCreditCover = document.querySelector('.prokatavoli-credit-cover');\n\nconst doseisNoCreditCover = document.querySelector('.doseis-no-credit-cover');\nconst doseisCreditCover = document.querySelector('.doseis-credit-cover');\n\nconst noVehicleNoCreditCover = document.querySelector('.no-vehicle-no-credit-cover');\nconst noVehicleCreditCover = document.querySelector('.no-vehicle-credit-cover');\nconst noVehicleMetrhtaCover = document.querySelector('.no-vehicle-metrhta-cover');\n\nconst outputNoCreditProkatavoli = document.querySelector('.output-no-credit-prokatavoli');\nconst outputCreditProkatavoli = document.querySelector('.output-credit-prokatavoli');\n\nconst outputNoCreditDoseis = document.querySelector('.output-no-credit-doseis');\nconst outputCreditDoseis = document.querySelector('.output-credit-doseis');\n\nconst outputNoCreditNoVehicle = document.querySelector('.output-no-credit-no-vehicle');\nconst outputCreditNoVehicle = document.querySelector('.output-credit-no-vehicle');\nconst outputMetrhtaNoVehicle = document.querySelector('.output-metrhta-no-vehicle');\n\nconst noCreditProkatavoliMinus = document.querySelector('.no-credit-prokatavoli-minus');\nconst noCreditProkatavoliPlus = document.querySelector('.no-credit-prokatavoli-plus');\nconst creditProkatavoliMinus = document.querySelector('.credit-prokatavoli-minus');\nconst creditProkatavoliPlus = document.querySelector('.credit-prokatavoli-plus');\n\nconst noCreditDoseisMinus = document.querySelector('.no-credit-doseis-minus');\nconst noCreditDoseisPlus = document.querySelector('.no-credit-doseis-plus');\nconst creditDoseisMinus = document.querySelector('.credit-doseis-minus');\nconst creditDoseisPlus = document.querySelector('.credit-doseis-plus');\n\nconst noCreditNoVehicleMinus = document.querySelector('.no-credit-no-vehicle-minus');\nconst noCreditNoVehiclePlus = document.querySelector('.no-credit-no-vehicle-plus');\nconst creditNoVehicleMinus = document.querySelector('.credit-no-vehicle-minus');\nconst metrhtaNoVehicleMinus = document.querySelector('.metrhta-no-vehicle-minus');\nconst creditNoVehiclePlus = document.querySelector('.credit-no-vehicle-plus');\nconst metrhtaNoVehiclePlus = document.querySelector('.metrhta-no-vehicle-plus');\n\nconst noCreditEnapomeinanPoso = document.querySelector('.no-credit-enapomeinan-poso');\nconst creditEnapomeinanPoso = document.querySelector('.credit-enapomeinan-poso');\n\nconst noCreditFinalCost = document.querySelector('.no-credit-final-cost');\nconst creditFinalCost = document.querySelector('.credit-final-cost');\n\nconst noCreditMonthlyCost = document.querySelector('.no-credit-monthly-cost');\nconst noCreditMonthlyGain = document.querySelector('.no-credit-monthly-gain');\nconst creditMonthlyCost = document.querySelector('.credit-monthly-cost');\nconst creditMonthlyGain = document.querySelector('.credit-monthly-gain');\nconst metrhtaFinalCost = document.querySelector('.metrhta-final-cost');\nconst metrhtaYearlyGain = document.querySelector('.metrhta-yearly-gain');\n\nconst minProkatavoliNoCreditSliderText = document.querySelector(\n  '.min-prokatavoli-no-credit-slider-text'\n);\nconst maxProkatavoliNoCreditSliderText = document.querySelector(\n  '.max-prokatavoli-no-credit-slider-text'\n);\nconst minProkatavoliCreditSliderText = document.querySelector(\n  '.min-prokatavoli-credit-slider-text'\n);\nconst maxProkatavoliCreditSliderText = document.querySelector(\n  '.max-prokatavoli-credit-slider-text'\n);\n\nconst minDoseisNoCreditSliderText = document.querySelector('.min-doseis-no-credit-slider-text');\nconst maxDoseisNoCreditSliderText = document.querySelector('.max-doseis-no-credit-slider-text');\nconst minDoseisCreditSliderText = document.querySelector('.min-doseis-credit-slider-text');\nconst maxDoseisCreditSliderText = document.querySelector('.max-doseis-credit-slider-text');\n\nconst minNoVehicleNoCreditSliderText = document.querySelector(\n  '.min-no-vehicle-no-credit-slider-text'\n);\nconst maxNoVehicleNoCreditSliderText = document.querySelector(\n  '.max-no-vehicle-no-credit-slider-text'\n);\nconst minNoVehicleCreditSliderText = document.querySelector('.min-no-vehicle-credit-slider-text');\nconst maxNoVehicleCreditSliderText = document.querySelector('.max-no-vehicle-credit-slider-text');\nconst minNoVehicleMetrhtaSliderText = document.querySelector('.min-no-vehicle-metrhta-slider-text');\nconst maxNoVehicleMetrhtaSliderText = document.querySelector('.max-no-vehicle-metrhta-slider-text');\n\nconst fuelPricesSelect = document.querySelector('#fuelPricesSelect');\nconst notConvertibleFormLocationSelect = document.querySelector(\n  '#notConvertibleFormLocationSelect'\n);\n\nconst notificationIconBasket = document.querySelector('.notification-icon-basket');\n\nconst storesLocationSelect = document.querySelector('#selectStores');\n\nlet noCreditInterest = 12.6;\n\nlet creditInterest = 8.2; //7.2 //credit + isfora\n\n// let sourceReferrerDomain;\n// let remainingPremium = null; // 'always';\n\nconst h2FuelSelection = document.querySelector('.h2-fuel-selection');\nconst notConvFormSubmitBtn = document.querySelector('#notConvFormSubmitBtn');\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  // initRemainingPremium();\n  if (preferredStorage.userSelections) userSelections = getUserSelections();\n  userSelections.selectedFuel = 'lpg';\n\n  initSelects();\n  initContainersTabs();\n  initFuelPrices();\n  initDriveOftenRadio();\n  initSelectedFuelListeners();\n  initCalcOptions();\n  initEasyPay();\n  initStores();\n  //localStorage.clear();\n  //initStorage();\n  initMails();\n  initUserInfo();\n  initBasket();\n  // initCss();\n\n  // initLotteryCountdown();\n\n  showFacebookBrowserProblem(isFacebookBrowser());\n\n  initStepInterval();\n  initProgressSteps();\n\n  initHint();\n\n  // getSourceReferrerDomain();\n  initForeignReferrerOptions();\n\n  // hideSuggestedContainers();\n\n  initPulses();\n  // configGtag();\n  initNotConvSubmitBtn();\n\n  easyPayFileUploader();\n});\n\n// function configGtag() {\n//   gtag('config', 'G-1BV1MH8CNJ', { global_referrer_domain: sourceReferrerDomain });\n// }\n\n// function initRemainingPremium() {\n//   fetch(urlRemainingPremium)\n//     .then(res => res.json())\n//     .then(data => {\n//       document.querySelector('#remainingPremium').textContent = data?.remaining || 500;\n//       remainingPremium = data?.remaining;\n//     })\n//     .catch(e => console.error('Error on FuelPrices Fetch:', e));\n// }\n\nfunction initNotConvSubmitBtn() {\n  document.querySelector('#notConvFormSubmitBtn').setAttribute('type', 'button');\n}\n\nfunction initPulses() {\n  const carPulse = document.createElement('div');\n  carPulse.classList.add('pulse', 'car-pulse');\n  document.querySelector('#email-form').prepend(carPulse);\n\n  const summaryPulse = document.createElement('div');\n  summaryPulse.classList.add('pulse', 'summary-pulse');\n  document.querySelector('.summary-btns-container').prepend(summaryPulse);\n  togglePulse('.summary-pulse', false);\n\n  summaryPulse.addEventListener('click', e =>\n    document.querySelector('.open-download-form').click()\n  );\n}\n\nfunction togglePulse(pulseSelector, show) {\n  document.querySelector(pulseSelector).style.display = show ? 'block' : 'none';\n}\n\nfunction hideSuggestedContainers() {\n  suggestedContainers.forEach(c => (c.style.display = 'none'));\n}\n\nfunction initForeignReferrerOptions() {\n  const urlParams = new URLSearchParams(window.location.search);\n  if (urlParams.has('foreignReferrer') && urlParams.get('foreignReferrer') === 'true') {\n    const dontShowEls = [\n      '.nav-link-container',\n      '.menu-button.w-nav-button',\n      '#stores',\n      '#testimonials',\n      '#remarketing',\n      '#contact',\n      '#footer'\n    ];\n    if (!(urlParams.has('showHero') && urlParams.get('showHero') === 'true')) {\n      // dontShowEls.push('#hero', '#vehicle img');\n    } else {\n      const newLink = `?foreignReferrer=true&domain=${sourceReferrerDomain}`;\n      const gogasBtn = document.querySelector('#gogasBtn');\n      gogasBtn.href = gogasBtn.href + newLink;\n      // const gogasHeroImgA = document.querySelector('.hero-slide-2 a');\n      // gogasHeroImgA.href = gogasHeroImgA.href + newLink;\n    }\n\n    dontShowEls.forEach(query => (document.querySelector(query).style.display = 'none'));\n\n    document.querySelector('a.brand').target = '_blank';\n    document.querySelector('.foreign-summary-text').textContent = 'έλα στο συνεργείο μας!';\n    document.querySelector('#storesStepMenu .progress-text').textContent = 'Έλα στο συνεργείο μας';\n    document.querySelector('#hamburgerMenuDiv').remove();\n\n    adjustContactInfoContainer();\n  }\n}\n\nfunction adjustContactInfoContainer() {\n  document.querySelector('.email-overlay').remove();\n  const outerHTML = document.querySelector('.email-contact-pop-up').outerHTML;\n  document.querySelector('.email-contact-pop-up').remove();\n\n  const div = document.createElement('div');\n  div.innerHTML = outerHTML;\n  const contactInfoContainer = div.firstChild;\n\n  contactInfoContainer.style.position = 'absolute';\n  contactInfoContainer.style.bottom = '-140px';\n  contactInfoContainer.style.display = 'none';\n\n  document.querySelector('#summary').prepend(contactInfoContainer);\n\n  document\n    .querySelector('#submitSummaryBtn')\n    .addEventListener('click', e => handleSummarySubmit(e, 'form'));\n  document.querySelector('.contact-pop-up-close').addEventListener('click', closeSummaryForm);\n\n  initUserInfo();\n}\n\nfunction initHint() {\n  document.querySelector('.hint').style.display = 'flex';\n}\n\nfunction initProgressSteps() {\n  changeProgressStepState('fuel', 'green');\n  // changeProgressStepState('car', 'next');\n}\n\nfunction showFacebookBrowserProblem(show) {\n  if (isFacebookBrowser()) {\n    document.querySelector('.facebook-browser-div').style.display = show ? 'block' : 'none';\n  }\n}\n\nfunction initCalcOptions() {\n  resetCalc();\n  // document.querySelector('#consumptionModelNameCalc').textContent = 'αυτοκίνητό σας';\n  // document.querySelector('#consumptionModelNameCalc').classList.remove('calc-info-style');\n}\n\nfunction initBasket() {\n  updateBasketSection({ resetNoVehicle: true });\n  progressStepClickedOnSidebar(); //Close when progress step is clicked\n}\n\nfunction progressStepClickedOnSidebar() {\n  document.querySelectorAll('.side-bar-content .step-progress .flex-step').forEach(stepEl =>\n    stepEl.addEventListener('click', e => {\n      document.querySelector('.side-bar-close').click();\n    })\n  );\n}\n\nfunction initMails() {\n  [...document.querySelectorAll('.info-email')].map(\n    el => (el.textContent = 'info@lovatohellas.gr')\n  );\n}\n\nfunction initUserInfo() {\n  userInfo = getUserInfo() || {};\n  [...document.querySelectorAll('.user-info-username')].map(el => {\n    el.value = userInfo.username || '';\n    el.autocomplete = 'name';\n  });\n  [...document.querySelectorAll('.user-info-email')].map(el => {\n    el.value = userInfo.email || '';\n    el.autocomplete = 'email';\n  });\n  [...document.querySelectorAll('.user-info-phone')].map(el => {\n    el.value = userInfo.phone || '';\n    el.autocomplete = 'phone';\n  });\n  [...document.querySelectorAll('.user-info-address')].map(el => {\n    el.value = userInfo.address || '';\n    el.autocomplete = 'street-address';\n  });\n  [...document.querySelectorAll('.user-info-comment')].map(el => {\n    el.value = userInfo.comment || '';\n  });\n  // userInfo.category = 0;\n\n  [...document.querySelectorAll('.user-info-username')].map(element =>\n    element.addEventListener('input', e => {\n      [...document.querySelectorAll('.user-info-username')].map(el => {\n        el.value = e.target.value;\n      });\n      userInfo.username = e.target.value;\n      saveUserInfo();\n    })\n  );\n  [...document.querySelectorAll('.user-info-email')].map(element =>\n    element.addEventListener('input', e => {\n      [...document.querySelectorAll('.user-info-email')].map(el => {\n        el.value = e.target.value;\n      });\n      userInfo.email = e.target.value;\n      saveUserInfo();\n    })\n  );\n\n  [...document.querySelectorAll('.user-info-phone')].map(element =>\n    element.addEventListener('input', e => {\n      [...document.querySelectorAll('.user-info-phone')].map(el => {\n        el.value = e.target.value;\n      });\n      userInfo.phone = e.target.value;\n      saveUserInfo();\n    })\n  );\n  [...document.querySelectorAll('.user-info-address')].map(element =>\n    element.addEventListener('input', e => {\n      [...document.querySelectorAll('.user-info-address')].map(el => {\n        el.value = e.target.value;\n      });\n      userInfo.address = e.target.value;\n      saveUserInfo();\n    })\n  );\n  [...document.querySelectorAll('.user-info-comment')].map(element =>\n    element.addEventListener('input', e => {\n      [...document.querySelectorAll('.user-info-comment')].map(el => {\n        el.value = e.target.value;\n      });\n      userInfo.comment = e.target.value;\n      saveUserInfo();\n    })\n  );\n}\nfunction initContainersTabs() {\n  const firstSystems = [\n    ...document.querySelectorAll('.easy-pay-suggested-system-div.system-1st-selection')\n  ];\n  const secondSystems = [\n    ...document.querySelectorAll('.easy-pay-suggested-system-div.system-2nd-selection')\n  ];\n\n  document.querySelectorAll('.system-switch').forEach(el => {\n    el.addEventListener('click', e => {\n      if (el.classList.contains('tab1')) {\n        if (userSelections.easyPay.method === 'Χωρίς πιστωτική κάρτα') {\n          firstSystems[0].click();\n        } else if (userSelections.easyPay.method === 'Με πιστωτική κάρτα') {\n          firstSystems[1].click();\n        } else if (userSelections.easyPay.method === 'Μετρητά') {\n          firstSystems[2].click();\n        }\n      }\n      if (el.classList.contains('tab2')) {\n        if (userSelections.easyPay.method === 'Χωρίς πιστωτική κάρτα') {\n          secondSystems[0].click();\n        } else if (userSelections.easyPay.method === 'Με πιστωτική κάρτα') {\n          secondSystems[1].click();\n        } else if (userSelections.easyPay.method === 'Μετρητά') {\n          secondSystems[2].click();\n        }\n      }\n    });\n  });\n}\n\nfunction initSelects() {\n  modelSelect.disabled = true;\n  modelSelect.innerHTML = '<option value=\"\">Μοντέλο</option>';\n  yearSelect.disabled = true;\n  yearSelect.innerHTML = '<option value=\"\">Χρονολογία</option>';\n  descriptionSelect.disabled = true;\n  descriptionSelect.innerHTML = '<option value=\"\">Περιγραφή</option>';\n}\n\nfunction initFuelPrices() {\n  // if (\n  //   userSelections &&\n  //   userSelections.location &&\n  //   userSelections.fuelPrices &&\n  //   !isExpired(userSelections.fuelPrices.expDate)\n  // ) {\n  //   fuelPrices = userSelections.fuelPrices.prices;\n  //   initPlaceSelects(userSelections.location.place);\n  //   modifyFuelPriceSliders(userSelections.location.place);\n  // } else {\n  fetch(urlFuelPrices, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    }\n  })\n    .then(res => res.json())\n    .then(data => {\n      data.pop(); //removes m.o.\n      fuelPrices = data;\n\n      let newValue = 'ΑΤΤΙΚΗΣ';\n      // if (\n      //   userSelections &&\n      //   userSelections.location &&\n      //   userSelections.fuelPrices &&\n      //   isExpired(userSelections.fuelPrices.expDate)\n      // ) {\n      // newValue = userSelections.location.place;\n      // }\n\n      userSelections.fuelPrices = {\n        prices: fuelPrices\n        // expDate: setExpDate(fuelPricesCacheTime)\n      };\n\n      initPlaceSelects(newValue);\n      modifyFuelPriceSliders(newValue, { save: true });\n    })\n    .catch(e => console.error('Error on FuelPrices Fetch:', e));\n}\n\n// function setExpDate(ms) {\n//   return new Date().getTime() + ms;\n// }\n\n// function isExpired(expDate) {\n//   if (!expDate) return true;\n//   return new Date().getTime() > expDate;\n// }\n\nfunction initDriveOftenRadio() {\n  selectDriveOftenRadioInput(0);\n  document.querySelector('.consumption-wrapper').style.display = 'none';\n}\n\nfunction initPlaceSelects(placeValue) {\n  fuelPricesSelect.value = placeValue;\n  [...document.querySelectorAll('.place-calc-descr')].map(\n    el => (el.textContent = fuelPricesSelect.options[fuelPricesSelect.selectedIndex].textContent)\n  );\n  storesLocationSelect.value = placeValue;\n}\n\nfuelPricesSelect.addEventListener('change', e => {\n  locationOnChange(e.target.value);\n\n  updateBasketSection({ calculator: true });\n  if (step2Triggered && !step3Triggered) {\n    trigger_calculator_step_3({ triggered_via: 'click' });\n  }\n});\nnotConvertibleFormLocationSelect.addEventListener('change', e => {\n  locationOnChange(e.target.value);\n});\n\nfunction modifyFuelPriceSliders(value, { save = false } = {}) {\n  // console.log(fuelPrices);\n  const locationObj = fuelPrices.find(obj => obj.place.indexOf(value) !== -1);\n  if (!locationObj) return;\n\n  sliders[2].value = locationObj.petrol;\n  outputs[2].value = locationObj.petrol;\n  calcCovers[2].style.width = calcCoverWidth(sliders[2]) + '%';\n  sliders[3].value = locationObj.lpg;\n  outputs[3].value = locationObj.lpg;\n  calcCovers[3].style.width = calcCoverWidth(sliders[3]) + '%';\n  calcResult(false);\n  if (save) {\n    userSelections.calculator.fuelPricesSelectedIndex = fuelPricesSelect.selectedIndex;\n    userSelections.location = {\n      index: fuelPricesSelect.selectedIndex,\n      place: fuelPricesSelect.value\n    };\n    saveUserSelections();\n  }\n}\n\nfunction initSelectedFuelListeners() {\n  cngFuelSelectBtns.forEach(cngBtn => {\n    cngBtn.addEventListener('click', e => {\n      step2Triggered = false;\n      if (userSelections.selectedFuel === 'cng') return;\n      userSelections.selectedFuel = 'cng';\n      saveUserSelections();\n\n      h2FuelSelection.textContent = 'φυσικού αερίου';\n\n      const activeContainer = getActiveContainer();\n      if (activeContainer) {\n        activeContainer.style.display = 'none';\n        showResults(fetchedModelObj);\n      }\n      calcResult();\n      configureEasyPayMonthlyGain();\n      updateBasketSection({ selectedFuel: true });\n    });\n  });\n  lpgFuelSelectBtns.forEach(lpgBtn => {\n    lpgBtn.addEventListener('click', e => {\n      step2Triggered = false;\n      if (userSelections.selectedFuel === 'lpg') return;\n      userSelections.selectedFuel = 'lpg';\n      saveUserSelections();\n\n      h2FuelSelection.textContent = 'υγραεριοκίνησης';\n\n      const activeContainer = getActiveContainer();\n      if (activeContainer) {\n        activeContainer.style.display = 'none';\n        showResults(fetchedModelObj);\n      }\n      calcResult();\n      configureEasyPayMonthlyGain();\n      updateBasketSection({ selectedFuel: true });\n    });\n  });\n}\n\nfunction initEasyPay() {\n  initNoCredit();\n  initCredit();\n  initMetrhta();\n  initEasyPayTabs();\n  initEasyPaySystemSelection();\n  resetEasyPay();\n}\n\nfunction initNoCredit() {\n  prokatavoliNoCreditSlider.addEventListener('input', e =>\n    prokatavoliNoCreditSliderOnChange(e.target.value)\n  );\n  doseisNoCreditSlider.addEventListener('input', e => doseisNoCreditSliderOnChange(e.target.value));\n  noVehicleNoCreditSlider.addEventListener('input', e =>\n    noVehicleNoCreditSliderOnChange(e.target.value)\n  );\n\n  outputNoCreditProkatavoli.addEventListener('change', function () {\n    if (+this.value > +prokatavoliNoCreditSlider.max) this.value = prokatavoliNoCreditSlider.max;\n    if (+this.value < +prokatavoliNoCreditSlider.min) this.value = prokatavoliNoCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    prokatavoliNoCreditSliderOnChange(this.value);\n  });\n\n  outputNoCreditDoseis.addEventListener('change', function () {\n    if (+this.value > +doseisNoCreditSlider.max) this.value = doseisNoCreditSlider.max;\n    if (+this.value < +doseisNoCreditSlider.min) this.value = doseisNoCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    doseisNoCreditSliderOnChange(this.value);\n  });\n\n  outputNoCreditNoVehicle.addEventListener('change', function () {\n    if (+this.value > +noVehicleNoCreditSlider.max) this.value = noVehicleNoCreditSlider.max;\n    if (+this.value < +noVehicleNoCreditSlider.min) this.value = noVehicleNoCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    noVehicleNoCreditSliderOnChange(this.value);\n  });\n\n  noCreditProkatavoliMinus.addEventListener('click', () =>\n    prokatavoliNoCreditSliderOnChange(\n      parseInt(prokatavoliNoCreditSlider.value) - parseInt(prokatavoliNoCreditSlider.step)\n    )\n  );\n  noCreditProkatavoliPlus.addEventListener('click', () =>\n    prokatavoliNoCreditSliderOnChange(\n      parseInt(prokatavoliNoCreditSlider.value) + parseInt(prokatavoliNoCreditSlider.step)\n    )\n  );\n\n  noCreditDoseisMinus.addEventListener('click', () =>\n    doseisNoCreditSliderOnChange(\n      parseInt(doseisNoCreditSlider.value) - parseInt(doseisNoCreditSlider.step)\n    )\n  );\n  noCreditDoseisPlus.addEventListener('click', () =>\n    doseisNoCreditSliderOnChange(\n      parseInt(doseisNoCreditSlider.value) + parseInt(doseisNoCreditSlider.step)\n    )\n  );\n\n  noCreditNoVehicleMinus.addEventListener('click', () =>\n    noVehicleNoCreditSliderOnChange(\n      parseInt(noVehicleNoCreditSlider.value) - parseInt(noVehicleNoCreditSlider.step)\n    )\n  );\n  noCreditNoVehiclePlus.addEventListener('click', () =>\n    noVehicleNoCreditSliderOnChange(\n      parseInt(noVehicleNoCreditSlider.value) + parseInt(noVehicleNoCreditSlider.step)\n    )\n  );\n}\nfunction initCredit() {\n  noVehicleCreditSlider.addEventListener('input', e =>\n    noVehicleCreditSliderOnChange(e.target.value)\n  );\n  prokatavoliCreditSlider.addEventListener('input', e =>\n    prokatavoliCreditSliderOnChange(e.target.value)\n  );\n  // doseisCreditSelect.addEventListener('change', e => doseisCreditSelectOnChange(e.target.value));\n\n  doseisCreditSlider.addEventListener('input', e => doseisCreditSliderOnChange(e.target.value));\n\n  outputCreditProkatavoli.addEventListener('change', function () {\n    if (+this.value > +prokatavoliCreditSlider.max) this.value = prokatavoliCreditSlider.max;\n    if (+this.value < +prokatavoliCreditSlider.min) this.value = prokatavoliCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    prokatavoliCreditSliderOnChange(this.value);\n  });\n\n  outputCreditDoseis.addEventListener('change', function () {\n    if (+this.value > +doseisCreditSlider.max) this.value = doseisCreditSlider.max;\n    if (+this.value < +doseisCreditSlider.min) this.value = doseisCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    doseisCreditSliderOnChange(this.value);\n  });\n\n  outputCreditNoVehicle.addEventListener('change', function () {\n    if (+this.value > +noVehicleCreditSlider.max) this.value = noVehicleCreditSlider.max;\n    if (+this.value < +noVehicleCreditSlider.min) this.value = noVehicleCreditSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    noVehicleCreditSliderOnChange(this.value);\n  });\n\n  creditProkatavoliMinus.addEventListener('click', () =>\n    prokatavoliCreditSliderOnChange(\n      parseInt(prokatavoliCreditSlider.value) - parseInt(prokatavoliCreditSlider.step)\n    )\n  );\n  creditProkatavoliPlus.addEventListener('click', () =>\n    prokatavoliCreditSliderOnChange(\n      parseInt(prokatavoliCreditSlider.value) + parseInt(prokatavoliCreditSlider.step)\n    )\n  );\n\n  creditDoseisMinus.addEventListener('click', () =>\n    doseisCreditSliderOnChange(\n      parseInt(doseisCreditSlider.value) - parseInt(doseisCreditSlider.step)\n    )\n  );\n  creditDoseisPlus.addEventListener('click', () =>\n    doseisCreditSliderOnChange(\n      parseInt(doseisCreditSlider.value) + parseInt(doseisCreditSlider.step)\n    )\n  );\n\n  creditNoVehicleMinus.addEventListener('click', () =>\n    noVehicleCreditSliderOnChange(\n      parseInt(noVehicleCreditSlider.value) - parseInt(noVehicleCreditSlider.step)\n    )\n  );\n  creditNoVehiclePlus.addEventListener('click', () =>\n    noVehicleCreditSliderOnChange(\n      parseInt(noVehicleCreditSlider.value) + parseInt(noVehicleCreditSlider.step)\n    )\n  );\n\n  // doseisCreditSelect.selectedIndex = 9; //12 doseis\n}\n\nfunction initMetrhta() {\n  noVehicleMetrhtaSlider.addEventListener('input', e =>\n    noVehicleMetrhtaSliderOnChange(e.target.value)\n  );\n\n  outputMetrhtaNoVehicle.addEventListener('change', function () {\n    if (+this.value > +noVehicleMetrhtaSlider.max) this.value = noVehicleMetrhtaSlider.max;\n    if (+this.value < +noVehicleMetrhtaSlider.min) this.value = noVehicleMetrhtaSlider.min;\n    if (+this.value) this.value = Math.round(+this.value);\n    noVehicleMetrhtaSliderOnChange(this.value);\n  });\n\n  metrhtaNoVehicleMinus.addEventListener('click', () =>\n    noVehicleMetrhtaSliderOnChange(\n      parseInt(noVehicleMetrhtaSlider.value) - parseInt(noVehicleMetrhtaSlider.step)\n    )\n  );\n  metrhtaNoVehiclePlus.addEventListener('click', () =>\n    noVehicleMetrhtaSliderOnChange(\n      parseInt(noVehicleMetrhtaSlider.value) + parseInt(noVehicleMetrhtaSlider.step)\n    )\n  );\n  document.querySelector('#metrhtaFormDisable').addEventListener('submit', e => e.preventDefault());\n}\n\nfunction initEasyPayTabs() {\n  document.querySelectorAll('.easy-pay-tab').forEach(el =>\n    el.addEventListener('click', e => {\n      userSelections.easyPay.method = getEasyPayMethod(e.target);\n      hasResult() && updateBasketSection({ easyPay: true, prokatavoliDoseis: true });\n\n      if (document.querySelector('.easy-pay-with-vehicle-container').style.display === 'none') {\n        if (e.target.classList.contains('no-credit-tab')) {\n          selectedEasyPaySystemPrice = +noVehicleNoCreditSlider.value;\n        } else if (e.target.classList.contains('credit-tab')) {\n          selectedEasyPaySystemPrice = +noVehicleCreditSlider.value;\n        } else if (e.target.classList.contains('metrhta-tab')) {\n          selectedEasyPaySystemPrice = +noVehicleCreditSlider.value;\n        }\n      }\n\n      if (step2Triggered && !step4Triggered) {\n        trigger_easy_pay_step_4({ triggered_via: 'click' });\n      }\n    })\n  );\n}\n\nfunction initEasyPaySystemSelection() {\n  document.querySelectorAll('.easy-pay-suggested-system-div').forEach(el =>\n    el.addEventListener('click', e => {\n      const selectedSystemDiv = e.target.closest('.easy-pay-suggested-system-div');\n\n      userSelections.easyPay.system = getEasyPaySystem(selectedSystemDiv);\n      updateBasketSection({ easyPay: true });\n\n      changePriceFontWeight(selectedSystemDiv);\n\n      const priceText = selectedSystemDiv.querySelector('.system-price-easy-pay').textContent;\n\n      const oldSelectedEasyPaySystemPrice = selectedEasyPaySystemPrice;\n      selectedEasyPaySystemPrice = parseFloat(priceText.replace('€', ''));\n      if (oldSelectedEasyPaySystemPrice === selectedEasyPaySystemPrice) return;\n\n      prokatavoliNoCreditSliderOnChange(prokatavoliNoCreditSlider.value);\n      prokatavoliCreditSliderOnChange(prokatavoliCreditSlider.value);\n      metrhtaFinalCost.textContent = selectedEasyPaySystemPrice.toFixed(2) + '€';\n\n      calcResult(false);\n\n      const systemTabs = [...getActiveContainer().querySelectorAll('.system-switch')];\n      if (el.classList.contains('system-1st-selection')) {\n        systemTabs[0].click();\n      }\n      if (el.classList.contains('system-2nd-selection')) {\n        systemTabs[1].click();\n      }\n\n      setImgDownloadSectionSrc();\n\n      if (step2Triggered && !step4Triggered) {\n        trigger_easy_pay_step_4({ triggered_via: 'click' });\n      }\n    })\n  );\n}\n\nfunction changePriceFontWeight(selectedSystemDiv) {\n  if (selectedSystemDiv.classList.contains('system-1st-selection')) {\n    [...document.querySelectorAll('.system-1st-selection .system-price-easy-pay')].map(\n      el => (el.style.fontWeight = 'bold')\n    );\n    [...document.querySelectorAll('.system-2nd-selection .system-price-easy-pay')].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n  } else {\n    [...document.querySelectorAll('.system-1st-selection .system-price-easy-pay')].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n    [...document.querySelectorAll('.system-2nd-selection .system-price-easy-pay')].map(\n      el => (el.style.fontWeight = 'bold')\n    );\n  }\n}\n\nfunction prokatavoliNoCreditSliderOnChange(value) {\n  const floorPrice = Math.floor(selectedEasyPaySystemPrice / 10) * 10;\n  prokatavoliNoCreditSlider.max = floorPrice - 500;\n  maxProkatavoliNoCreditSliderText.textContent = floorPrice - 500 + '€';\n\n  prokatavoliNoCreditSlider.value = value;\n  outputNoCreditProkatavoli.value = prokatavoliNoCreditSlider.value;\n  prokatavoliNoCreditCover.style.width = calcCoverWidth(prokatavoliNoCreditSlider) + '%';\n  prokatavoliNoCreditChangeMinMaxLabelsWeight();\n  noCreditEnapomeinanPoso.textContent = (\n    selectedEasyPaySystemPrice - parseInt(prokatavoliNoCreditSlider.value)\n  ).toFixed(1);\n  configureNoCreditMaxDoseisSlider();\n\n  if (!userSelections.vehicle.suggestions) return;\n\n  // userSelections.easyPay.noCreditSettings.prokatavoli = +prokatavoliNoCreditSlider.value;\n  // userSelections.easyPay.noCreditSettings.finalCost = noCreditFinalCost.textContent;\n\n  userSelections.easyPay.noCreditSettings = {\n    ...userSelections.easyPay.noCreditSettings,\n    prokatavoli: +prokatavoliNoCreditSlider.value,\n    finalCost: noCreditFinalCost.textContent,\n    monthlyCost: noCreditMonthlyCost.textContent\n  };\n\n  updateBasketSection({ prokatavoliDoseis: true });\n\n  if (step2Triggered && !step4Triggered) {\n    trigger_easy_pay_step_4({ triggered_via: 'click' });\n  }\n}\n\nfunction prokatavoliCreditSliderOnChange(value) {\n  const floorPrice = Math.floor(selectedEasyPaySystemPrice / 10) * 10;\n  prokatavoliCreditSlider.max = floorPrice - 100;\n  maxProkatavoliCreditSliderText.textContent = floorPrice - 100 + '€';\n\n  prokatavoliCreditSlider.value = value;\n  outputCreditProkatavoli.value = prokatavoliCreditSlider.value;\n  prokatavoliCreditCover.style.width = calcCoverWidth(prokatavoliCreditSlider) + '%';\n  prokatavoliCreditChangeMinMaxLabelsWeight();\n  creditEnapomeinanPoso.textContent = (\n    selectedEasyPaySystemPrice - parseInt(prokatavoliCreditSlider.value)\n  ).toFixed(1);\n  doseisCreditSliderOnChange(+doseisCreditSlider.value);\n  // doseisCreditSelectOnChange(+doseisCreditSelect.value);\n\n  if (!userSelections.vehicle.suggestions) return;\n  // userSelections.easyPay.creditSettings.prokatavoli = +prokatavoliCreditSlider.value;\n  // userSelections.easyPay.creditSettings.finalCost = creditFinalCost.textContent;\n\n  userSelections.easyPay.creditSettings = {\n    ...userSelections.easyPay.creditSettings,\n    prokatavoli: +prokatavoliCreditSlider.value,\n    finalCost: creditFinalCost.textContent,\n    monthlyCost: creditMonthlyCost.textContent\n  };\n  updateBasketSection({ prokatavoliDoseis: true });\n\n  if (step2Triggered && !step4Triggered) {\n    trigger_easy_pay_step_4({ triggered_via: 'click' });\n  }\n}\n\nfunction doseisNoCreditSliderOnChange(value) {\n  doseisNoCreditSlider.value = value;\n  outputNoCreditDoseis.value = doseisNoCreditSlider.value;\n  doseisNoCreditCover.style.width = calcCoverWidth(doseisNoCreditSlider) + '%';\n  doseisChangeMinMaxLabelsWeight();\n  configureNoCreditResults();\n\n  if (!userSelections.vehicle.suggestions) return;\n  // userSelections.easyPay.noCreditSettings = { ...userSelections.easyPay.noCreditSettings, doseis: +doseisNoCreditSlider.value };\n  // userSelections.easyPay.noCreditSettings.finalCost = noCreditFinalCost.textContent;\n\n  userSelections.easyPay.noCreditSettings = {\n    ...userSelections.easyPay.noCreditSettings,\n    doseis: +doseisNoCreditSlider.value,\n    finalCost: noCreditFinalCost.textContent,\n    monthlyCost: noCreditMonthlyCost.textContent\n  };\n  updateBasketSection({ prokatavoliDoseis: true });\n\n  if (step2Triggered && !step4Triggered) {\n    trigger_easy_pay_step_4({ triggered_via: 'click' });\n  }\n}\nfunction doseisCreditSliderOnChange(value) {\n  doseisCreditSlider.value = value;\n  outputCreditDoseis.value = doseisCreditSlider.value;\n  doseisCreditCover.style.width = calcCoverWidth(doseisCreditSlider) + '%';\n  doseisChangeMinMaxLabelsWeight();\n  configureCreditResults();\n\n  if (!userSelections.vehicle.suggestions) return;\n  // userSelections.easyPay.noCreditSettings = { ...userSelections.easyPay.noCreditSettings, doseis: +doseisNoCreditSlider.value };\n  // userSelections.easyPay.noCreditSettings.finalCost = noCreditFinalCost.textContent;\n\n  userSelections.easyPay.creditSettings = {\n    ...userSelections.easyPay.creditSettings,\n    doseis: +doseisCreditSlider.value,\n    finalCost: creditFinalCost.textContent,\n    monthlyCost: creditMonthlyCost.textContent\n  };\n  updateBasketSection({ prokatavoliDoseis: true });\n\n  if (step2Triggered && !step4Triggered) {\n    trigger_easy_pay_step_4({ triggered_via: 'click' });\n  }\n}\n\n// function doseisCreditSelectOnChange(value) {\n//   configureCreditResults();\n//   if (!userSelections.vehicle.suggestions) return;\n//   // userSelections.easyPay.creditSettings = {\n//   // \t...userSelections.easyPay.creditSettings,\n//   // \tdoseis: +doseisCreditSelect.value !== 1 ? +doseisCreditSelect.value : 'Χωρίς Δόσεις'\n//   // };\n//   // userSelections.easyPay.creditSettings.finalCost = creditFinalCost.textContent;\n//   userSelections.easyPay.creditSettings = {\n//     ...userSelections.easyPay.creditSettings,\n//     doseis: +doseisCreditSelect.value !== 1 ? +doseisCreditSelect.value : 'Χωρίς Δόσεις',\n//     finalCost: creditFinalCost.textContent,\n//     monthlyCost: creditMonthlyCost.textContent\n//   };\n//   updateBasketSection({ prokatavoliDoseis: true });\n\n//   if (step2Triggered && !step4Triggered) {\n//     trigger_easy_pay_step_4({ triggered_via: 'click' });\n//   }\n// }\n\nfunction noVehicleNoCreditSliderOnChange(value) {\n  noVehicleNoCreditSlider.value = value;\n  outputNoCreditNoVehicle.value = noVehicleNoCreditSlider.value;\n  noVehicleNoCreditCover.style.width = calcCoverWidth(noVehicleNoCreditSlider) + '%';\n  noVehicleNoCreditChangeMinMaxLabelsWeight();\n\n  selectedEasyPaySystemPrice = +noVehicleNoCreditSlider.value;\n  prokatavoliNoCreditSliderOnChange(prokatavoliNoCreditSlider.value);\n  // prokatavoliCreditSliderOnChange(prokatavoliCreditSlider.value);\n}\n\nfunction noVehicleCreditSliderOnChange(value) {\n  noVehicleCreditSlider.value = value;\n  outputCreditNoVehicle.value = noVehicleCreditSlider.value;\n  noVehicleCreditCover.style.width = calcCoverWidth(noVehicleCreditSlider) + '%';\n  noVehicleCreditChangeMinMaxLabelsWeight();\n\n  selectedEasyPaySystemPrice = +noVehicleCreditSlider.value;\n  prokatavoliCreditSliderOnChange(prokatavoliCreditSlider.value);\n  // prokatavoliNoCreditSliderOnChange(prokatavoliNoCreditSlider.value);\n}\nfunction noVehicleMetrhtaSliderOnChange(value) {\n  noVehicleMetrhtaSlider.value = value;\n  outputMetrhtaNoVehicle.value = noVehicleMetrhtaSlider.value;\n  noVehicleMetrhtaCover.style.width = calcCoverWidth(noVehicleMetrhtaSlider) + '%';\n  noVehicleMetrhtaChangeMinMaxLabelsWeight();\n  metrhtaFinalCost.textContent = (+noVehicleMetrhtaSlider.value).toFixed(2) + '€';\n\n  selectedEasyPaySystemPrice = +noVehicleMetrhtaSlider.value;\n  // prokatavoliMetrhtaSliderOnChange(prokatavoliMetrhtaSlider.value);\n}\n\nfunction prokatavoliNoCreditChangeMinMaxLabelsWeight() {\n  maxProkatavoliNoCreditSliderText.style.fontWeight =\n    prokatavoliNoCreditSlider.value === prokatavoliNoCreditSlider.max ? 'bold' : 'normal';\n  minProkatavoliNoCreditSliderText.style.fontWeight =\n    prokatavoliNoCreditSlider.value === prokatavoliNoCreditSlider.min ? 'bold' : 'normal';\n}\nfunction prokatavoliCreditChangeMinMaxLabelsWeight() {\n  maxProkatavoliCreditSliderText.style.fontWeight =\n    prokatavoliCreditSlider.value === prokatavoliCreditSlider.max ? 'bold' : 'normal';\n  minProkatavoliCreditSliderText.style.fontWeight =\n    prokatavoliCreditSlider.value === prokatavoliCreditSlider.min ? 'bold' : 'normal';\n}\nfunction doseisChangeMinMaxLabelsWeight() {\n  maxDoseisNoCreditSliderText.style.fontWeight =\n    doseisNoCreditSlider.value === doseisNoCreditSlider.max ? 'bold' : 'normal';\n  minDoseisNoCreditSliderText.style.fontWeight =\n    doseisNoCreditSlider.value === doseisNoCreditSlider.min ? 'bold' : 'normal';\n  maxDoseisCreditSliderText.style.fontWeight =\n    doseisCreditSlider.value === doseisCreditSlider.max ? 'bold' : 'normal';\n  minDoseisCreditSliderText.style.fontWeight =\n    doseisCreditSlider.value === doseisCreditSlider.min ? 'bold' : 'normal';\n}\nfunction noVehicleNoCreditChangeMinMaxLabelsWeight() {\n  maxNoVehicleNoCreditSliderText.style.fontWeight =\n    noVehicleNoCreditSlider.value === noVehicleNoCreditSlider.max ? 'bold' : 'normal';\n  minNoVehicleNoCreditSliderText.style.fontWeight =\n    noVehicleNoCreditSlider.value === noVehicleNoCreditSlider.min ? 'bold' : 'normal';\n}\nfunction noVehicleCreditChangeMinMaxLabelsWeight() {\n  maxNoVehicleCreditSliderText.style.fontWeight =\n    noVehicleCreditSlider.value === noVehicleCreditSlider.max ? 'bold' : 'normal';\n  minNoVehicleCreditSliderText.style.fontWeight =\n    noVehicleCreditSlider.value === noVehicleCreditSlider.min ? 'bold' : 'normal';\n}\nfunction noVehicleMetrhtaChangeMinMaxLabelsWeight() {\n  maxNoVehicleMetrhtaSliderText.style.fontWeight =\n    noVehicleMetrhtaSlider.value === noVehicleMetrhtaSlider.max ? 'bold' : 'normal';\n  minNoVehicleMetrhtaSliderText.style.fontWeight =\n    noVehicleMetrhtaSlider.value === noVehicleMetrhtaSlider.min ? 'bold' : 'normal';\n}\n\nminProkatavoliNoCreditSliderText.addEventListener('click', e =>\n  prokatavoliNoCreditSliderOnChange(prokatavoliNoCreditSlider.min)\n);\nmaxProkatavoliNoCreditSliderText.addEventListener('click', e =>\n  prokatavoliNoCreditSliderOnChange(prokatavoliNoCreditSlider.max)\n);\nminProkatavoliCreditSliderText.addEventListener('click', e =>\n  prokatavoliCreditSliderOnChange(prokatavoliCreditSlider.min)\n);\nmaxProkatavoliCreditSliderText.addEventListener('click', e =>\n  prokatavoliCreditSliderOnChange(prokatavoliCreditSlider.max)\n);\n\nminDoseisNoCreditSliderText.addEventListener('click', e =>\n  doseisNoCreditSliderOnChange(doseisNoCreditSlider.min)\n);\nmaxDoseisNoCreditSliderText.addEventListener('click', e =>\n  doseisNoCreditSliderOnChange(doseisNoCreditSlider.max)\n);\nminDoseisCreditSliderText.addEventListener('click', e =>\n  doseisCreditSliderOnChange(doseisCreditSlider.min)\n);\nmaxDoseisCreditSliderText.addEventListener('click', e =>\n  doseisCreditSliderOnChange(doseisCreditSlider.max)\n);\n\nminNoVehicleNoCreditSliderText.addEventListener('click', e =>\n  noVehicleNoCreditSliderOnChange(noVehicleNoCreditSlider.min)\n);\nmaxNoVehicleNoCreditSliderText.addEventListener('click', e =>\n  noVehicleNoCreditSliderOnChange(noVehicleNoCreditSlider.max)\n);\nminNoVehicleCreditSliderText.addEventListener('click', e =>\n  noVehicleCreditSliderOnChange(noVehicleCreditSlider.min)\n);\nmaxNoVehicleCreditSliderText.addEventListener('click', e =>\n  noVehicleCreditSliderOnChange(noVehicleCreditSlider.max)\n);\nminNoVehicleMetrhtaSliderText.addEventListener('click', e =>\n  noVehicleMetrhtaSliderOnChange(noVehicleMetrhtaSlider.min)\n);\nmaxNoVehicleMetrhtaSliderText.addEventListener('click', e =>\n  noVehicleMetrhtaSliderOnChange(noVehicleMetrhtaSlider.max)\n);\n\nfunction resetEasyPay() {\n  [...document.querySelectorAll('.easy-pay-vehicle-container')].map(\n    el => (el.style.display = 'none')\n  );\n  [...document.querySelectorAll('.easy-pay-with-vehicle-container')].map(\n    el => (el.style.display = 'none')\n  );\n  [...document.querySelectorAll('.easy-pay-no-vehicle-container')].map(\n    el => (el.style.display = 'flex')\n  );\n  [...document.querySelectorAll('.easy-pay-no-vehicle-descr')].map(\n    el => (el.style.display = 'flex')\n  );\n\n  selectedEasyPaySystemPrice = +noVehicleNoCreditSlider.value;\n  noVehicleNoCreditSliderOnChange(noVehicleNoCreditSlider.value);\n  noVehicleCreditSliderOnChange(noVehicleCreditSlider.value);\n  noVehicleMetrhtaSliderOnChange(noVehicleMetrhtaSlider.value);\n\n  resetLastStep();\n}\n\n/* STORAGE */\nfunction initStorage() {\n  const storageObj = JSON.parse(preferredStorage.getItem('userSelections'));\n  if (storageObj && Object.keys(storageObj.vehicle).length !== 0) {\n    userSelections = storageObj;\n    populateAndSelectAllOptions(userSelections.vehicle);\n  }\n}\n\nfunction populateAndSelectAllOptions(vehicle) {\n  let opts = makeSelect.options;\n  for (let i = 0; i <= opts.length; i++) {\n    if (vehicle.make === opts[i].value) {\n      makeSelect.selectedIndex = i;\n      break;\n    }\n  }\n  populateYearSelect(vehicle.fetched.fetchedYears);\n  opts = yearSelect.options;\n  for (let i = 0; i <= opts.length; i++) {\n    if (vehicle.year == opts[i].value) {\n      yearSelect.selectedIndex = i;\n      break;\n    }\n  }\n  populateModelSelect(vehicle.fetched.fetchedModels);\n  opts = modelSelect.options;\n  for (let i = 0; i <= opts.length; i++) {\n    if (vehicle.model === opts[i].value) {\n      modelSelect.selectedIndex = i;\n      break;\n    }\n  }\n  populateDescriptionSelect(vehicle.fetched.fetchedModelObj);\n  opts = descriptionSelect.options;\n  // if(opts.length > 2){\n  for (let i = 0; i <= opts.length; i++) {\n    if (vehicle.description === opts[i].value) {\n      descriptionSelect.selectedIndex = i;\n      break;\n    }\n  }\n  // }\n  suggestedContainers.forEach(cont => (cont.style.display = 'none'));\n  showResults(vehicle.fetched.fetchedModelObj);\n  calcResult(false);\n}\n\n/* STORAGE END */\n\nmakeSelect.addEventListener('change', function () {\n  modelSelect.disabled = true;\n  descriptionSelect.disabled = true;\n  modelSelect.innerHTML = '<option value=\"\">Μοντέλο</option>';\n  descriptionSelect.innerHTML = '<option value=\"\">Περιγραφή</option>';\n  suggestedContainers.forEach(container => {\n    container.style.display = 'none';\n  });\n  showCarMakeStep1(false);\n  showGuarantee(false);\n  resetCalc();\n  resetEasyPay();\n  step2Triggered = false;\n  calcResult(false);\n  updateBasketSection({ resetNoVehicle: true });\n  resetProgressSteps();\n  togglePulse('.car-pulse', false);\n  resetNotConvForm();\n\n  userSelections.vehicle = {};\n  delete userSelections.calculator.driveOftenIndex;\n  userSelections.easyPay = {};\n  saveUserSelections();\n\n  if (!this.value) {\n    yearSelect.disabled = true;\n    yearSelect.innerHTML = '<option value=\"\">Χρονολογία</option>';\n    togglePulse('.car-pulse', true);\n    togglePulse('.summary-pulse', false);\n    return;\n  }\n  yearSelect.disabled = false;\n  yearSelect.innerHTML = '';\n  startLoadingSelect(yearSelect);\n\n  let status;\n  fetch(urlYears, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ make: this.value })\n  })\n    .then(response => {\n      status = response.status;\n      return response.json();\n    })\n    .then(data => {\n      if (status !== 200) {\n        endLoadingSelect(yearSelect);\n        yearSelect.innerHTML = `<option value=\"\">Προσπαθήστε ξανά ${data.msg}</option>`;\n        console.warn('status = ' + status);\n        return;\n      }\n      fetchedYears = data;\n      // sessionStorage.clear(); //reset every time make changes\n      // sessionStorage.fetchedYears = JSON.stringify(fetchedYears);\n\n      populateYearSelect(fetchedYears);\n      endLoadingSelect(yearSelect);\n    })\n    .catch(error => {\n      endLoadingSelect(yearSelect);\n      let errorMsg;\n      if (status === 429) errorMsg = 'Πολλές κλήσεις, προσπαθήστε αργότερα....';\n      else errorMsg = 'Προσπαθήστε ξανά';\n      yearSelect.innerHTML = `<option value=\"\">${errorMsg}</option>`;\n      console.error('Error Fetch:', error);\n    });\n});\n\nfunction startLoadingSelect(select, triggeredFrom = null, type = null) {\n  if (!triggeredFrom) select.classList.add('loading-select');\n  else {\n    if (triggeredFrom === 'form') {\n      document.querySelector('#submitSummaryBtn').value = 'Ετοιμάζουμε την προσφορά σου...';\n    }\n    if (triggeredFrom === 'basket') {\n      if (type === 'download') {\n        if (isFacebookBrowser()) {\n          document.querySelector('.open-download-form').click();\n        } else {\n          document.querySelector('.download-summary-basket-descr').innerHTML =\n            'Ετοιμάζουμε την<br>προσφορά σου...';\n        }\n      } else if (type === 'email')\n        document.querySelector('.email-summary-basket-descr').innerHTML =\n          'Ετοιμάζουμε την<br>προσφορά σου...';\n    }\n  }\n}\nfunction endLoadingSelect(select, triggeredFrom = null, type = null) {\n  if (!triggeredFrom) select.classList.remove('loading-select');\n  else {\n    if (triggeredFrom === 'form') {\n      document.querySelector('#submitSummaryBtn').value =\n        formType === 'DOWNLOAD' ? 'Κατέβασε και εκτύπωσε!' : 'Πάρε με Email!';\n    }\n    if (triggeredFrom === 'basket') {\n      if (type === 'download')\n        document.querySelector('.download-summary-basket-descr').innerHTML =\n          'Κατέβασε<br>και εκτύπωσε!';\n      else if (type === 'email')\n        document.querySelector('.email-summary-basket-descr').innerHTML = 'Πάρε<br>σε email!';\n    }\n  }\n}\n\nfunction populateModelSelect(fetchedModels) {\n  let modelOptionsArray = ['<option value=\"\">Επιλέξτε Μοντέλο</option>'];\n  fetchedModels.forEach(model => {\n    modelOptionsArray.push(`<option value=\"${model}\">${model}</option>`);\n  });\n\n  modelSelect.innerHTML = modelOptionsArray.join('');\n  modelSelect.disabled = false;\n  modelSelect.focus();\n\n  if (modelOptionsArray.length === 2) {\n    modelSelect.selectedIndex = 1;\n    modelOnChange(modelSelect.value);\n    return;\n  }\n}\n\nyearSelect.addEventListener('change', e => yearOnChange(e.target.value));\nfunction yearOnChange(value) {\n  descriptionSelect.disabled = true;\n  descriptionSelect.innerHTML = '<option>Περιγραφή</option>';\n  suggestedContainers.forEach(container => {\n    container.style.display = 'none';\n  });\n  showCarMakeStep1(false);\n  showGuarantee(false);\n  resetCalc();\n  resetEasyPay();\n  step2Triggered = false;\n\n  calcResult(false);\n  updateBasketSection({ resetNoVehicle: true });\n  resetProgressSteps();\n  togglePulse('.summary-pulse', false);\n  resetNotConvForm();\n\n  userSelections.vehicle = {};\n  delete userSelections.calculator.driveOftenIndex;\n  userSelections.easyPay = {};\n  saveUserSelections();\n\n  if (!value) {\n    modelSelect.disabled = true;\n    modelSelect.innerHTML = '<option value=\"\">Μοντέλο</option>';\n    descriptionSelect.innerHTML = '<option value=\"\">Περιγραφή</option>';\n    return;\n  }\n\n  modelSelect.disabled = false;\n  modelSelect.innerHTML = '';\n  startLoadingSelect(modelSelect);\n  let status;\n  fetch(urlModels, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ make: makeSelect.value, year: value })\n  })\n    .then(response => {\n      status = response.status;\n      return response.json();\n    })\n    .then(data => {\n      if (status !== 200) {\n        endLoadingSelect(modelSelect);\n        yearSelect.innerHTML = `<option value=\"\">Προσπαθήστε ξανά ${data.msg}</option>`;\n        return;\n      }\n      fetchedModels = data;\n\n      populateModelSelect(fetchedModels);\n      endLoadingSelect(modelSelect);\n    })\n    .catch(error => {\n      endLoadingSelect(modelSelect);\n      yearSelect.innerHTML = '<option value=\"\">Προσπαθήστε ξανά</option>';\n      console.error('Error Fetch:', error);\n    });\n}\n\nfunction populateYearSelect(fetchedYears) {\n  let yearOptionsArray = ['<option value=\"\">Επιλέξτε Χρονολογία</option>'];\n\n  fetchedYears.forEach(year => {\n    yearOptionsArray.push(`<option value=\"${year}\">${year}</option>`);\n  });\n\n  yearSelect.innerHTML = yearOptionsArray.join('');\n  yearSelect.disabled = false;\n  yearSelect.focus();\n  //One option -> auto populate\n  if (yearOptionsArray.length === 2) {\n    yearSelect.selectedIndex = 1;\n    yearOnChange(yearSelect.value);\n    return;\n  }\n}\n\nmodelSelect.addEventListener('change', e => modelOnChange(e.target.value));\n\nfunction modelOnChange(value) {\n  suggestedContainers.forEach(container => {\n    container.style.display = 'none';\n  });\n  showCarMakeStep1(false);\n  showGuarantee(false);\n  resetCalc();\n  resetEasyPay();\n  step2Triggered = false;\n\n  calcResult(false);\n  updateBasketSection({ resetNoVehicle: true });\n  resetProgressSteps();\n  togglePulse('.summary-pulse', false);\n  resetNotConvForm();\n\n  userSelections.vehicle = {};\n  delete userSelections.calculator.driveOftenIndex;\n  userSelections.easyPay = {};\n  saveUserSelections();\n\n  if (!value) {\n    descriptionSelect.disabled = true;\n    descriptionSelect.innerHTML = '<option value=\"\">Περιγραφή</option>';\n    return;\n  }\n  // sessionStorage.selectedYear = value;\n\n  descriptionSelect.disabled = false;\n  descriptionSelect.innerHTML = '';\n  startLoadingSelect(descriptionSelect);\n  let status;\n  fetch(urlDescriptions, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ make: makeSelect.value, year: yearSelect.value, model: value })\n  })\n    .then(response => {\n      status = response.status;\n      return response.json();\n    })\n    .then(data => {\n      if (status !== 200) {\n        endLoadingSelect(modelSelect);\n        descriptionSelect.innerHTML = `<option value=\"\">Προσπαθήστε ξανά ${data.msg}</option>`;\n        return;\n      }\n      fetchedModelObj = data;\n\n      // sessionStorage.selectedVehicles = JSON.stringify(selectedVehicles);\n\n      // descriptionSelect.innerHTML = `<option value=\"\">${\n      //   selectedVehicles.isDirect ? 'Κινητήρας' : 'Κύλινδροι'\n      // }</option>`;\n      populateDescriptionSelect(fetchedModelObj);\n      endLoadingSelect(descriptionSelect);\n    })\n    .catch(error => {\n      endLoadingSelect(descriptionSelect);\n      descriptionSelect.innerHTML = '<option value=\"\">Προσπαθήστε ξανά</option>';\n      console.error('Error Fetch:', error);\n    });\n}\n\nfunction populateDescriptionSelect(fetchedModelObj) {\n  let optionsArray;\n\n  if (fetchedModelObj.isDirect) {\n    optionsArray = ['<option value=\"\">Επιλέξτε Κινητήρα</option>'];\n    let engineCodesOptions = [];\n    fetchedModelObj.vehicles.forEach(vehicle => {\n      vehicle.engineCodes.forEach(code => {\n        let convertibleSymbol = vehicle.isConvertible\n          ? ' ✔️'\n          : vehicle.cylinders <= 4\n            ? // ? ' &#9203;'\n              ' ⭐'\n            : ' &#10060;';\n        engineCodesOptions.push(code + convertibleSymbol);\n      });\n    });\n    engineCodesOptions = [...new Set(engineCodesOptions)].sort(\n      (a, b) => parseInt(a.split(' ')[0]) - parseInt(b.split(' ')[0])\n    );\n    engineCodesOptions.forEach(engineCode => {\n      let engineCodeValue = engineCode.split(' ');\n      engineCodeValue.pop();\n      engineCodeValue = engineCodeValue.join(' ');\n      optionsArray.push(`<option value=\"${engineCodeValue}\">${engineCode}</option>`);\n    });\n  } else {\n    const filteredVehicles = fetchedModelObj.vehicles.slice();\n\n    if (\n      filteredVehicles.length === 1 ||\n      (haveSameConsumption(filteredVehicles, { tolerance: 0.5 }) &&\n        haveSameEmulators(filteredVehicles) &&\n        (filteredVehicles.every(veh => veh.hp <= 180) ||\n          filteredVehicles.every(veh => veh.hp > 180)))\n    ) {\n      optionsArray = ['<option value=\"\">Επιλέξτε Κυλίνδρους</option>'];\n      let cylinders = filteredVehicles.map(veh => veh.cylinders);\n      cylinders = [...new Set(cylinders)].sort();\n      cylinders.forEach(cylinder => {\n        optionsArray.push(`<option value=\"${cylinder}\">${cylinder} cyl</option>`);\n      });\n    } else {\n      optionsArray = ['<option value=\"\">Επιλέξτε Ιπποδύναμη</option>'];\n      let hpOptions = filteredVehicles.map(veh => veh.hp);\n      hpOptions = [...new Set(hpOptions)].sort((a, b) => parseInt(a) - parseInt(b));\n      hpOptions.forEach(opt => {\n        optionsArray.push(`<option value=\"${opt}\">${opt} HP</option>`);\n      });\n    }\n  }\n\n  descriptionSelect.innerHTML = optionsArray.join('');\n  descriptionSelect.disabled = false;\n  descriptionSelect.focus();\n  //One option -> auto populate\n  if (optionsArray.length === 2) {\n    descriptionSelect.selectedIndex = 1;\n    descriptionOnChange(descriptionSelect.value);\n    return;\n  }\n}\n\nfunction haveSameConsumption(vehicles, { tolerance }) {\n  return vehicles.every(\n    veh =>\n      Math.abs(parseFloat(veh.consumption[0]) - parseFloat(vehicles[0].consumption[0])) <=\n        tolerance &&\n      Math.abs(parseFloat(veh.consumption[1]) - parseFloat(vehicles[0].consumption[1])) <=\n        tolerance &&\n      Math.abs(parseFloat(veh.consumption[2]) - parseFloat(vehicles[0].consumption[2])) <= tolerance\n  );\n}\n\nfunction haveSameEmulators(vehicles) {\n  const emulators = [];\n  vehicles.forEach(veh => {\n    if (veh.hasOwnProperty('emulators')) {\n      emulators.push(veh.emulators[0]);\n    } else {\n      emulators.push(null);\n    }\n  });\n  return [...new Set(emulators)].length === 1;\n}\n\ndescriptionSelect.addEventListener('change', e => descriptionOnChange(e.target.value));\n\nfunction descriptionOnChange(value) {\n  suggestedContainers.forEach(cont => (cont.style.display = 'none'));\n\n  if (!value) {\n    showCarMakeStep1(false);\n    showGuarantee(false);\n    resetCalc();\n    resetEasyPay();\n    step2Triggered = false;\n\n    calcResult(false);\n    updateBasketSection({ resetNoVehicle: true });\n    resetProgressSteps();\n    togglePulse('.summary-pulse', false);\n    resetNotConvForm();\n\n    userSelections.vehicle = {};\n    delete userSelections.calculator.driveOftenIndex;\n    userSelections.easyPay = {};\n    saveUserSelections();\n\n    return;\n  }\n\n  showResults(fetchedModelObj);\n  if (!getActiveContainer()?.id.includes('notConvertible')) {\n    calcResult(false);\n  }\n\n  saveUserSelections();\n\n  /* Elevator on Step 2 after vehicle select */\n  setTimeout(() => {\n    document.querySelector('#vehicle').scrollIntoView({ behavior: 'smooth' });\n  }, 100);\n}\n\nfunction configureUserSelectionsAfterResults(firstSystemSelected = true) {\n  const activeContainer = getActiveContainer();\n  const activeContainerId = activeContainer.id;\n  const selectedSystemIndex = firstSystemSelected ? 0 : 1;\n\n  userSelections = {\n    ...userSelections,\n    vehicle: {\n      identification: {\n        vehicleValues: {\n          make: makeSelect.value,\n          year: yearSelect.value,\n          model: modelSelect.value,\n          description:\n            descriptionSelect.value +\n            `${\n              descriptionSelect.value.length === 1\n                ? ' cyl'\n                : descriptionSelect.value.includes(' - ')\n                  ? ''\n                  : ' hp'\n            }`,\n          makeImgUrl: makeImgPrefix + makeImgDict[makeSelect.value]\n        },\n        fetchedData: { fetchedYears, fetchedModels, fetchedModelObj },\n        foundVehicleObj\n      },\n      suggestions: {\n        containerId: activeContainerId,\n        hasResult: activeContainerId.indexOf('notConvertible') === -1,\n        systems: getSystemsNamePrice(activeContainer),\n        emulators: {\n          hasEmulators: hasValidEmulators(foundVehicleObj) || hasUHPII(foundVehicleObj),\n          type:\n            (hasValidEmulators(foundVehicleObj) || hasUHPII(foundVehicleObj)) && getEmulatorType()\n        }\n      }\n    },\n    calculator: {\n      ...userSelections.calculator,\n      driveOftenIndex: driveOftenIndexValue,\n      fuelPricesSelectedIndex: fuelPricesSelect.selectedIndex,\n      kmPerYearValue: +document.querySelector('.km-year').value,\n      trueConsumption: +document.querySelector('.lt-100km').value,\n      gain: userSelections.selectedFuel === 'lpg' ? lpgResult.textContent : cngResult.textContent,\n      percentage:\n        userSelections.selectedFuel === 'lpg'\n          ? lpgPercentageEl.textContent\n          : cngPercentageEl.textContent\n    }\n  };\n  if (makeSelect.value === 'ALFA ROMEO') {\n    userSelections.vehicle.identification.vehicleValues.makeImgUrl =\n      makeImgPrefix + makeImgDict['ALFA ROMEO PNG'];\n  }\n\n  if (userSelections.vehicle.suggestions.hasResult) {\n    userSelections.easyPay = {\n      ...userSelections.easyPay,\n      method: getEasyPayMethod(),\n      system: {\n        name: userSelections.vehicle.suggestions.systems[selectedSystemIndex].name,\n        priceWithVAT: selectedEasyPaySystemPrice + '€',\n        priceNoVAT: userSelections.vehicle.suggestions.systems.find(\n          system =>\n            system.name === userSelections.vehicle.suggestions.systems[selectedSystemIndex].name\n        ).priceNoVAT,\n        systemLogoUrl:\n          systemFullKitLogoUrlDict[\n            userSelections.vehicle.suggestions.systems[selectedSystemIndex].name\n          ].logo[userSelections.selectedFuel],\n        systemLogoUrlPng:\n          systemFullKitLogoUrlDict[\n            userSelections.vehicle.suggestions.systems[selectedSystemIndex].name\n          ].pngLogo[userSelections.selectedFuel],\n        fullKitUrl:\n          systemFullKitLogoUrlDict[\n            userSelections.vehicle.suggestions.systems[selectedSystemIndex].name\n          ].fullKit[userSelections.selectedFuel],\n        cylsDescr:\n          systemFullKitLogoUrlDict[\n            userSelections.vehicle.suggestions.systems[selectedSystemIndex].name\n          ].cylsDescr\n      },\n      noCreditSettings: getNoCreditSettings(),\n      creditSettings: getCreditSettings()\n    };\n\n    userSelections.vehicle.suggestions.emulators = {\n      ...userSelections.vehicle.suggestions.emulators,\n      emulatorText: emulatorTextDict[userSelections.vehicle.suggestions.emulators.type],\n      isMandatory: emulatorIsMandatoryDict[userSelections.vehicle.suggestions.emulators.type],\n      emulatorPrice: emulatorPriceDict[userSelections.vehicle.suggestions.emulators.type]\n    };\n    if (\n      userSelections.vehicle.suggestions.emulators.hasEmulators &&\n      !userSelections.vehicle.suggestions.emulators.isMandatory\n    ) {\n      userSelections.vehicle.suggestions.emulators.isSelected = emulatorSelected;\n    }\n  }\n}\n\nfunction showResults(fetchedModelObj) {\n  const years = yearSelect.value;\n\n  resetNotConvForm();\n\n  if (suggestedPricesChanges.length) resetToDefaultPrices();\n\n  if (fetchedModelObj.isDirect) {\n    showDirectResults(fetchedModelObj);\n  } else if (fetchedModelObj.isMonou) {\n    showMonouResults(fetchedModelObj);\n  } else {\n    showCylinderResults(fetchedModelObj, years);\n  }\n\n  const suggestedContainer = getActiveContainer();\n  //Always open on first tab\n  [...getActiveContainer().querySelectorAll('.system-switch')][0]?.click();\n  //Always open on paroxes extras tab\n  getActiveContainer().querySelector('.extras-switch-left')?.click();\n\n  userSelections.vehicle.suggestions = {\n    ...userSelections.vehicle.suggestions,\n    containerId: suggestedContainer.id\n  };\n  saveUserSelections();\n\n  adjustSectionPaddingsWithResult();\n\n  //If there is a suggestion\n  if (\n    suggestedContainer &&\n    !suggestedContainer.classList.contains(\n      `not-convertible-${userSelections.selectedFuel}-container`\n    ) &&\n    !suggestedContainer.classList.contains('not-convertible-form-container')\n  ) {\n    showCarMakeStep1(true);\n    displayEmulatorInfo(suggestedContainer);\n\n    configureCalculatorAfterSuggestion();\n    configureEasyPayAfterSuggestion();\n    configureLastStepAfterSuggestion();\n    showGuarantee(true);\n  } else {\n    showCarMakeStep1(false);\n    showGuarantee(false);\n    resetCalc();\n    resetEasyPay();\n    updateBasketSection({ resetNoVehicle: true });\n    resetProgressSteps();\n  }\n\n  configureUserSelectionsAfterResults();\n\n  setImgDownloadSectionSrc();\n\n  if (\n    suggestedContainer &&\n    !suggestedContainer.classList.contains(\n      `not-convertible-${userSelections.selectedFuel}-container`\n    ) &&\n    !suggestedContainer.classList.contains('not-convertible-form-container')\n  ) {\n    updateBasketSection({\n      vehicle: true,\n      calculator: true,\n      easyPay: true,\n      prokatavoliDoseis: true,\n      easyPayMonthlyGain: true\n    });\n    trigger_car_step_2();\n    togglePulse('.summary-pulse', true);\n  } else if (suggestedContainer) {\n    trigger_not_convertible(\n      suggestedContainer.classList.contains('not-convertible-form-container')\n    );\n  }\n}\n\nfunction setImgDownloadSectionSrc() {\n  document.querySelector('#imgDownloadSection').src = isPremiumOffer()\n    ? 'https://cdn.prod.website-files.com/60362f40a83dcf0034eb880b/68664df10a63bf6cc856ee50_offer-cta.avif'\n    : 'https://cdn.prod.website-files.com/60362f40a83dcf0034eb880b/61e547c355b97c69ec69772d_shutterstock_1152719507.avif';\n\n  document.querySelector('.wlc-gallery').style.display = isPremiumOffer() ? 'flex' : 'none';\n}\n\nfunction showGuarantee(show) {\n  document.querySelector('.three-year-guarantee').style.display = show ? 'flex' : 'none';\n  if (!show) document.querySelector('.wlc-gallery').style.display = 'none';\n}\nfunction showCarMakeStep1(show) {\n  document.querySelector('.car-make-step1').style.display = show ? 'flex' : 'none';\n  document.querySelector('#makeImgStep1').src = makeImgPrefix + makeImgDict[makeSelect.value];\n  document.querySelector('#modelNameStep1').textContent =\n    `${modelSelect.value} (${yearSelect.value})`;\n}\n\nfunction configureLastStepAfterSuggestion() {\n  const modelName = document.querySelector('#modelNameNoCredit').textContent;\n  document.querySelector('.finish-step-model').textContent = `${makeSelect.value} ${modelName}`;\n}\nfunction resetLastStep() {\n  document.querySelector('.finish-step-model').textContent = 'όχημα σου';\n}\n\nfunction adjustSectionPaddingsWithResult() {\n  document.querySelector('#vehicle').style.paddingTop = '2%';\n  document.querySelector('#vehicle').style.paddingBottom = '2%';\n}\n\nfunction resetToDefaultPrices() {\n  suggestedPricesChanges.forEach(priceChange => {\n    priceChange.priceEl.innerHTML = priceChange.defaultPrice + '€';\n    // + '<span class=\"vat\">+ΦΠΑ</span>';\n  });\n  suggestedPricesChanges = [];\n}\n\nfunction showDirectResults(fetchedModelObj) {\n  const possibleVehicleObjs = [];\n  const selectedEngineCode = descriptionSelect.value;\n  for (let veh of fetchedModelObj.vehicles) {\n    for (let engineCode of veh.engineCodes) {\n      if (engineCode === selectedEngineCode) possibleVehicleObjs.push(veh);\n    }\n  }\n\n  const consumptionsRace = runConsumptionRace(possibleVehicleObjs);\n  foundVehicleObj = consumptionsRace[0].veh;\n\n  if (foundVehicleObj.isConvertible) {\n    const directSystemDiv = document.querySelector(\n      `#suggested-${userSelections.selectedFuel}-${\n        userSelections.selectedFuel === 'lpg'\n          ? lpgSystemQueryDict[foundVehicleObj.system]\n          : cngSystemQueryDict[foundVehicleObj.system]\n      }`\n    );\n    let temp = descriptionSelect.value.split(' - ');\n    directSystemDiv.querySelector('.di-engine-code-overlay').textContent =\n      temp[1] + ' - ' + temp[0].replace(' ', '');\n    directSystemDiv.style.display = 'block';\n  } else {\n    if (foundVehicleObj.cylinders <= 4) {\n      showNotConvertibleFormContainer();\n    } else {\n      document.querySelector(\n        `.not-convertible-${userSelections.selectedFuel}-container`\n      ).style.display = 'grid';\n    }\n  }\n}\n\nfunction showMonouResults(fetchedModelObj) {\n  foundVehicleObj = fetchedModelObj.vehicles[0];\n  const selectedHp = descriptionSelect.value;\n  for (let veh of fetchedModelObj.vehicles) {\n    if (veh.hp == selectedHp) {\n      foundVehicleObj = veh;\n      break;\n    }\n  }\n  document.querySelector(`#suggested-${userSelections.selectedFuel}-monou`).style.display = 'block';\n}\n\nfunction showCylinderResults(fetchedModelObj, years) {\n  foundVehicleObj = fetchedModelObj.vehicles[0]; // to be sure\n\n  const descriptionValue = descriptionSelect.value;\n  const consumptionsRace = runConsumptionRace(fetchedModelObj.vehicles);\n\n  for (const consumptionObj of consumptionsRace) {\n    const vehAttribute =\n      descriptionValue.length === 1 ? consumptionObj.veh.cylinders : consumptionObj.veh.hp;\n    if (vehAttribute == descriptionValue) {\n      foundVehicleObj = consumptionObj.veh;\n      break;\n    }\n  }\n\n  const cyls = foundVehicleObj.cylinders;\n\n  if (foundVehicleObj.hasOwnProperty('emulators') && foundVehicleObj.emulators[0] === 'B8') {\n    suggestedSystems = ['C-OBD II 4x2=8cyl'];\n    const cobdDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-cobd-8cyl`);\n    cobdDiv.querySelector('.suggested-descr-text').textContent = '4x2 = 8cyl';\n    cobdDiv.querySelector('.left-overlay-description').textContent = '4x2 = 8cyl έως 180HP';\n    cobdDiv.style.display = 'block';\n  } else if (cyls == 5 || cyls == 6) {\n    suggestedSystems = ['C-OBD II 6cyl'];\n    const cobdDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-cobd-6cyl`);\n    // const cylinderDescrText = getCylinderDescrText();\n    // cobdDiv.querySelector('.suggested-descr-text').textContent = '5-6cyl' + cylinderDescrText;\n    // cobdDiv.querySelector('.left-overlay-description').textContent = '5-6cyl' + cylinderDescrText;\n    cobdDiv.style.display = 'block';\n  } else if (cyls == 8) {\n    suggestedSystems = ['C-OBD II 8cyl'];\n    const cobdDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-cobd-8cyl`);\n    // const cylinderDescrText = getCylinderDescrText();\n    // cobdDiv.querySelector('.suggested-descr-text').textContent = '8cyl' + cylinderDescrText;\n    // cobdDiv.querySelector('.left-overlay-description').textContent = '8cyl' + cylinderDescrText;\n    cobdDiv.style.display = 'block';\n  } else if (years <= 1998) {\n    if (\n      foundVehicleObj.hp > 180 ||\n      (foundVehicleObj.hasOwnProperty('emulators') && foundVehicleObj.emulators[0] === 'T')\n    ) {\n      suggestedSystems = ['Smart ExR'];\n      const exrDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-exr`);\n      exrDiv.querySelector('.left-overlay-description').textContent =\n        '2-4cyl' + getCylinderDescrText();\n      exrDiv.style.display = 'block';\n    } else {\n      suggestedSystems = ['E-GO'];\n      document.querySelector(`#suggested-${userSelections.selectedFuel}-ego`).style.display =\n        'block';\n    }\n  } else if (years >= 1999 && years <= 2004) {\n    if (\n      foundVehicleObj.hp > 180 ||\n      (foundVehicleObj.hasOwnProperty('emulators') && foundVehicleObj.emulators[0] === 'T')\n    ) {\n      suggestedSystems = ['Smart ExR'];\n      const exrDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-exr`);\n      exrDiv.querySelector('.left-overlay-description').textContent =\n        '2-4cyl' + getCylinderDescrText();\n      exrDiv.style.display = 'block';\n    } else {\n      suggestedSystems = ['Smart ExR', 'E-GO'];\n      const exrEgoDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-exr-ego`);\n      exrEgoDiv.querySelector('.left-overlay-description').textContent =\n        '2-4cyl' + getCylinderDescrText();\n      exrEgoDiv.style.display = 'block';\n    }\n  } else if (years >= 2005 && years <= 2013) {\n    suggestedSystems = ['C-OBD II', 'Smart ExR'];\n    const cobdExrDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-cobd-exr`);\n    cobdExrDiv\n      .querySelectorAll('.left-overlay-description')\n      .forEach(el => (el.textContent = '2-4cyl' + getCylinderDescrText()));\n    cobdExrDiv.style.display = 'block';\n  } else {\n    suggestedSystems = ['C-OBD II'];\n    const cobdDiv = document.querySelector(`#suggested-${userSelections.selectedFuel}-cobd`);\n    cobdDiv.querySelector('.left-overlay-description').textContent =\n      '2-4cyl' + getCylinderDescrText();\n    cobdDiv.style.display = 'block';\n  }\n}\n\nfunction runConsumptionRace(vehicles) {\n  const consumptionObjs = [];\n  vehicles.forEach(veh => {\n    consumptionObjs.push({ conSum: veh.consumption.reduce((prev, curr) => prev + curr, 0), veh });\n  });\n  return consumptionObjs.sort((a, b) => b.conSum - a.conSum);\n}\n\nfunction displayEmulatorInfo(suggestedContainer) {\n  //Hide all emulator containers first\n  suggestedContainer.querySelectorAll('.info-content-block').forEach(emCont => {\n    emCont.style.display = 'none';\n  });\n  resetCardsFromEmulators(suggestedContainer);\n\n  if (hasValidEmulators(foundVehicleObj) || hasUHPII(foundVehicleObj)) {\n    const vehicleEmulatorType = getEmulatorType();\n\n    suggestedContainer.querySelector('.system-content').children.forEach(system => {\n      if (isApaitoumenoEmulatorType(vehicleEmulatorType)) {\n        const priceEl = system.querySelector(`.suggested-${userSelections.selectedFuel}-price`);\n        const defaultPrice = parseInt(priceEl.textContent.split('€')[0]);\n        suggestedPricesChanges.push({ priceEl, defaultPrice });\n        priceEl.innerHTML = defaultPrice + emulatorPriceDict[vehicleEmulatorType] + '€';\n        // +'<span class=\"vat\">+ΦΠΑ</span>';\n      } else {\n        //init not selected emulator\n        [...suggestedContainer.querySelectorAll('.check')].map(\n          check => (check.style.display = 'none')\n        );\n        emulatorSelected = false;\n      }\n\n      const emCont = generateEmulatorInfoContentBlock(vehicleEmulatorType, system);\n      emCont.querySelector('.info-content').style.maxHeight = '0px';\n      emCont.querySelector('.info-content').style.height = 'auto';\n      emCont.style.display = 'block';\n    });\n  }\n}\n\nfunction resetCardsFromEmulators(suggestedContainer) {\n  suggestedContainer.querySelector('.system-content').children.forEach(system => {\n    if (system.querySelector('.car-img')) {\n      system.querySelector('.car-img').style.opacity = 1;\n    }\n  });\n}\n\nfunction generateEmulatorInfoContentBlock(emulatorType, systemContainer) {\n  const emulatorAlreadyThere = systemContainer.querySelector(\n    `.info-content-block.emulator-${emulatorType}`\n  );\n  if (emulatorAlreadyThere) {\n    return emulatorAlreadyThere;\n  }\n\n  //clone html\n  const infoContentBlockToCopy = document.querySelector(\n    `.emulator-templates .info-content-block.emulator-${emulatorType}`\n  );\n  const clone = infoContentBlockToCopy.cloneNode(true);\n  // systemContainer.querySelector('.suggested-image-content').appendChild(clone);\n  systemContainer.querySelector('.lpg-system-wrap').appendChild(clone);\n\n  //trigger anim\n  const infoTriggerLink = clone.querySelector('.info-trigger-link');\n\n  infoTriggerLink.addEventListener('click', () => {\n    showEmulatorCardListener(clone, systemContainer);\n  });\n\n  const closeBtn = clone.querySelector('.close-info');\n  closeBtn.addEventListener('click', () => hideEmulatorCardListener(clone, systemContainer));\n\n  if (isMobile479()) {\n    clone.style.width = '100%';\n    clone.style.inset = '0% 0% -2% auto';\n    clone.querySelector('.info-trigger').style.borderRadius = '20px';\n    clone.querySelector('.info-trigger').style.width = '22px';\n    clone.querySelector('.info-trigger').style.height = '22px';\n  } else {\n    clone.style.width = '50%';\n    clone.style.inset = '0% 0% 0% auto';\n  }\n\n  connectMoreInfoBtn(emulatorType, clone);\n\n  connectCheckboxEmulator(emulatorType, systemContainer);\n\n  return clone;\n}\n\nfunction showEmulatorCardListener(clone, systemContainer) {\n  clone.querySelector('.info-content').style.maxHeight = isMobile479() ? '444px' : '420px';\n  const car = systemContainer.querySelector('.car-img');\n  car.style.transition = 'opacity 0.3s ease';\n  car.style.opacity = 0;\n}\n\nfunction hideEmulatorCardListener(clone, systemContainer) {\n  clone.querySelector('.info-content').style.maxHeight = '0px';\n  const car = systemContainer.querySelector('.car-img');\n  car.style.opacity = 1;\n}\n\nfunction connectMoreInfoBtn(emulatorType, clone) {\n  if (emulatorType === 't') {\n    clone.querySelector('.reducer-info-trigger').addEventListener('click', () => {\n      document.querySelector('.reducer-info-overlay').style.display = 'block';\n    });\n  }\n  if (emulatorType === 'f') {\n    clone.querySelector('.emulator-info-trigger').addEventListener('click', () => {\n      document.querySelector('.emulator-info-overlay').style.display = 'block';\n    });\n  }\n}\n\nfunction connectCheckboxEmulator(emulatorType, systemContainer) {\n  [...systemContainer.querySelectorAll('.check-wrapper')].forEach(wrapper => {\n    wrapper.addEventListener('click', e => {\n      const emulatorPrice = emulatorPriceDict[emulatorType];\n      const suggestedContainer = getActiveContainer();\n      const suggestedContainerChecks = [...suggestedContainer.querySelectorAll('.check')];\n\n      emulatorSelected = suggestedContainerChecks[0].style.display !== 'block';\n\n      suggestedContainerChecks.map(\n        thisCheck => (thisCheck.style.display = emulatorSelected ? 'block' : 'none')\n      );\n\n      suggestedContainer\n        .querySelectorAll(`.suggested-${userSelections.selectedFuel}-price`)\n        .forEach(priceEl => {\n          const prevPriceNumber = +priceEl.textContent.split('€')[0];\n\n          if (emulatorSelected)\n            suggestedPricesChanges.push({ priceEl, defaultPrice: prevPriceNumber });\n\n          const newPriceNumber = emulatorSelected\n            ? prevPriceNumber + emulatorPrice\n            : prevPriceNumber - emulatorPrice;\n\n          priceEl.innerHTML = newPriceNumber + '€';\n          // + '<span class=\"vat\">+ΦΠΑ</span>';\n        });\n      configureEasyPayAfterSuggestion(systemContainer.classList.contains('system-1'));\n      configureUserSelectionsAfterResults(systemContainer.classList.contains('system-1'));\n      calcResult(false);\n      updateBasketSection({\n        vehicle: true,\n        calculator: true,\n        easyPay: true,\n        prokatavoliDoseis: true,\n        easyPayMonthlyGain: true\n      });\n    });\n  });\n}\n\nfunction hasValidEmulators(vehObj) {\n  if (userSelections.selectedFuel === 'lpg') return vehObj.hasOwnProperty('emulators');\n  return (\n    vehObj.hasOwnProperty('emulators') &&\n    cngOnlyEmulatorTypes.indexOf(vehObj.emulators[0].toLowerCase()) !== -1\n  );\n}\n\nfunction hasUHPII(vehObj) {\n  if (userSelections.selectedFuel === 'cng') return false;\n  if (fetchedModelObj.isDirect) return false;\n  return vehObj.hp > 180 && vehObj.cylinders <= 4;\n}\n\nfunction getEmulatorType() {\n  if (hasUHPII(foundVehicleObj)) {\n    if (userSelections.selectedFuel === 'lpg') return foundVehicleObj.hp > 360 ? 'double-hp' : 'hp';\n    else return 'hp';\n  }\n  return foundVehicleObj.emulators[0].toLowerCase();\n}\n\nfunction configureCalculatorAfterSuggestion() {\n  document.querySelector('#calcTitle').textContent =\n    'Υπολόγισε πόσα θα εξοικονομείς με το αυτοκίνητό σου!';\n\n  document.querySelector('#makeImg').src = makeImgPrefix + makeImgDict[makeSelect.value];\n  document.querySelector('#modelName').textContent = `${modelSelect.value} (${yearSelect.value})`;\n\n  document.querySelector('#inConsumption .text-span').innerHTML =\n    `(${foundVehicleObj.consumption[0]}L/100km)`;\n  document.querySelector('#outConsumption .text-span').innerHTML =\n    `(${foundVehicleObj.consumption[1]}L/100km)`;\n  document.querySelector('#combinedConsumption .text-span').innerHTML =\n    `(${foundVehicleObj.consumption[2]}L/100km)`;\n\n  const consumptionRadios = document.querySelectorAll('.radio-button.w-radio');\n\n  consumptionRadios[0].dataset.cons = foundVehicleObj.consumption[0];\n  consumptionRadios[1].dataset.cons = foundVehicleObj.consumption[1];\n  consumptionRadios[2].dataset.cons = foundVehicleObj.consumption[2];\n\n  document.querySelector('#calcContainerVehicle').style.display = 'block';\n\n  sliders[1].value = foundVehicleObj.consumption[getDriveOftenIndex()];\n  outputs[1].value = sliders[1].value;\n  calcCovers[1].style.width = calcCoverWidth(sliders[1]) + '%';\n\n  document.querySelector('.consumption-wrapper').style.display = 'flex';\n\n  [...document.querySelectorAll('.in-consumption')].map(\n    el => (el.textContent = foundVehicleObj.consumption[0])\n  );\n  [...document.querySelectorAll('.out-consumption')].map(\n    el => (el.textContent = foundVehicleObj.consumption[1])\n  );\n  [...document.querySelectorAll('.combined-consumption')].map(\n    el => (el.textContent = foundVehicleObj.consumption[2])\n  );\n\n  document.querySelector('#consumptionModelNameCalc').textContent =\n    `${makeSelect.value} ${modelSelect.value} (${yearSelect.value})`;\n  document.querySelector('#consumptionModelNameCalc').classList.add('calc-info-style');\n\n  document.querySelector('.amortization-wrapper').style.display = 'flex';\n  document.querySelector('.amortization-add-car').style.display = 'none';\n}\n\nfunction selectDriveOftenRadioInput(index) {\n  document\n    .querySelectorAll('.radio-button.w-radio input')\n    .forEach((radio, i) => (radio.checked = i === index));\n  document\n    .querySelectorAll('.consumption-radio-input')\n    .forEach((radio, i) =>\n      i === index\n        ? radio.classList.add('w--redirected-checked')\n        : radio.classList.remove('w--redirected-checked')\n    );\n}\n\nfunction getDriveOftenRadioIndex() {\n  let index;\n  document.querySelectorAll('.radio-button.w-radio input').forEach((radio, i) => {\n    if (radio.checked) {\n      index = i;\n    }\n  });\n  return index;\n}\n\nfunction resetCalc() {\n  document.querySelector('#calcTitle').innerHTML =\n    'Υπολόγισε πόσα θα εξοικονομείς με ένα σύστημα Lovato!';\n\n  document.querySelector('#consumptionModelNameCalc').textContent = 'αυτοκίνητό σας';\n  document.querySelector('#consumptionModelNameCalc').classList.remove('calc-info-style');\n\n  document.querySelector('#calcContainerVehicle').style.display = 'none';\n  document.querySelector('.consumption-wrapper').style.display = 'none';\n  document.querySelector('.amortization-wrapper').style.display = 'none';\n  document.querySelector('.amortization-add-car').style.display = 'block';\n\n  sliders[1].value = 8;\n  outputs[1].value = 8;\n  calcCovers[1].style.width = calcCoverWidth(sliders[1]) + '%';\n\n  if (!getActiveContainer()) {\n    document.querySelector('#vehicle').style.paddingTop = '0%';\n    document.querySelector('#vehicle').style.paddingBottom = '0%';\n  }\n}\n\ndocument.querySelectorAll('.radio-button.w-radio input').forEach(el => {\n  el.addEventListener('change', e => {\n    const consumptionLabelWithData = e.target.closest('.radio-button.w-radio');\n\n    document\n      .querySelectorAll('.radio-button.w-radio .consumption-choice')\n      .forEach(el => (el.style.fontWeight = 'normal')); //DEBUG!!\n    consumptionLabelWithData.querySelector('.consumption-choice').style.fontWeight = 'bold';\n\n    sliders[1].value = consumptionLabelWithData.dataset.cons;\n    outputs[1].value = consumptionLabelWithData.dataset.cons;\n    calcCovers[1].style.width = calcCoverWidth(sliders[1]) + '%';\n    calcResult();\n\n    userSelections.calculator.driveOftenIndex = getDriveOftenIndex();\n    updateBasketSection({ calculator: true });\n  });\n});\n\nfunction getDriveOftenIndex() {\n  let index = 2;\n  [...document.querySelectorAll('.radio-button.w-radio input')].forEach((el, i) => {\n    if (el.checked) index = i;\n  });\n  driveOftenIndexValue = index;\n  return index;\n}\n\nfunction getSystemsNamePrice(activeContainer) {\n  const names = systemNamesFromIdDict[activeContainer.id];\n  const prices = [\n    ...activeContainer.querySelectorAll(`.suggested-${userSelections.selectedFuel}-price`)\n  ].map(priceEl => priceEl.textContent);\n\n  const array = [];\n  names.forEach((name, i) => array.push({ name, priceNoVAT: prices[i] + ' + ΦΠΑ' }));\n  return array;\n}\n\nfunction getEasyPayMethod(target) {\n  if (!Object.keys(userSelections.vehicle).length) return;\n  let tabEl;\n  if (target) {\n    tabEl = target.closest('.easy-pay-tab');\n  } else {\n    tabEl = [...document.querySelectorAll('.easy-pay-tab')].find(tab =>\n      tab.classList.contains('w--current')\n    );\n  }\n  if (tabEl.classList.contains('no-credit-tab')) {\n    return 'Χωρίς πιστωτική κάρτα';\n  } else if (tabEl.classList.contains('credit-tab')) {\n    return 'Με πιστωτική κάρτα';\n  } else if (tabEl.classList.contains('metrhta-tab')) {\n    return 'Μετρητά';\n  }\n}\n\nfunction getEasyPaySystem(selectedSystemDiv) {\n  if (!userSelections.vehicle.suggestions.systems) return;\n\n  const name = selectedSystemDiv.classList.contains('system-1st-selection')\n    ? userSelections.vehicle.suggestions.systems[0].name\n    : userSelections.vehicle.suggestions.systems[1].name;\n\n  const priceWithVAT = selectedSystemDiv.querySelector('.system-price-easy-pay').textContent;\n  const priceNoVAT = userSelections.vehicle.suggestions.systems.find(\n    system => system.name === name\n  ).priceNoVAT;\n  const systemLogoUrl = systemFullKitLogoUrlDict[name].logo[userSelections.selectedFuel];\n  // console.log({ name, systemLogoUrl });\n  const systemLogoUrlPng = systemFullKitLogoUrlDict[name].pngLogo[userSelections.selectedFuel];\n  const fullKitUrl = systemFullKitLogoUrlDict[name].fullKit[userSelections.selectedFuel];\n  const cylsDescr = systemFullKitLogoUrlDict[name].cylsDescr;\n\n  return { name, priceWithVAT, priceNoVAT, systemLogoUrl, systemLogoUrlPng, fullKitUrl, cylsDescr };\n}\n\nfunction getNoCreditSettings() {\n  if (!userSelections.vehicle.suggestions.systems) return;\n  return {\n    prokatavoli: +prokatavoliNoCreditSlider.value,\n    doseis: +doseisNoCreditSlider.value,\n    finalCost: noCreditFinalCost.textContent,\n    monthlyCost: noCreditMonthlyCost.textContent\n  };\n}\n\nfunction getCreditSettings() {\n  if (!userSelections.vehicle.suggestions.systems) return;\n  return {\n    prokatavoli: +prokatavoliCreditSlider.value,\n    // doseis: +doseisCreditSelect.value,\n    doseis: +doseisCreditSlider.value,\n    finalCost: creditFinalCost.textContent,\n    monthlyCost: creditMonthlyCost.textContent\n  };\n}\n\nfunction getCylinderDescrText() {\n  if (userSelections.selectedFuel === 'cng') return '';\n\n  const hp = foundVehicleObj.hasOwnProperty('hp')\n    ? foundVehicleObj.hp\n    : Number(foundVehicleObj.engineCodes[0].split(' ')[0]);\n  return hp <= 180 ? ' έως 180HP' : hp <= 360 ? ' έως 360HP' : ' άνω των 360HP';\n}\n\nfunction configureEasyPayAfterSuggestion(firstSystemSelected = true) {\n  configureModelEasyPay();\n  configureSystemsEasyPay(firstSystemSelected);\n  configureNoCreditSliders();\n  configureCreditSliders();\n  configureNoCreditResults();\n  configureCreditResults();\n  configureMetrhtaResults();\n  doseisNoCreditSliderOnChange(doseisNoCreditSlider.max); //init on max\n}\n\nfunction configureModelEasyPay() {\n  const makeImgSrc = document.querySelector('#makeImg').src;\n  const modelNameText = document.querySelector('#modelName').textContent;\n  document.querySelector('#makeImgNoCredit').src = makeImgSrc;\n  document.querySelector('#makeImgCredit').src = makeImgSrc;\n  document.querySelector('#makeImgMetrhta').src = makeImgSrc;\n  document.querySelector('#modelNameNoCredit').textContent = modelNameText;\n  document.querySelector('#modelNameCredit').textContent = modelNameText;\n  document.querySelector('#modelNameMetrhta').textContent = modelNameText;\n\n  [...document.querySelectorAll('.easy-pay-vehicle-container')].map(\n    el => (el.style.display = 'flex')\n  );\n  [...document.querySelectorAll('.easy-pay-with-vehicle-container')].map(\n    el => (el.style.display = 'flex')\n  );\n  [...document.querySelectorAll('.easy-pay-no-vehicle-container')].map(\n    el => (el.style.display = 'none')\n  );\n  [...document.querySelectorAll('.easy-pay-no-vehicle-descr')].map(\n    el => (el.style.display = 'none')\n  );\n}\n\nfunction configureSystemsEasyPay(firstSystemSelected = true) {\n  const activeContainer = getActiveContainer();\n  const systemLogoSrcs = [...activeContainer.querySelectorAll('.system-logo')].map(el => el.src);\n  const systemLogoCreditEls = document.querySelectorAll('.system-logo-credit');\n  const systemPriceCreditEls = document.querySelectorAll('.system-price-easy-pay');\n  const suggestedPrices = [\n    ...activeContainer.querySelectorAll(`.suggested-${userSelections.selectedFuel}-price`)\n  ].map(el => el.textContent.split('€')[0] * VAT + '€');\n\n  systemLogoCreditEls.forEach(\n    (el, i) => (el.src = systemLogoSrcs[systemLogoSrcs.length === 1 ? 0 : i % 2])\n  );\n  systemPriceCreditEls.forEach(\n    (el, i) => (el.textContent = suggestedPrices[systemLogoSrcs.length === 1 ? 0 : i % 2])\n  );\n\n  if (systemLogoSrcs.length === 2) {\n    [...document.querySelectorAll('.easy-pay-first-suggestion-text')].map(\n      el => (el.textContent = 'Η ΙΔΑΝΙΚΟΤΕΡΗ ΠΡΟΤΑΣΗ ΜΑΣ')\n    );\n    [...document.querySelectorAll('.easy-pay-second-suggestion')].map(\n      el => (el.style.display = 'block')\n    );\n  } else {\n    [...document.querySelectorAll('.easy-pay-first-suggestion-text')].map(\n      el => (el.textContent = 'ΠΡΟΤΑΣΗ ΣΥΣΤΗΜΑΤΟΣ')\n    );\n    [...document.querySelectorAll('.easy-pay-second-suggestion')].map(\n      el => (el.style.display = 'none')\n    );\n  }\n\n  //CSS for easy pay di system img\n  cssEasyPayDISystem();\n\n  //Clicking easy pay system\n  const selectedSystemTxt = firstSystemSelected ? '1st' : '2nd';\n  const otherSystemText = firstSystemSelected ? '2nd' : '1st';\n  [...document.querySelectorAll(`.system-${selectedSystemTxt}-selection .suggested-system`)].map(\n    el => (el.style.backgroundColor = 'rgba(132, 184, 211, 0.34)')\n  );\n  [...document.querySelectorAll(`.system-${otherSystemText}-selection .suggested-system`)].map(\n    el => (el.style.backgroundColor = 'rgba(241, 241, 241)')\n  );\n  [...document.querySelectorAll(`.system-${selectedSystemTxt}-selection .system-checkmark`)].map(\n    el => (el.style.display = 'block')\n  );\n  [...document.querySelectorAll(`.system-${otherSystemText}-selection .system-checkmark`)].map(\n    el => (el.style.display = 'none')\n  );\n  changePriceFontWeight(document.querySelector(`.system-${selectedSystemTxt}-selection`));\n\n  selectedEasyPaySystemPrice = +document\n    .querySelector(`.system-price-easy-pay._${selectedSystemTxt}`)\n    .textContent.replace('€', '');\n}\n\nfunction cssEasyPayDISystem() {\n  if (\n    userSelections.selectedFuel === 'lpg'\n      ? fetchedModelObj.isDirect && foundVehicleObj.system !== '604701308'\n      : fetchedModelObj.isDirect &&\n        (foundVehicleObj.system === '604701574' || foundVehicleObj.system === '604701559')\n  ) {\n    [...document.querySelectorAll('.system-logo-credit')].map(el => (el.style.height = '35px'));\n    [...document.querySelectorAll('.suggested-system')].map(el => (el.style.minWidth = '180px'));\n  } else {\n    [...document.querySelectorAll('.system-logo-credit')].map(el => (el.style.height = '21px'));\n    [...document.querySelectorAll('.suggested-system')].map(el => (el.style.minWidth = '165px'));\n  }\n}\n\nfunction configureNoCreditSliders() {\n  const floorPrice = Math.floor(selectedEasyPaySystemPrice / 10) * 10;\n\n  prokatavoliNoCreditSlider.max = floorPrice - 500;\n  maxProkatavoliNoCreditSliderText.textContent = floorPrice - 500 + '€';\n\n  prokatavoliNoCreditCover.style.width = calcCoverWidth(prokatavoliNoCreditSlider) + '%';\n  doseisNoCreditCover.style.width = calcCoverWidth(doseisNoCreditSlider) + '%';\n  outputNoCreditProkatavoli.value = prokatavoliNoCreditSlider.value;\n  outputNoCreditDoseis.value = doseisNoCreditSlider.value;\n\n  noCreditEnapomeinanPoso.textContent = (\n    selectedEasyPaySystemPrice - parseInt(prokatavoliNoCreditSlider.value)\n  ).toFixed(1);\n\n  configureNoCreditMaxDoseisSlider();\n}\n\nfunction configureCreditSliders() {\n  const floorPrice = Math.floor(selectedEasyPaySystemPrice / 10) * 10;\n  prokatavoliCreditSlider.max = floorPrice - 100;\n  maxProkatavoliCreditSliderText.textContent = floorPrice - 100 + '€';\n\n  prokatavoliCreditCover.style.width = calcCoverWidth(prokatavoliCreditSlider) + '%';\n  doseisCreditCover.style.width = calcCoverWidth(doseisCreditSlider) + '%';\n  outputCreditProkatavoli.value = prokatavoliCreditSlider.value;\n  outputNoCreditDoseis.value = doseisNoCreditSlider.value;\n\n  creditEnapomeinanPoso.textContent = (\n    selectedEasyPaySystemPrice - parseInt(prokatavoliCreditSlider.value)\n  ).toFixed(1);\n}\n\nfunction configureNoCreditMaxDoseisSlider() {\n  const noCreditEnapomeinanPosoFloat = parseFloat(noCreditEnapomeinanPoso.textContent);\n  let monthlyCost,\n    doseisNum = 6;\n\n  do {\n    monthlyCost = -PMT(noCreditInterest / 100 / 12, doseisNum, noCreditEnapomeinanPosoFloat);\n    doseisNum++;\n  } while (monthlyCost > 30);\n\n  let maxDoseis = doseisNum - 2;\n  if (maxDoseis > 36) maxDoseis = 36;\n  doseisNoCreditSlider.max = maxDoseis;\n  maxDoseisNoCreditSliderText.textContent = maxDoseis + ' μήνες';\n  if (parseInt(doseisNoCreditSlider.value) >= maxDoseis) doseisNoCreditSliderOnChange(maxDoseis);\n  else doseisNoCreditSliderOnChange(doseisNoCreditSlider.value);\n}\n\nfunction configureNoCreditResults() {\n  const doseisNoCreditSliderValueInt = +doseisNoCreditSlider.value;\n  const prokatavoliNoCreditSliderValueInt = +prokatavoliNoCreditSlider.value;\n\n  const monthlyCost = -PMT(\n    noCreditInterest / 100 / 12,\n    doseisNoCreditSliderValueInt,\n    +noCreditEnapomeinanPoso.textContent\n  );\n  noCreditMonthlyCost.textContent = monthlyCost.toFixed(2) + '€';\n\n  configureEasyPayMonthlyGain();\n\n  noCreditFinalCost.textContent =\n    (monthlyCost * doseisNoCreditSliderValueInt + prokatavoliNoCreditSliderValueInt).toFixed(2) +\n    '€';\n}\n\nfunction configureCreditResults() {\n  // const doseisCreditSelectValueInt = +doseisCreditSelect.value;\n  const doseisCreditSliderValueInt = +doseisCreditSlider.value;\n  const prokatavoliCreditSliderValueInt = +prokatavoliCreditSlider.value;\n\n  const monthlyCost = getCreditMonthlyCost(\n    +creditEnapomeinanPoso.textContent,\n    doseisCreditSliderValueInt\n    // doseisCreditSelectValueInt\n  );\n  creditMonthlyCost.textContent = monthlyCost.toFixed(2) + '€';\n\n  configureEasyPayMonthlyGain();\n\n  creditFinalCost.textContent =\n    (\n      Math.round(\n        (monthlyCost * doseisCreditSliderValueInt + prokatavoliCreditSliderValueInt) * 10\n      ) / 10\n    ).toFixed(2) + '€';\n}\n\nfunction configureMetrhtaResults() {\n  metrhtaFinalCost.textContent = selectedEasyPaySystemPrice.toFixed(2) + '€';\n}\n\nfunction configureEasyPayMonthlyGain() {\n  const fuelResult = userSelections.selectedFuel === 'lpg' ? lpgResult : cngResult;\n  let monthlyGain = parseFloat(fuelResult.textContent.replace('€', ''));\n  if (!perMonthCheckbox.checked) monthlyGain /= 12;\n\n  noCreditMonthlyGain.textContent = monthlyGain.toFixed(2) + '€';\n  creditMonthlyGain.textContent = noCreditMonthlyGain.textContent;\n  metrhtaYearlyGain.textContent = (monthlyGain * 12).toFixed(2) + '€';\n}\n\nfunction PMT(interestPerMonth, doseis, cost) {\n  let pmt, pvif;\n\n  if (interestPerMonth === 0) return -cost / doseis;\n\n  pvif = Math.pow(1 + interestPerMonth, doseis);\n  pmt = (-interestPerMonth * (cost * pvif)) / (pvif - 1);\n\n  return pmt;\n}\n\nfunction getCreditMonthlyCost(poso, doseis) {\n  // if (doseis <= 6) {\n  //   return Math.round((poso / doseis) * 100) / 100;\n  // }\n\n  let posoEksoflisis =\n    (poso / doseis) *\n    0.982 *\n    ((1 - 1 / Math.pow(1 + creditInterest / 100 / 12, doseis)) / (creditInterest / 100 / 12));\n  posoEksoflisis = Math.round(posoEksoflisis * 100) / 100;\n  let posostoKostous = (poso - posoEksoflisis) / poso;\n  posostoKostous = Math.round(posostoKostous * 10000) / 10000;\n  let syntelesthsVAT = (VAT - 1) / VAT;\n  let syntelesthsEpibarinshs = (1 - syntelesthsVAT) / (1 - syntelesthsVAT - posostoKostous);\n  syntelesthsEpibarinshs = Math.round(syntelesthsEpibarinshs * 10000) / 10000;\n  let telikhTimh = syntelesthsEpibarinshs * poso;\n  telikhTimh = Math.round(telikhTimh * 100) / 100;\n  let monthlyCost = telikhTimh / doseis;\n  monthlyCost = Math.round(monthlyCost * 100) / 100;\n  return monthlyCost;\n}\n\nfunction getActiveContainer() {\n  return [...suggestedContainers].filter(\n    container => container.style.display !== 'none' && container.style.display\n  )[0];\n}\n\n/* System Identification END */\n\n/* Basket */\nfunction updateBasketSection(sections) {\n  if (sections.selectedFuel) {\n    if (userSelections.selectedFuel === 'lpg') {\n      document.querySelector('.lpg-btn-basket').style.display = 'block';\n      document.querySelector('.cng-btn-basket').style.display = 'none';\n    } else {\n      document.querySelector('.lpg-btn-basket').style.display = 'none';\n      document.querySelector('.cng-btn-basket').style.display = 'block';\n    }\n  }\n\n  // if (!hasResult()) return;\n  if (sections.vehicle) {\n    notificationIconBasket.style.display = 'flex';\n    document.querySelector('#makeImgBasket').src = document.querySelector('#makeImg').src;\n    document.querySelector('#modelNameBasket').textContent =\n      document.querySelector('#modelName').textContent;\n    document.querySelector('.vehicle-divider-basket').style.display = 'block';\n    document.querySelector('.vehicle-container-basket').style.display = 'flex';\n\n    document.querySelector('.suggested-system-text-basket').textContent =\n      userSelections.vehicle.suggestions.systems.length > 1\n        ? 'Ιδανικότερη πρόταση:'\n        : 'Πρόταση συστήματος:';\n\n    document.querySelector('.suggested-system-name-basket').textContent =\n      userSelections.vehicle.suggestions.systems[0].name;\n    document.querySelector('.easy-pay-system-name-basket').textContent =\n      userSelections.vehicle.suggestions.systems[0].name;\n    document.querySelector('.suggested-system-price-basket').textContent =\n      userSelections.vehicle.suggestions.systems[0].priceNoVAT;\n\n    document.querySelector('.suggestion-container-basket').style.display = 'block';\n    document.querySelector('.calculator-container-basket').style.display = 'block';\n    document.querySelector('.easy-pay-container-basket').style.display = 'block';\n\n    if (userSelections.vehicle.suggestions.emulators.hasEmulators) {\n      if (\n        userSelections.vehicle.suggestions.emulators.isMandatory ||\n        userSelections.vehicle.suggestions.emulators.isSelected\n      ) {\n        document.querySelector('.emulator-const-text-basket').textContent =\n          userSelections.vehicle.suggestions.emulators.emulatorText;\n        document.querySelector('.emulator-const-basket').style.display = 'flex';\n        document.querySelector('.emulator-let-basket').style.display = 'none';\n      } else {\n        document.querySelector('.emulator-let-text-basket').textContent =\n          userSelections.vehicle.suggestions.emulators.emulatorText +\n          ` (+${userSelections.vehicle.suggestions.emulators.emulatorPrice}€)`;\n        document.querySelector('.emulator-const-basket').style.display = 'none';\n        document.querySelector('.emulator-let-basket').style.display = 'flex';\n      }\n    } else {\n      document.querySelector('.emulator-const-basket').style.display = 'none';\n      document.querySelector('.emulator-let-basket').style.display = 'none';\n    }\n  }\n\n  if (sections.resetNoVehicle) {\n    notificationIconBasket.style.display = 'none';\n    document.querySelector('.vehicle-divider-basket').style.display = 'none';\n    document.querySelector('.vehicle-container-basket').style.display = 'none';\n\n    document.querySelector('.suggestion-container-basket').style.display = 'none';\n    document.querySelector('.calculator-container-basket').style.display = 'none';\n    document.querySelector('.easy-pay-container-basket').style.display = 'none';\n  }\n\n  if (sections.calculator) {\n    document.querySelector('.drive-often-text-basket').textContent =\n      userSelections.calculator.driveOftenIndex === 0\n        ? 'Εντός πόλης'\n        : userSelections.calculator.driveOftenIndex === 1\n          ? 'Εκτός πόλης'\n          : 'Μικτά';\n    document.querySelector('.fuel-place-basket').textContent =\n      fuelPricesSelect.options[fuelPricesSelect.selectedIndex].innerHTML;\n    document.querySelector('.km-per-year-text-basket').textContent =\n      userSelections.calculator.kmPerYearValue + ' km';\n\n    document.querySelector('.gain-label-basket').textContent = userSelections.calculator\n      .perMonthCheckbox\n      ? 'Μηνιαίο όφελος:'\n      : 'Ετήσιο όφελος:';\n    document.querySelector('.gain-text-basket').textContent = userSelections.calculator.gain;\n    document.querySelector('.percentage-text-basket').textContent =\n      userSelections.calculator.percentage;\n  }\n\n  if (!userSelections.vehicle.suggestions) return;\n\n  if (sections.easyPay) {\n    document.querySelector('.easy-pay-method-basket').textContent = userSelections.easyPay.method;\n    document.querySelector('.suggested-system-name-basket').textContent =\n      userSelections.easyPay.system.name;\n    document.querySelector('.easy-pay-system-name-basket').textContent =\n      userSelections.easyPay.system.name;\n    document.querySelector('.easy-pay-system-vat-basket').textContent =\n      userSelections.easyPay.system.priceWithVAT;\n\n    document.querySelector('.suggested-system-text-basket').textContent =\n      userSelections.easyPay.system.name === userSelections.vehicle.suggestions.systems[0].name\n        ? 'Ιδανικότερη πρόταση:'\n        : 'Οικονομικότερη πρόταση:';\n\n    const systemIndex =\n      userSelections.easyPay.system.name === userSelections.vehicle.suggestions.systems[0].name\n        ? 0\n        : 1;\n    document.querySelector('.suggested-system-price-basket').textContent =\n      userSelections.vehicle.suggestions.systems[systemIndex].priceNoVAT;\n  }\n\n  if (hasResult() && sections.prokatavoliDoseis) {\n    if (userSelections.easyPay.method === 'Χωρίς πιστωτική κάρτα') {\n      document.querySelector('.easy-pay-prokatavoli-basket').textContent =\n        userSelections.easyPay.noCreditSettings.prokatavoli + '€';\n      document.querySelector('.easy-pay-doseis-basket').textContent =\n        userSelections.easyPay.noCreditSettings.doseis;\n      document.querySelector('.easy-pay-final-cost-basket').textContent =\n        userSelections.easyPay.noCreditSettings.finalCost;\n      document.querySelector('.easy-pay-monthly-cost-basket').textContent =\n        userSelections.easyPay.noCreditSettings.monthlyCost;\n\n      [...document.querySelectorAll('.not-needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'flex')\n      );\n      [...document.querySelectorAll('.needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'none')\n      );\n    } else if (userSelections.easyPay.method === 'Με πιστωτική κάρτα') {\n      document.querySelector('.easy-pay-prokatavoli-basket').textContent =\n        userSelections.easyPay.creditSettings.prokatavoli + '€';\n      document.querySelector('.easy-pay-doseis-basket').textContent =\n        userSelections.easyPay.creditSettings.doseis;\n      document.querySelector('.easy-pay-final-cost-basket').textContent =\n        userSelections.easyPay.creditSettings.finalCost;\n      document.querySelector('.easy-pay-monthly-cost-basket').textContent =\n        userSelections.easyPay.creditSettings.monthlyCost;\n      [...document.querySelectorAll('.not-needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'flex')\n      );\n      [...document.querySelectorAll('.needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'none')\n      );\n    } else if (userSelections.easyPay.method === 'Μετρητά') {\n      document.querySelector('.easy-pay-final-cost-basket').textContent =\n        userSelections.easyPay.system.priceWithVAT;\n      document.querySelector('.easy-pay-yearly-gain').textContent = userSelections.calculator\n        .perMonthCheckbox\n        ? (+userSelections.calculator.gain.replace('€', '') * 12).toFixed(2) + '€'\n        : userSelections.calculator.gain;\n      [...document.querySelectorAll('.not-needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'none')\n      );\n      [...document.querySelectorAll('.needed-row-metrhta-basket')].map(\n        el => (el.style.display = 'flex')\n      );\n    }\n  }\n  if (sections.easyPayMonthlyGain) {\n    document.querySelector('.easy-pay-monthly-gain-basket').textContent = perMonthCheckbox.checked\n      ? userSelections.calculator.gain\n      : Math.round((userSelections.calculator.gain.replace('€', '') / 12) * 100) / 100 + '€';\n  }\n}\n\nfunction isApaitoumenoEmulatorType(type) {\n  return apaitoumenaEmulatorTypes.indexOf(type) !== -1;\n}\n\n/* Basket END */\n\n/* Calculator */\n// let lpgConsumption = 1.15; //15% more than petrol (direct => 1.28)\n// let cngConsumption = -0.444; //44,44% less than petrol\n\nconst sliders = document.querySelectorAll('.range-slider-calc');\nconst outputs = document.querySelectorAll('.calc-output');\nconst lpgResult = document.querySelector('#lpg-result');\nconst cngResult = document.querySelector('#cng-result');\nconst lpgPercentageEl = document.querySelector('#lpg-percentage');\nconst cngPercentageEl = document.querySelector('#cng-percentage');\nconst petrolCost = document.querySelector('#petrolCost');\nconst lpgCost = document.querySelector('#lpgCost');\nconst cngCost = document.querySelector('#cngCost');\nconst perMonthCheckbox = document.querySelector('#perMonthCheckbox');\nconst costLabels = document.querySelectorAll('.cost-label');\nconst lpgResultLabel = document.querySelector('#lpg-result-label');\nconst cngResultLabel = document.querySelector('#cng-result-label');\nlet fuelPrices;\nconst calcCovers = document.querySelectorAll('.calc-cover');\n\nsliders.forEach((slider, i) => {\n  outputs[i].value = slider.value;\n  calcCovers[i].style.width = calcCoverWidth(slider) + '%';\n\n  slider.addEventListener('input', () => {\n    outputs[i].value = slider.value;\n    calcCovers[i].style.width = calcCoverWidth(slider) + '%';\n    calcResult();\n  });\n  outputs[i].addEventListener('input', function () {\n    slider.value = this.value;\n    calcCovers[i].style.width = calcCoverWidth(slider) + '%';\n    calcResult();\n  });\n});\n\nperMonthCheckbox.addEventListener('change', function () {\n  calcResult();\n});\n\nlet lpgConsumption, cngConsumption;\nlet lpgGain, cngGain, lpgExpenses, cngExpenses, petrolExpenses;\n\nfunction calcResult(allowedToTrigger = true) {\n  const selectedVehicleIsDirect = hasResult() && fetchedModelObj.isDirect;\n\n  lpgConsumption = selectedVehicleIsDirect ? 1.28 : 1.15;\n  cngConsumption = selectedVehicleIsDirect ? -0.24 : -0.444;\n\n  let petrolCostPerMonth, lpgCostPerMonth, cngCostPerMonth;\n\n  const ltPer100Km = parseFloat(document.querySelector('.lt-100km').value);\n  const kmPerYear = parseInt(document.querySelector('.km-year').value);\n  const petrolPrice = parseFloat(document.querySelector('.petrol-price').value);\n  const lpgPrice = parseFloat(document.querySelector('.lpg-price').value);\n  const cngPrice = parseFloat(document.querySelector('.cng-price').value);\n\n  petrolCostPerMonth = (ltPer100Km * kmPerYear * petrolPrice) / (100 * 12); // €/month\n\n  lpgCostPerMonth = (ltPer100Km * lpgConsumption * kmPerYear * lpgPrice) / (100 * 12);\n  cngCostPerMonth = (ltPer100Km * (cngConsumption + 1) * kmPerYear * cngPrice) / (100 * 12);\n\n  const lpgPercentageValue = (100 * (petrolCostPerMonth - lpgCostPerMonth)) / petrolCostPerMonth;\n  const cngPercentageValue = (100 * (petrolCostPerMonth - cngCostPerMonth)) / petrolCostPerMonth;\n  const activeContainer = getActiveContainer();\n\n  if (!perMonthCheckbox.checked) {\n    costLabels.forEach(label => (label.textContent = 'Ετήσια Έξοδα:'));\n    lpgResultLabel.textContent = 'Ετήσιο όφελος';\n    cngResultLabel.textContent = 'Ετήσιο όφελος';\n\n    petrolExpenses = +(petrolCostPerMonth * 12).toFixed(1);\n    lpgExpenses = +(lpgCostPerMonth * 12).toFixed(1);\n    cngExpenses = +(cngCostPerMonth * 12).toFixed(1);\n\n    petrolCost.textContent = petrolExpenses.toFixed(1) + '€';\n    lpgCost.textContent = lpgExpenses.toFixed(1) + '€';\n    cngCost.textContent = cngExpenses.toFixed(1) + '€';\n\n    lpgGain = +((petrolCostPerMonth - lpgCostPerMonth) * 12).toFixed(2);\n\n    lpgResult.textContent = lpgGain.toFixed(2) + '€';\n    lpgPercentageEl.textContent = lpgPercentageValue.toFixed(1) + '%';\n\n    cngGain = +((petrolCostPerMonth - cngCostPerMonth) * 12).toFixed(2);\n\n    cngResult.textContent = cngGain.toFixed(2) + '€';\n    cngPercentageEl.textContent = cngPercentageValue.toFixed(1) + '%';\n\n    if (activeContainer) {\n      configureAmortizationInMonths((lpgGain / 12).toFixed(1));\n    }\n\n    userSelections.calculator.perMonthCheckbox = false;\n  } else {\n    costLabels.forEach(label => (label.textContent = 'Μηνιαία Έξοδα:'));\n    lpgResultLabel.textContent = 'Μηνιαίο όφελος';\n    cngResultLabel.textContent = 'Μηνιαίο όφελος';\n\n    petrolExpenses = +petrolCostPerMonth.toFixed(1);\n    lpgExpenses = +lpgCostPerMonth.toFixed(1);\n    cngExpenses = +cngCostPerMonth.toFixed(1);\n\n    petrolCost.textContent = petrolExpenses.toFixed(1) + '€';\n    lpgCost.textContent = lpgExpenses.toFixed(1) + '€';\n    cngCost.textContent = cngExpenses.toFixed(1) + '€';\n\n    lpgGain = +(petrolCostPerMonth - lpgCostPerMonth).toFixed(2);\n\n    if (activeContainer) {\n      configureAmortizationInMonths(lpgGain);\n    }\n\n    lpgResult.textContent = lpgGain.toFixed(2) + '€';\n    lpgPercentageEl.textContent = lpgPercentageValue.toFixed(1) + '%';\n\n    cngGain = +(petrolCostPerMonth - cngCostPerMonth).toFixed(2);\n\n    cngResult.textContent = cngGain.toFixed(2) + '€';\n    cngPercentageEl.textContent = cngPercentageValue.toFixed(1) + '%';\n\n    petrolExpenses = +(petrolExpenses * 12).toFixed(1);\n    lpgExpenses = +(lpgExpenses * 12).toFixed(1);\n    cngExpenses = +(cngExpenses * 12).toFixed(1);\n    lpgGain = +(lpgGain * 12).toFixed(1);\n    cngGain = +(cngGain * 12).toFixed(1);\n\n    userSelections.calculator.perMonthCheckbox = true;\n  }\n\n  configureEasyPayMonthlyGain();\n\n  userSelections.calculator.kmPerYearValue = kmPerYear;\n  userSelections.calculator.trueConsumption = ltPer100Km;\n  userSelections.calculator.gain =\n    userSelections.selectedFuel === 'lpg' ? lpgResult.textContent : cngResult.textContent;\n  userSelections.calculator.percentage =\n    userSelections.selectedFuel === 'lpg'\n      ? lpgPercentageEl.textContent\n      : cngPercentageEl.textContent;\n  updateBasketSection({ calculator: true, easyPayMonthlyGain: true, prokatavoliDoseis: true });\n\n  if (allowedToTrigger && step2Triggered && !step3Triggered) {\n    trigger_calculator_step_3({ triggered_via: 'click' });\n  }\n\n  calcResultHypothesis({ years: 5 });\n  showHintActiveTime = 0;\n  hintJustClosed = false;\n}\n\nfunction configureAmortizationInMonths(lpgMonthlyGain) {\n  const { priceWithVAT } = getSelectedSystemNamePrice();\n\n  if (priceWithVAT === null) return;\n\n  let amortizationInMonths = Math.round(priceWithVAT / lpgMonthlyGain);\n\n  if (lpgMonthlyGain > priceWithVAT) {\n    amortizationInMonths = 0;\n  }\n\n  document.querySelector('.amortization-months').textContent = amortizationInMonths;\n  if (amortizationInMonths === 1) {\n    document.querySelector('.amortization-wrapper .amortization-text').textContent = 'μήνα';\n  } else {\n    document.querySelector('.amortization-wrapper .amortization-text').textContent = 'μήνες';\n  }\n}\n\nfunction getSelectedSystemNamePrice() {\n  const systems = getSystemsNamePrice(getActiveContainer());\n  if (systems[0].name === 'not convertible form') {\n    return { priceWithVAT: null };\n  }\n  let foundSelectedSystem;\n  for (let system of systems) {\n    system.priceWithVAT = +system.priceNoVAT.split('€')[0] * VAT;\n    if (system.priceWithVAT === selectedEasyPaySystemPrice) {\n      foundSelectedSystem = system;\n    }\n  }\n  return foundSelectedSystem;\n}\n\nfunction calcCoverWidth(slider) {\n  const sliderMaxMin = (slider.max - slider.value) / (slider.max - slider.min);\n  let offset;\n\n  offset = sliderMaxMin > 0.2 ? 0 : 1.5;\n\n  return sliderMaxMin * 100 + offset;\n}\n\nfunction isFirefox() {\n  return navigator.userAgent.indexOf('Firefox') !== -1;\n}\n\n/* Calculator END */\n\n/* STORAGE */\nfunction saveUserSelections() {\n  if (typeof Storage !== 'undefined')\n    preferredStorage.setItem('userSelections', JSON.stringify(userSelections));\n}\nfunction getUserSelections() {\n  if (typeof Storage !== 'undefined') return JSON.parse(preferredStorage.getItem('userSelections'));\n  return null;\n}\nfunction saveUserInfo() {\n  if (typeof Storage !== 'undefined')\n    preferredStorage.setItem('userInfo', JSON.stringify(userInfo));\n}\nfunction getUserInfo() {\n  if (typeof Storage !== 'undefined') return JSON.parse(preferredStorage.getItem('userInfo'));\n  return null;\n}\n\nfunction isFacebookBrowser() {\n  let ua = navigator.userAgent || navigator.vendor || window.opera;\n  return ua.indexOf('FBAN') > -1 || ua.indexOf('FBAV') > -1;\n}\n\n/* SUMMARY DOWNLOAD */\ndocument.querySelector('.open-download-form').addEventListener('click', e => {\n  formType = 'DOWNLOAD';\n  showFacebookBrowserProblem(true);\n  document.querySelector('#submitSummaryBtn').value = 'Κατέβασε και εκτύπωσε!';\n\n  const hasStrictSummaryPolicy = getStrictSummaryPolicy();\n  document.querySelector('.name-mandatory').textContent = hasStrictSummaryPolicy\n    ? '*'\n    : '(προαιρετικό)';\n  document.querySelector('.phone-mandatory').textContent = hasStrictSummaryPolicy\n    ? '*'\n    : '(προαιρετικό)';\n  document.querySelector('.email-mandatory').textContent = '(προαιρετικό)';\n\n  document.querySelector('#summaryFormTitle').textContent = hasStrictSummaryPolicy\n    ? 'Πρόσθεσε τα στοιχεία σου για την καλύτερη εξυπηρέτησή σου!'\n    : 'Πρόσθεσε, προαιρετικά, τα στοιχεία σου για την καλύτερη εξυπηρέτησή σου!';\n  trigger_opened_summary_form({\n    summary_type: 'download',\n    is_facebook_browser: isFacebookBrowser()\n  });\n});\ndocument.querySelector('.open-email-form').addEventListener('click', e => {\n  formType = 'EMAIL';\n  showFacebookBrowserProblem(false);\n  document.querySelector('#submitSummaryBtn').value = 'Πάρε με Email!';\n\n  const hasStrictSummaryPolicy = getStrictSummaryPolicy();\n  document.querySelector('.name-mandatory').textContent = hasStrictSummaryPolicy\n    ? '*'\n    : '(προαιρετικό)';\n  document.querySelector('.phone-mandatory').textContent = hasStrictSummaryPolicy\n    ? '*'\n    : '(προαιρετικό)';\n  document.querySelector('.email-mandatory').textContent = '*';\n\n  document.querySelector('#summaryFormTitle').textContent = hasStrictSummaryPolicy\n    ? 'Πρόσθεσε τα στοιχεία σου για την καλύτερη εξυπηρέτησή σου!'\n    : 'Πρόσθεσε, προαιρετικά, τα στοιχεία σου για την καλύτερη εξυπηρέτησή σου!';\n\n  trigger_opened_summary_form({\n    summary_type: 'email',\n    is_facebook_browser: isFacebookBrowser()\n  });\n});\n\ndocument\n  .querySelector('#submitSummaryBtn')\n  .addEventListener('click', e => handleSummarySubmit(e, 'form'));\n\ndocument.querySelector('#downloadSummaryBtnBasket').addEventListener('click', e => {\n  document.querySelector('.side-bar-close').click();\n  document.querySelector('#summary').scrollIntoView({ behavior: 'smooth' });\n  document.querySelector('.open-download-form').click();\n  // downloadSummarySubmit(e, 'basket', 'DOWNLOAD');\n});\ndocument.querySelector('#emailSummaryBtnBasket').addEventListener('click', e => {\n  document.querySelector('.side-bar-close').click();\n  document.querySelector('#summary').scrollIntoView({ behavior: 'smooth' });\n  document.querySelector('.open-email-form').click();\n  // emailSummarySubmit(e, 'basket', 'EMAIL');\n});\n\nfunction handleSummarySubmit(e, triggeredFrom) {\n  e.preventDefault();\n  formType === 'DOWNLOAD'\n    ? downloadSummarySubmit(e, triggeredFrom, formType)\n    : emailSummarySubmit(e, triggeredFrom, formType);\n}\n\nfunction hasUserInfo() {\n  const ret = getUserInfo();\n\n  if (!ret || !ret.username || !ret.email || !ret.phone) return false;\n  else return true;\n}\n\nfunction hasResult() {\n  if (\n    !getActiveContainer() ||\n    !userSelections ||\n    !Object.keys(userSelections.vehicle).length ||\n    (userSelections.vehicle.suggestions && !userSelections.vehicle.suggestions.hasResult)\n  ) {\n    return false;\n  } else return true;\n}\n\nfunction downloadSummarySubmit(e, triggeredFrom, formType) {\n  const validationResult = validateUserForm(triggeredFrom, formType);\n  if (!validationResult.valid) return handleInvalidDownload(validationResult.msg);\n\n  [...document.querySelectorAll('.summary-form-error')].map(el => (el.style.display = 'none'));\n\n  const dataToSend = prepareDataToSend();\n\n  // console.log(validationResult, 'ok');\n\n  startLoadingSelect(e.target, triggeredFrom, 'download');\n  const submitSummaryBtn = document.querySelector('#submitSummaryBtn');\n  submitSummaryBtn.setAttribute('disabled', 'true');\n  submitSummaryBtn.style.cursor = 'wait';\n\n  fetch(downloadSummaryUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ data: dataToSend })\n  })\n    .then(res => {\n      if (res.status !== 200) {\n        endLoadingSelect(e.target, triggeredFrom, 'download');\n        submitSummaryBtn.removeAttribute('disabled');\n        submitSummaryBtn.style.cursor = 'pointer';\n        if (res.status === 429) {\n          handleInvalidDownload(\n            'Έχετε ξεπεράσει το όριο των κλήσεων για την προσφορά, προσπαθήστε αργότερα'\n          );\n        }\n        return null;\n      }\n      return res.blob();\n    })\n    .then(blob => {\n      if (!blob) return;\n      const newBlob = new Blob([blob], { type: 'application/pdf' });\n      downloadFile(newBlob, 'Η προσφορά μου -' + dataToSend.userInfo.username);\n      endLoadingSelect(e.target, triggeredFrom, 'download');\n      submitSummaryBtn.removeAttribute('disabled');\n      submitSummaryBtn.style.cursor = 'pointer';\n      closeSummaryForm();\n      trigger_system_summary('download');\n    })\n    .catch(error => {\n      endLoadingSelect(e.target, triggeredFrom, 'download');\n      submitSummaryBtn.removeAttribute('disabled');\n      submitSummaryBtn.style.cursor = 'pointer';\n      console.error('Error Fetch:', error);\n    });\n}\n\nfunction prepareDataToSend() {\n  const dataToSend = userSelections;\n  dataToSend.mapBaseUrl = mapBaseUrl;\n  dataToSend.userInfo = userInfo;\n  dataToSend.userInfo.category = getEasyPayFileUploadCategory();\n  dataToSend.sourceReferrerDomain = sourceReferrerDomain;\n  dataToSend.isPremiumOffer = isPremiumOffer();\n  delete dataToSend.fuelPrices;\n  delete dataToSend.vehicle.identification.fetchedData;\n  return dataToSend;\n}\n\nfunction isPremiumOffer() {\n  if (userSelections?.easyPay?.system) {\n    if (\n      !userSelections?.easyPay?.system?.name.includes('E-GO') &&\n      !userSelections?.easyPay?.system?.name.includes('Μονού Ψεκασμού')\n    ) {\n      return true;\n    }\n  } else {\n    const activeContainer = getActiveContainer();\n    const notPremiumIds = [\n      'notConvertible-form',\n      'notConvertible-lpg',\n      'notConvertible-cng',\n      'suggested-lpg-ego',\n      'suggested-lpg-monou'\n    ];\n    if (activeContainer && !notPremiumIds.includes(activeContainer.id)) {\n      return true;\n    }\n  }\n  return false;\n  // if (remainingPremium) {\n  //   if (\n  //     new Date().getFullYear() === 2024 &&\n  //     userSelections.easyPay.system.name.indexOf('C-OBD') !== -1 &&\n  //     userSelections.selectedFuel === 'lpg'\n  //   ) {\n  //     return true;\n  //   }\n  // }\n}\n\nfunction emailSummarySubmit(e, triggeredFrom, formType) {\n  const validationResult = validateUserForm(triggeredFrom, formType);\n  if (!validationResult.valid) return handleInvalidDownload(validationResult.msg);\n\n  [...document.querySelectorAll('.summary-form-error')].map(el => (el.style.display = 'none'));\n\n  const dataToSend = prepareDataToSend();\n\n  // console.log(validationResult, 'ok');\n\n  startLoadingSelect(e.target, triggeredFrom, 'email');\n  const submitSummaryBtn = document.querySelector('#submitSummaryBtn');\n  submitSummaryBtn.setAttribute('disabled', 'true');\n  submitSummaryBtn.style.cursor = 'wait';\n\n  fetch(emailSummaryUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ data: dataToSend })\n  })\n    .then(res => {\n      if (res.status !== 200) {\n        endLoadingSelect(e.target, triggeredFrom, 'email');\n        submitSummaryBtn.removeAttribute('disabled');\n        submitSummaryBtn.style.cursor = 'pointer';\n\n        if (res.status === 429) {\n          handleInvalidDownload(\n            'Έχετε ξεπεράσει το όριο των κλήσεων για την προσφορά, προσπαθήστε αργότερα'\n          );\n        } else {\n          handleInvalidDownload('Το email που καταχωρήσατε δεν είναι έγκυρο, ξαναπροσπαθήστε');\n        }\n        return;\n      }\n      return res.json();\n    })\n    .then(data => {\n      if (!data) return;\n      endLoadingSelect(e.target, triggeredFrom, 'email');\n      submitSummaryBtn.removeAttribute('disabled');\n      submitSummaryBtn.style.cursor = 'pointer';\n\n      if (triggeredFrom === 'form') {\n        document.querySelector('.summary-success-form').style.display = 'block';\n        document.querySelector('.success-msg-email').textContent = userInfo.email;\n        setTimeout(() => {\n          closeSummaryForm();\n          document.querySelector('.summary-success-form').style.display = 'none';\n        }, 3000);\n      } else if (triggeredFrom === 'basket') {\n        document.querySelector('.summary-form-success').style.display = 'block';\n        document.querySelector('.success-msg-email-basket').textContent = userInfo.email;\n        setTimeout(() => {\n          document.querySelector('.summary-form-success').style.display = 'none';\n        }, 3000);\n      }\n      trigger_system_summary('email');\n    })\n    .catch(error => {\n      endLoadingSelect(e.target, triggeredFrom, 'email');\n      submitSummaryBtn.removeAttribute('disabled');\n      submitSummaryBtn.style.cursor = 'pointer';\n      console.error('Error Fetch:', error);\n    });\n}\n\nfunction closeSummaryForm() {\n  document.querySelector('.email-contact-pop-up').style.display = 'none';\n  const overlay = document.querySelector('.email-overlay');\n  overlay && (overlay.style.display = 'none');\n}\n\nfunction getStrictSummaryPolicy() {\n  return strictSummaryPolicyReferrers.includes(sourceReferrerDomain);\n}\n\nfunction validateUserForm(triggeredFrom = null, formType) {\n  if (triggeredFrom === 'basket' && isFacebookBrowser()) {\n    return {\n      valid: false,\n      msg: 'Για να κατεβάσετε την προσφορά θα πρέπει να ανοίξετε την ιστοσελίδα σε Chrome, Mozilla ή Safari, διότι ο ενσωματομένως περιηγητής του Facebook δεν επιτρέπει τη λήψη αρχείων.'\n    };\n  }\n  if (!hasResult())\n    return {\n      valid: false,\n      msg: 'Θα πρέπει πρώτα να επιλέξετε το όχημα σας από το Βήμα 1!'\n    };\n\n  const hasStrictSummaryPolicy = getStrictSummaryPolicy();\n\n  if (hasStrictSummaryPolicy) {\n    if (!document.querySelector('.user-info-username').value)\n      return { valid: false, msg: 'Απαιτείται ονοματεπώνυμο' };\n  }\n\n  const userEmail = document.querySelector('.user-info-email').value;\n  if (userEmail && !isEmail(userEmail)) return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n\n  if (formType === 'EMAIL' && !isEmail(userEmail))\n    return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n\n  const userPhone = document.querySelector('.user-info-phone').value;\n  if (userPhone && (isNaN(userPhone) || userPhone.length !== 10))\n    return { valid: false, msg: 'Απαιτείται έγκυρος αριθμός τηλεφώνου (10ψηφία)' };\n\n  if (hasStrictSummaryPolicy) {\n    if (!userPhone) return { valid: false, msg: 'Απαιτείται τηλέφωνο' };\n  }\n  return { valid: true };\n}\n\nfunction isEmail(email) {\n  const re =\n    /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n  return re.test(String(email).toLowerCase());\n}\n\nfunction handleInvalidDownload(msg) {\n  const formErrorEls = [...document.querySelectorAll('.summary-form-error')];\n  formErrorEls.map(el => (el.style.display = 'block'));\n  formErrorEls.map(el => (el.textContent = msg));\n\n  setTimeout(() => formErrorEls.forEach(el => (el.style.display = 'none')), 4000);\n}\n\nfunction downloadFile(blob, fileName) {\n  if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n    window.navigator.msSaveOrOpenBlob(newBlob);\n    return;\n  }\n  const link = document.createElement('a');\n  link.href = URL.createObjectURL(blob);\n  link.download = fileName + '.pdf';\n  document.body.append(link);\n  link.click();\n  link.remove();\n\n  // in case the Blob uses a lot of memory\n  setTimeout(() => URL.revokeObjectURL(link.href), 7000);\n}\n\n/* STORES */\n\nfunction initStores() {\n  if (userSelections.location) {\n    locationOnChange(userSelections.location.place, true);\n  } else {\n    locationOnChange(storesLocationSelect.value, true);\n  }\n  // enableGPSButtonClick();\n}\n\ndocument.querySelector('#stores').addEventListener('click', () => {\n  if (geolocationError) {\n    document.querySelector('.geolocation-error').style.display = 'none';\n    geolocationError = false;\n  }\n});\n\ndocument.querySelector('.open-map-btn').addEventListener('click', () => {\n  const url = `${mapBaseUrl}?gps=ΝΟΜΟΣ%20${\n    storesLocationSelect.options[storesLocationSelect.selectedIndex].innerHTML\n  }&filters=1`;\n  window.open(url, '_blank');\n});\n\n[...document.querySelectorAll('.enable-gps-btn')].forEach(btn =>\n  btn.addEventListener('click', enableGPSButtonClick)\n);\n\nasync function enableGPSButtonClick({ showError = true } = {}) {\n  try {\n    const currentLatLng = await getCurrentPosition();\n    // console.log('my current position', currentLatLng);\n    populateClosestsPins({ lat: currentLatLng[0], lng: currentLatLng[1] });\n  } catch (e) {\n    console.log('error on geolocation', e);\n    if (!showError) return;\n    geolocationError = true;\n    const error = document.querySelector('.geolocation-error');\n    error.textContent = isFacebookBrowser()\n      ? 'Ανοίξτε τη σελίδα σε άλλον περιηγητή (Chrome, Firefox κλπ) γιατί το GPS δεν υποστηρίζεται από το περιηγητή του Facebook. Επιλέξτε τις τρεις κουκίδες πάνω δεξιά στις ρυθμίσεις και στη συνέχεια άνοιγμα στο Chrome (ή άλλον περιηγητή).'\n      : 'Η τοποθεσία σας είναι απενεργοποιημένη, προσπαθήστε ξανά';\n    error.style.display = 'block';\n  }\n}\n\nfunction setLocationSelectHeader(label) {\n  if (isLocationSelected) return;\n  const temp = [...locationSelect.options].map(option => option.outerHTML);\n  temp[0] = `<option value=\"\">${label}</option>`;\n  locationSelect.innerHTML = temp.join('');\n}\n\nstoresLocationSelect.addEventListener('change', e => locationOnChange(e.target.value));\nfunction locationOnChange(value, init = false) {\n  if (!value) {\n    isLocationSelected = false;\n    return;\n  }\n  isLocationSelected = true;\n\n  fuelPricesSelect.value = value;\n  if (!init) {\n    modifyFuelPriceSliders(value, { save: true });\n    [...document.querySelectorAll('.place-calc-descr')].map(\n      el => (el.textContent = fuelPricesSelect.options[fuelPricesSelect.selectedIndex].textContent)\n    );\n  }\n\n  notConvertibleFormLocationSelect.value = value;\n\n  storesLocationSelect.value = value;\n  document.querySelector('.searching-place-text-location').textContent =\n    storesLocationSelect.options[storesLocationSelect.selectedIndex].innerHTML;\n  resetLocationContainer();\n\n  if (\n    userSelections.location &&\n    userSelections.location.numPlaces &&\n    (userSelections.location.numPlaces.places || userSelections.location.numPlaces.places === 0) &&\n    userSelections.location.place === value &&\n    userSelections.location.place === userSelections.location.numPlaces.place\n  ) {\n    fetchedPinsLength = userSelections.location.numPlaces.places;\n    populateLocationContainerResults(fetchedPinsLength);\n    return;\n  }\n\n  fetch(numPlaceUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ place: value, lovatoServices: ['lovatoSystems'] })\n  })\n    .then(response => {\n      status = response.status;\n      return response.json();\n    })\n    .then(data => {\n      if (status != 200) {\n        //DEBUG\n        // start loading in pins result\n        // endLoadingSelect(dimensionSelect);\n        // litresSelect.innerHTML = `<option value=\"\">Προσπαθήστε ξανά ${data.msg}</option>`;\n        console.error(status);\n        return;\n      }\n      fetchedPinsLength = data;\n      populateLocationContainerResults(fetchedPinsLength);\n      if (userSelections.location && userSelections.location.numPlaces) {\n        userSelections.location.numPlaces = {\n          place: storesLocationSelect.value,\n          places: fetchedPinsLength\n          // expDate:\n          //   !userSelections.location.numPlaces || isExpired(userSelections.location.numPlaces.expDate)\n          //     ? setExpDate(numPlacesCacheTime)\n          //     : userSelections.location.numPlaces.expDate\n        };\n        userSelections.location.place = storesLocationSelect.value;\n      } else {\n        userSelections.location = {\n          numPlaces: {\n            place: storesLocationSelect.value,\n            places: fetchedPinsLength\n          },\n          place: storesLocationSelect.value\n        };\n      }\n      saveUserSelections();\n    })\n    .catch(error => {\n      //endLoadingSelect(dimensionSelect);\n      //litresSelect.innerHTML = '<option value=\"\">Προσπαθήστε ξανά</option>';\n      console.error('Pins Error Fetch:', error);\n    });\n\n  // showResults();\n}\n\nfunction resetLocationContainer() {\n  document.querySelector('.searching-location').style.display = 'flex';\n  // document.querySelector('.location-results-container').style.display = 'none';\n}\n\nfunction populateLocationContainerResults(fetchedPinsLength) {\n  if (fetchedPinsLength) {\n    document.querySelector('.pins-found').style.display = 'block';\n    document.querySelector('.pins-not-found').style.display = 'none';\n    document.querySelector('.found-places-text-location').textContent = fetchedPinsLength;\n  } else {\n    document.querySelector('.pins-found').style.display = 'none';\n    document.querySelector('.pins-not-found').style.display = 'block';\n  }\n\n  const locationStr = storesLocationSelect.options[storesLocationSelect.selectedIndex].innerHTML;\n  document.querySelector('.selected-location-string').textContent =\n    locationStr.charAt(0).toUpperCase() + locationStr.slice(1).toLowerCase();\n\n  document.querySelector('.searching-location').style.display = 'none';\n  // document.querySelector('#locationResultsContainer').style.display = 'flex';\n}\n\nfunction getCurrentPosition() {\n  return new Promise((resolve, reject) => {\n    let geolocationOptions = {\n      enableHighAccuracy: true,\n      timeout: 5000,\n      maximumAge: 0\n    };\n\n    navigator.geolocation.getCurrentPosition(\n      pos => {\n        resolve([pos.coords.latitude, pos.coords.longitude, pos.coords.accuracy]);\n      },\n      err => {\n        console.warn(`Error on geolocation: ${err.code}: ${err.message}`);\n        reject(err.message);\n      },\n      geolocationOptions\n    );\n  });\n}\n\nfunction populateClosestsPins(userLatLng) {\n  document.querySelector('.searching-closests').style.display = 'flex';\n\n  fetch(closestUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      geometry: userLatLng,\n      lovatoServices: ['lovatoSystems'],\n      kmLimit: 150,\n      pinsLimit: 20\n    })\n  })\n    .then(response => {\n      status = response.status;\n      return response.json();\n    })\n    .then(data => {\n      if (status != 200) {\n        console.error(status);\n        return;\n      }\n      fetchedClosests = data.closestPins;\n      openLocationListContainer();\n      addLocationStr(data.location);\n      prepareClosestList(fetchedClosests);\n      document.querySelector('.searching-closests').style.display = 'none';\n    })\n    .catch(error => {\n      //endLoadingSelect(dimensionSelect);\n      //litresSelect.innerHTML = '<option value=\"\">Προσπαθήστε ξανά</option>';\n      console.error('Pins Error Fetch:', error);\n    });\n}\n\nfunction openLocationListContainer() {\n  const locationListContainer = document.querySelector('.location-list-container');\n  locationListContainer.style.display = 'flex';\n  locationListContainer.style.height = 'auto';\n}\n\nfunction addLocationStr(location) {\n  document.querySelector('.location-address-string').textContent = location;\n}\n\nfunction prepareClosestList(fetchedClosests) {\n  generateListItems(fetchedClosests);\n  populateClosestsList(fetchedClosests);\n}\n\nfunction generateListItems(fetchedClosests) {\n  const listItem = document.querySelector('.list-item').cloneNode(true);\n  const containerList = document.querySelector('.location-list-block');\n  [...containerList.querySelectorAll('.list-item')].forEach(el => {\n    el.remove();\n  });\n  for (let i = 0; i < fetchedClosests.length; i++) {\n    const cloneListItem = listItem.cloneNode(true);\n    containerList.appendChild(cloneListItem);\n  }\n}\n\nfunction populateClosestsList(fetchedClosests) {\n  let names, addresses, phones, emails, distances, openMaps;\n\n  let geometryParam;\n  const filtersParam = '1';\n\n  names = [...document.querySelectorAll('.closest-name')];\n  addresses = [...document.querySelectorAll('.closest-address')];\n  phones = [...document.querySelectorAll('.closest-phone')];\n  emails = [...document.querySelectorAll('.closest-email')];\n  distances = [...document.querySelectorAll('.closest-distance')];\n  openMaps = [...document.querySelectorAll('.closest-open-map')];\n\n  fetchedClosests.forEach((closest, i) => {\n    names[i].textContent = closest.pin.properties.name;\n    addresses[i].textContent = closest.pin.properties.address;\n    phones[i].textContent = closest.pin.properties.phone;\n    emails[i].textContent = closest.pin.properties.email ? closest.pin.properties.email : '';\n    distances[i].textContent = Math.round(closest.distance * 100) / 100;\n\n    // gpsParam = encodeURI(closest.pin.properties.address);\n    // openMaps[i].href = `${mapBaseUrl}?gps=${gpsParam}&filters=${filtersParam}`;\n    // nameParam = encodeURI(closest.pin.properties.name);\n    // openMaps[i].href = `${mapBaseUrl}?name=${nameParam}&filters=${filtersParam}`;\n    let { lat, lng } = closest.pin.geometry;\n    geometryParam = lat + ',' + lng;\n    openMaps[i].href = `${mapBaseUrl}?geometry=${geometryParam}&filters=${filtersParam}`;\n    openMaps[i].target = '_blank';\n  });\n}\n\n/* CSS */\n\nfunction initCss() {\n  //LPG\n  document.querySelectorAll('.suggested-overlay-block').forEach(el => {\n    mouseLeaveSuggestedOverlayLPG(el);\n    el.addEventListener('mouseleave', e => mouseLeaveSuggestedOverlayLPG(el));\n  });\n  document.querySelectorAll('.suggested-system-value-block').forEach(el => {\n    el.addEventListener('mouseenter', e => mouseEnterSuggestedOverlayLPG(el));\n  });\n\n  //CNG\n  document.querySelectorAll('.suggested-overlay-block-cng').forEach(el => {\n    mouseLeaveSuggestedOverlayCNG(el);\n    el.addEventListener('mouseleave', e => mouseLeaveSuggestedOverlayCNG(el));\n  });\n  document.querySelectorAll('.suggested-system-value-block').forEach(el => {\n    el.addEventListener('mouseenter', e => mouseEnterSuggestedOverlayCNG(el));\n  });\n}\n\nfunction mouseEnterSuggestedOverlayLPG(el) {\n  const parent = el.closest('.suggested-lpg-system');\n  if (!parent) return;\n  const target = parent.querySelector('.suggested-overlay-block');\n  target.classList.remove('fade-out');\n  target.classList.add('fade-in');\n}\nfunction mouseLeaveSuggestedOverlayLPG(el) {\n  const parent = el.closest('.suggested-lpg-system');\n  const target = parent.querySelector('.suggested-overlay-block');\n  target.classList.remove('fade-in');\n  target.classList.add('fade-out');\n}\nfunction mouseEnterSuggestedOverlayCNG(el) {\n  const parent = el.closest('.suggested-cng-system');\n  if (!parent) return;\n  const target = parent.querySelector('.suggested-overlay-block-cng');\n  target.classList.remove('fade-out');\n  target.classList.add('fade-in');\n}\nfunction mouseLeaveSuggestedOverlayCNG(el) {\n  const parent = el.closest('.suggested-cng-system');\n  const target = parent.querySelector('.suggested-overlay-block-cng');\n  target.classList.remove('fade-in');\n  target.classList.add('fade-out');\n}\n\n/* CONTACT FORM */\ndocument.querySelector('#contactForm').addEventListener('submit', e => {\n  e.preventDefault();\n  const validationResult = validateContactForm();\n  if (!validationResult.valid) return handleInvalidContactForm(validationResult.msg);\n\n  sendContactEmail();\n});\n\nfunction validateContactForm() {\n  if (!userInfo.username) return { valid: false, msg: 'Απαιτείται ονοματεπώνυμο' };\n  if (!isEmail(userInfo.email)) return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n  if (isNaN(userInfo.phone) || userInfo.phone.length != 10)\n    return { valid: false, msg: 'Απαιτείται έγκυρος αριθμός τηλεφώνου (10ψηφία)' };\n  if (!document.querySelector('#contactMsg').value)\n    return { valid: false, msg: 'Παρακαλούμε γράψτε πρώτα το μήνυμα σας' };\n  // if (!hasUserInfo()) return { valid: false, msg: 'Συμπληρώστε πρώτα τα προσωπικά σας στοιχεία' };\n  return { valid: true };\n}\n\nfunction handleInvalidContactForm(msg) {\n  const formErrorEl = document.querySelector('.contact-form-error');\n  formErrorEl.style.display = 'block';\n  formErrorEl.textContent = msg;\n  setTimeout(() => (formErrorEl.style.display = 'none'), 4000);\n}\n\nfunction sendContactEmail() {\n  const data = {\n    user: userInfo,\n    msg: document.querySelector('#contactMsg').value,\n    form: {\n      url: location.origin + location.pathname,\n      name: document.querySelector('#contactForm').dataset.name,\n      date: `${new Date().toLocaleDateString('el')}, ${new Date().toLocaleTimeString('el')}`\n    },\n    userSelections: hasResult() && userSelections\n  };\n\n  document.querySelector('#contactSubmit').value = 'Γίνεται η αποστολή...';\n  fetch(urlContactForm, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ data })\n  })\n    .then(res => res.json())\n    .then(data => {\n      document.querySelector('.contact-form-success').style.display = 'block';\n      document.querySelector('#contactSubmit').value = 'Αποστολή';\n      document.querySelector('#contactMsg').value = '';\n      setTimeout(() => {\n        document.querySelector('.contact-form-success').style.display = 'none';\n      }, 6000);\n    })\n    .catch(e => {\n      console.error('Error on contact form email:', e);\n      handleInvalidContactForm('Υπήρξε πρόβλημα κατά την αποστολή, προσπαθήστε αργότερα');\n      document.querySelector('#contactSubmit').value = 'Αποστολή';\n    });\n}\n\n/* gps # only on mobile */\ndocument\n  .querySelector('.gps-btn-after-img')\n  .addEventListener(\n    'click',\n    () => isMobile() && document.querySelector('#storesGPS').scrollIntoView({ behavior: 'smooth' })\n  );\n\nfunction isMobile() {\n  return window.matchMedia('screen and (max-width: 768px)').matches;\n}\nfunction isMobile479() {\n  return window.matchMedia('screen and (max-width: 479px)').matches;\n}\n\n/* LOTTERY */\n// const seedDate = new Date(2021, 7, 28, 1, 8);\n// const seedDate = new Date('9/10/21');\n// let baseDate;\n\n// const _second = 1000;\n// const _minute = _second * 60;\n// const _hour = _minute * 60;\n// const _day = _hour * 24;\n// const lotteryDaysInterval = 20;\n\n// const daysCountdown = document.querySelector('#days');\n// const hoursCountdown = document.querySelector('#hours');\n// const minutesCountdown = document.querySelector('#minutes');\n// const secondsCountdown = document.querySelector('#seconds');\n\n// function initLotteryCountdown() {\n//   fetch(baseDateUrl)\n//     .then(response => {\n//       status = response.status;\n//       return response.json();\n//     })\n//     .then(data => {\n//       if (status != 200) {\n//         console.error('Error Status Base Date Fetch:', status);\n//         baseDate = new Date('1/1/2001');\n\n//         return;\n//       }\n//       // console.log('Base Date:', data);\n//       baseDate = new Date(data);\n//       // baseDate = new Date(new Date().getTime() + 60000);\n//       showBaseDate();\n//       startCountdown();\n//     })\n//     .catch(error => {\n//       baseDate = new Date('2/1/2001');\n//       showBaseDate();\n//       console.error('Error Base Date Fetch:', error);\n//     });\n// }\n\n// function calculateTime(remainingMilliseconds) {\n//   const seconds = Math.floor((remainingMilliseconds % _minute) / _second);\n//   const minutes = Math.floor((remainingMilliseconds % _hour) / _minute);\n//   const hours = Math.floor((remainingMilliseconds % _day) / _hour);\n//   const days = Math.floor(remainingMilliseconds / _day);\n//   populateCountdown(days, hours, minutes, seconds);\n// }\n\n// function populateCountdown(days, hours, minutes, seconds) {\n//   daysCountdown.textContent = days.toString().length === 1 ? '0' + days : days;\n//   hoursCountdown.textContent = hours.toString().length === 1 ? '0' + hours : hours;\n//   minutesCountdown.textContent = minutes.toString().length === 1 ? '0' + minutes : minutes;\n//   secondsCountdown.textContent = seconds.toString().length === 1 ? '0' + seconds : seconds;\n// }\n\n// function showBaseDate() {\n//   const day =\n//     baseDate.getDate().toString().length === 1 ? '0' + baseDate.getDate() : baseDate.getDate();\n//   const month =\n//     (baseDate.getMonth() + 1).toString().length === 1\n//       ? '0' + (baseDate.getMonth() + 1)\n//       : baseDate.getMonth() + 1;\n//   const year = baseDate.getFullYear().toString().substring(2, baseDate.getFullYear().length);\n//   document.querySelector('.base-date').textContent = `${day}/${month}/${year}`;\n// }\n\n// function startCountdown() {\n//   let nextLotteryDate = baseDate;\n//   let remainingMilliseconds = nextLotteryDate - new Date();\n//   calculateTime(remainingMilliseconds);\n//   setInterval(() => {\n//     nextLotteryDate = baseDate;\n//     remainingMilliseconds = nextLotteryDate - new Date();\n//     if (remainingMilliseconds < 0) {\n//       baseDate = getNextLotteryDate(baseDate);\n//       showBaseDate();\n//       nextLotteryDate = baseDate;\n\n//       remainingMilliseconds = nextLotteryDate - new Date();\n//     }\n//     calculateTime(remainingMilliseconds);\n//   }, 1000);\n// }\n\n// function getNextLotteryDate(date) {\n//   const minutes = 60 * 24 * lotteryDaysInterval;\n//   return new Date(date.getTime() + minutes * 60000);\n// }\n\n/* GTAG */\nlet gtagDebug = false;\nfunction triggerGtagEvent(eventName, params = {}) {\n  if (!gtagDebug && window.location.href.includes('webflow.io'))\n    return { status: 'Error', message: 'dev' };\n  if (typeof gtag === 'undefined') return { status: 'Error', message: 'gtag undefined' };\n  if (typeof eventName === 'undefined' || eventName === '')\n    return { status: 'Error', message: 'eventName undefined' };\n\n  params.source_referrer_domain = sourceReferrerDomain;\n  gtag('event', eventName, params);\n  return {\n    status: 'OK',\n    message: `\"${eventName}\" event triggered with params: \"${\n      Object.keys(params).length && JSON.stringify(params)\n    }\"`\n  };\n}\n\n// learn_more_klirwsh\n// document\n//   .querySelector('.link-block-6')\n//   .addEventListener('click', e => trigger_learn_more_klirwsh());\n// function trigger_learn_more_klirwsh() {\n//   triggerGtagEvent('learn_more_klirwsh', { from_page: 'arxiki' });\n// }\n\n// step_2_ok\nfunction trigger_car_step_2() {\n  step2Triggered = true;\n  step3Triggered = false;\n  step4Triggered = false;\n  step3ActiveTime = 0;\n  step4ActiveTime = 0;\n\n  hintClosedCounter = 0;\n\n  resetProgressSteps();\n  changeProgressStepState('car', 'green');\n  // changeProgressStepState('calculator', 'next');\n\n  triggerGtagEvent('car_step_2', {\n    selected_fuel: userSelections.selectedFuel,\n    vehicle_make: userSelections.vehicle.identification.vehicleValues.make,\n    vehicle_year: userSelections.vehicle.identification.vehicleValues.year,\n    vehicle_model: userSelections.vehicle.identification.vehicleValues.model,\n    vehicle_description: userSelections.vehicle.identification.vehicleValues.description,\n    suggested_system: userSelections.vehicle.suggestions.systems[0].name\n  });\n}\n\nfunction trigger_not_convertible(notConvForm = false) {\n  triggerGtagEvent('not_convertible', {\n    selected_fuel: userSelections.selectedFuel,\n    vehicle_make: userSelections.vehicle.identification.vehicleValues.make,\n    vehicle_year: userSelections.vehicle.identification.vehicleValues.year,\n    vehicle_model: userSelections.vehicle.identification.vehicleValues.model,\n    vehicle_description: userSelections.vehicle.identification.vehicleValues.description,\n    not_conv_form: notConvForm\n  });\n}\n\nfunction isElementInViewport(el) {\n  const rect = el.getBoundingClientRect();\n  const top = rect.top / (window.innerHeight || document.documentElement.clientHeight);\n  const bottom = rect.bottom / (window.innerHeight || document.documentElement.clientHeight);\n\n  return (\n    ((top <= 0.5 && top >= 0) ||\n      (bottom <= 1 && bottom >= 0.5) ||\n      (rect.height >= (window.innerHeight || document.documentElement.clientHeight) &&\n        top <= 0.5 &&\n        bottom >= 0.5)) &&\n    rect.left >= 0 &&\n    rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n  );\n}\n\nlet systemSummaryTriggered = false;\n\nfunction trigger_system_summary(type) {\n  systemSummaryTriggered = true;\n  changeProgressStepState('summary', 'green');\n  togglePulse('.summary-pulse', false);\n  triggerGtagEvent('system_summary', { summary_type: type });\n}\n\nlet step2Triggered = false,\n  step3ActiveTime = 0,\n  step4ActiveTime = 0,\n  step3Triggered = false,\n  step4Triggered = false,\n  stepSecondsNeededToTrigger = 8;\n\nfunction initStepInterval() {\n  setInterval(() => {\n    step3CalculatorWatch();\n    step4EasyPayWatch();\n    showHintWatch();\n  }, 1000);\n}\n\nfunction step3CalculatorWatch() {\n  if (!step2Triggered) {\n    step3ActiveTime = 0;\n    return;\n  }\n  if (isElementInViewport(document.querySelector('#calculator'))) {\n    step3ActiveTime++;\n    if (step3ActiveTime >= stepSecondsNeededToTrigger && !step3Triggered) {\n      trigger_calculator_step_3({ triggered_via: 'time' });\n    }\n  }\n}\n\nfunction step4EasyPayWatch() {\n  if (!step2Triggered) {\n    step4ActiveTime = 0;\n    return;\n  }\n  if (isElementInViewport(document.querySelector('#easy-pay'))) {\n    step4ActiveTime++;\n    if (step4ActiveTime >= stepSecondsNeededToTrigger && !step4Triggered) {\n      trigger_easy_pay_step_4({ triggered_via: 'time' });\n    }\n  }\n}\n\nfunction trigger_calculator_step_3(options) {\n  if (!step2Triggered) return;\n  step3Triggered = true;\n  changeProgressStepState('calculator', 'green');\n  triggerGtagEvent('calculator_step_3', options);\n}\n\nfunction trigger_easy_pay_step_4(options) {\n  if (!step2Triggered) return;\n  step4Triggered = true;\n\n  changeProgressStepState('easy-pay', 'green');\n  triggerGtagEvent('easyPay_step_4', options);\n}\n\nfunction changeProgressStepState(stepName, state) {\n  let stateClassName, display;\n  if (state === 'green') {\n    stateClassName = 'green-round-checkbox';\n    display = 'flex';\n  } else if (state === 'gray') {\n    stateClassName = 'green-round-checkbox';\n    display = 'none';\n  }\n\n  [...document.querySelectorAll(`.progress-step-${stepName} .green-round-checkbox`)].map(\n    el => (el.style.display = 'none')\n  );\n  [...document.querySelectorAll(`.progress-step-${stepName} .${stateClassName}`)].map(\n    el => (el.style.display = display)\n  );\n\n  if (state === 'green') {\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-number`)].map(\n      el => (el.style.opacity = '0.6')\n    );\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-text`)].map(\n      el => (el.style.opacity = '0.6')\n    );\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-number`)].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-text`)].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n  } else {\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-number`)].map(\n      el => (el.style.opacity = '1')\n    );\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-text`)].map(\n      el => (el.style.opacity = '1')\n    );\n  }\n\n  if (getStepState('easy-pay') === 'green') {\n    applyNextState('summary');\n  } else if (getStepState('calculator') === 'green') {\n    applyNextState('easy-pay');\n  } else if (getStepState('car') === 'green') {\n    applyNextState('calculator');\n  } else {\n    applyNextState('car');\n  }\n\n  if (stepName === 'summary' && state === 'green') {\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-number`)].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n    [...document.querySelectorAll(`.progress-step-${stepName} .progress-text`)].map(\n      el => (el.style.fontWeight = 'normal')\n    );\n    if (getStepState('calculator') === 'gray' && getStepState('easy-pay') === 'green') {\n      applyNextState('calculator');\n    }\n  }\n}\n\nfunction getStepState(stepName) {\n  if (\n    document.querySelector(`.progress-step-${stepName} .green-round-checkbox`).style.display ===\n    'flex'\n  ) {\n    return 'green';\n  }\n  if (\n    document.querySelector(`.progress-step-${stepName} .next-checkbox`).style.display === 'flex'\n  ) {\n    return 'next';\n  }\n  return 'gray';\n}\n\nfunction applyNextState(stepName) {\n  if (getStepState(stepName) === 'green') return;\n  [...document.querySelectorAll(`.next-checkbox`)].map(el => (el.style.display = 'none'));\n  [...document.querySelectorAll(`.flex-step .progress-number`)].map(\n    el => (el.style.fontWeight = 'normal')\n  );\n  [...document.querySelectorAll(`.flex-step .progress-text`)].map(\n    el => (el.style.fontWeight = 'normal')\n  );\n  [...document.querySelectorAll(`.progress-step-${stepName} .next-checkbox`)].map(\n    el => (el.style.display = 'flex')\n  );\n  [...document.querySelectorAll(`.progress-step-${stepName} .progress-number`)].map(\n    el => (el.style.fontWeight = 'bold')\n  );\n  [...document.querySelectorAll(`.progress-step-${stepName} .progress-text`)].map(\n    el => (el.style.fontWeight = 'bold')\n  );\n}\n\nfunction resetProgressSteps() {\n  changeProgressStepState('fuel', 'green');\n  changeProgressStepState('car', 'gray');\n  changeProgressStepState('calculator', 'gray');\n  changeProgressStepState('easy-pay', 'gray');\n  changeProgressStepState('summary', 'gray');\n  // changeProgressStepState('car', 'next');\n}\n\n/* Hints */\nconst hintEl = document.querySelector('.hint');\nlet showHintActiveTime = 0,\n  hintJustClosed = false,\n  hintClosedCounter = 0;\nconst hintSecondsNeededToTrigger = 7;\nconst hintClosedLimit = 2;\n\nfunction showHintWatch() {\n  if (!step2Triggered || hintJustClosed || hintClosedCounter >= hintClosedLimit) {\n    showHintActiveTime = 0;\n    return;\n  }\n  if (isElementInViewport(document.querySelector('#calculator'))) {\n    showHintActiveTime++;\n    if (showHintActiveTime >= hintSecondsNeededToTrigger) {\n      showHint({ section: 'calculator' });\n    }\n  } else {\n    hintEl.classList.remove('show-hint');\n  }\n}\n\ndocument.querySelector('.hint-close-btn').addEventListener('click', e => {\n  hintClosedCounter++;\n  hintJustClosed = true;\n  hintEl.classList.remove('show-hint');\n});\n\nfunction showHint({ section }) {\n  if (section === 'calculator') {\n    hintEl.classList.add('show-hint');\n  }\n}\n\nfunction calcResultHypothesis({ years }) {\n  const fuelGain = userSelections.selectedFuel === 'lpg' ? lpgGain : cngGain;\n  const savingsAfterYears = Math.ceil(fuelGain * years).toLocaleString('el');\n  const expensesAfterYears = Math.ceil(petrolExpenses * years).toLocaleString('el');\n  const fuelTypeString = userSelections.selectedFuel === 'lpg' ? 'υγραεριοκίνηση' : 'φυσικό αέριο';\n  paintResultHypothesis(years, fuelTypeString, savingsAfterYears, expensesAfterYears);\n}\n\nfunction paintResultHypothesis(years, fuelTypeString, savingsAfterYears, expensesAfterYears) {\n  document.querySelector('.hint-years').textContent = years;\n  document.querySelector('.hint-fuel').textContent = fuelTypeString;\n  document.querySelector('.hint-savings').textContent = savingsAfterYears + '€';\n  document.querySelector('.hint-expenses').textContent = expensesAfterYears + '€';\n}\n\ndocument.querySelector('.sidebar-btn').addEventListener('click', e => {\n  trigger_sidebar_open({\n    step_2_triggered: step2Triggered,\n    step_3_triggered: step3Triggered,\n    step_4_triggered: step4Triggered,\n    system_summary_triggered: systemSummaryTriggered\n  });\n});\n\nfunction trigger_sidebar_open(options) {\n  triggerGtagEvent('sidebar_open', options);\n}\n\nfunction trigger_opened_summary_form(options) {\n  triggerGtagEvent('opened_summary_form', {\n    ...options,\n    step_2_triggered: step2Triggered,\n    step_3_triggered: step3Triggered,\n    step_4_triggered: step4Triggered,\n    system_summary_triggered: systemSummaryTriggered\n  });\n}\n\n// function getSourceReferrerDomain() {\n//   let sourceURL =\n//     window.location != window.parent.location ? document.referrer : document.location.host;\n\n//   let hostname;\n//   if (window.location != window.parent.location) {\n//     hostname = new URL(sourceURL).hostname;\n//     hostname = hostname.replace('www.', '');\n//   } else {\n//     hostname = sourceURL;\n//   }\n//   sourceReferrerDomain = hostname;\n// }\n\n/* EASY PAY FILE UPLOADER */\nconst maxFilenameLength = 18;\nconst EASY_PAY_MAX_FILES = 6;\nconst EASY_PAY_MAX_FILE_SIZE = 4;\nconst dropzoneErrorDict = {\n  'You can not upload any more files.': `Μέγιστος αριθμός αρχείων: ${EASY_PAY_MAX_FILES}`,\n  \"You can't upload files of this type.\": 'Τα μόνα επιτρεπτά αρχεία είναι pdf και εικόνες',\n  'File too large': 'Το αρχείο είναι πολύ μεγάλο. Μέγιστο όριο 4 MB',\n  'Unexpected field': 'Μέγιστος αριθμός αρχείων: 6',\n  'File type not allowed': 'Τα μόνα επιτρεπτά αρχεία είναι pdf και εικόνες'\n};\nlet myDropzone;\nconst uploadProgressBar = document.querySelector('.total-progress .progress-bar');\nconst easyPayFormEl = document.querySelector('#easyPayForm');\nconst easyPayFormErrorEl = document.querySelector('.easy-pay-form-error');\nconst easyPayCategoryDict = {\n  0: 'Μισθωτός',\n  1: 'Ελ. Επαγγελματίας',\n  2: 'Συνταξιούχος',\n  3: 'Αγρότης'\n};\n\nfunction easyPayFileUploader() {\n  document.querySelector('#openEasyPayFormBtn').addEventListener('click', () => {\n    if (!hasResult()) {\n      easyPayFormEl.style.display = 'none';\n      easyPayFormErrorEl.style.display = 'block';\n      setTimeout(() => (easyPayFormErrorEl.style.display = 'none'), 2000);\n      return;\n    }\n    syncEasyPayForm();\n    easyPayFormErrorEl.style.display = 'none';\n\n    easyPayFormEl.style.display = 'block';\n    document.querySelector('.easy-pay-form-overlay').style.display = 'block';\n  });\n\n  function syncEasyPayForm() {\n    document.querySelector('.easy-pay-form-system-name').textContent =\n      userSelections.easyPay.system.name;\n    document.querySelector('.easy-pay-form-price-vat').textContent =\n      userSelections.easyPay.system.priceWithVAT;\n    document.querySelector('.easy-pay-form-prokatavoli').textContent =\n      userSelections.easyPay.noCreditSettings.prokatavoli;\n    document.querySelector('.easy-pay-form-doseis').textContent =\n      userSelections.easyPay.noCreditSettings.doseis;\n    document.querySelector('.easy-pay-form-monthly').textContent =\n      userSelections.easyPay.noCreditSettings.monthlyCost;\n    document.querySelector('.easy-pay-form-final').textContent =\n      userSelections.easyPay.noCreditSettings.finalCost;\n    document.querySelector('.easy-pay-form-descr').textContent = isFacebookBrowser()\n      ? 'Με την αποστολή της αίτησης θα πάρεις με email την ολοκληρωμένη προσφορά!'\n      : 'Με την αποστολή της αίτησης θα κατεβάσεις και θα πάρεις με email την ολοκληρωμένη προσφορά!';\n  }\n\n  myDropzone = new Dropzone('#fileUploadContainer', {\n    url: easyPayFileUploaderUrl,\n    paramName: () => 'file',\n    autoQueue: false,\n    maxFilesize: EASY_PAY_MAX_FILE_SIZE,\n    maxFiles: EASY_PAY_MAX_FILES,\n    parallelUploads: EASY_PAY_MAX_FILES,\n    uploadMultiple: true,\n    acceptedFiles: 'image/*,application/pdf',\n    previewTemplate: document.getElementById('easyPayUploadPreview').innerHTML,\n    thumbnailWidth: 80,\n    thumbnailHeight: 80,\n    clickable: '.upload-clickable'\n  });\n\n  myDropzone.on('addedfile', file => {\n    // if (myDropzone.files.length) {\n    // document.querySelector('.dz-message').style.display = 'none';\n    // document.querySelector('.dz-message').classList.add('.dz-message-with-files');\n    // document.querySelector('#fileUploadContainer').classList.add('.upload-container-with-files');\n    // }\n\n    if (\n      myDropzone.files.length > EASY_PAY_MAX_FILES ||\n      file.size / 1048576 > EASY_PAY_MAX_FILE_SIZE ||\n      !file.type\n    ) {\n      myDropzone.removeFile(file);\n      return;\n    }\n\n    fixFilePreviewTemplate(file);\n  });\n  // myDropzone.on('removedfile', file => {\n  // console.log('A file has been removed', file);\n  // if (!myDropzone.files.length) {\n  // document.querySelector('.dz-message').style.display = 'flex';\n  //   document.querySelector('.dz-message').classList.remove('.dz-message-with-files');\n  //   document\n  //     .querySelector('#fileUploadContainer')\n  //     .classList.remove('.upload-container-with-files');\n  // }\n  // });\n\n  myDropzone.on('totaluploadprogress', function (progress) {\n    uploadProgressBar.value = progress;\n    // disableFileUploaderSubmitBtn();\n    if (progress === 100) {\n      uploadProgressBar.style.opacity = '0';\n      document.querySelector('.total-progress .upload-loading').style.display = 'block';\n    }\n  });\n\n  myDropzone.on('sendingmultiple', function (file, xhr, formData) {\n    formData.append('data', JSON.stringify(prepareDataToSend()));\n    // Show the total progress bar when upload starts\n\n    document.querySelector('.total-progress').style.opacity = '1';\n    uploadProgressBar.style.opacity = '1';\n\n    // Disable the submit button\n    disableFileUploaderSubmitBtn();\n  });\n\n  myDropzone.on('successmultiple', function (file, res) {\n    document.querySelector('.total-progress .upload-loading').style.display = 'none';\n    displayEasyPayMsg('success', 'Η αποστολή ολοκληρώθηκε με επιτυχία!', 6000);\n\n    downloadFileFromEasyPay(res.data, 'Η προσφορά μου -' + userInfo.username);\n    myDropzone.removeAllFiles();\n\n    enableFileUploaderSubmitBtn();\n    const data = prepareDataToSend();\n    triggerEasyPayFileUpload({\n      client_category: easyPayCategoryDict[data.userInfo.category],\n      system_name: data.easyPay.system.name,\n      doseis: data.easyPay.noCreditSettings.doseis,\n      monthly_cost: data.easyPay.noCreditSettings.monthlyCost,\n      prokatavoli: data.easyPay.noCreditSettings.prokatavoli,\n      final_cost: data.easyPay.noCreditSettings.finalCost\n    });\n\n    setTimeout(() => {\n      easyPayFormEl.style.display = 'none';\n      document.querySelector('.easy-pay-form-overlay').style.display = 'none';\n    }, 6000);\n  });\n  myDropzone.on('errormultiple', function (file, res) {\n    // console.log('error multiple', res);\n\n    document.querySelector('.total-progress .upload-loading').style.display = 'none';\n    enableFileUploaderSubmitBtn();\n\n    if (typeof res === 'string') {\n      //client error\n      displayEasyPayMsg(\n        'error',\n        dropzoneErrorDict[res] ||\n          `Το αρχείο είναι πολύ μεγάλο. Μέγιστο όριο ${EASY_PAY_MAX_FILE_SIZE} MB`\n      );\n\n      if (res.includes('upload files of this type')) {\n        // console.log('includes!');\n        myDropzone.removeFile(file);\n      }\n\n      return;\n    }\n\n    //server error\n    console.log(res.status, res.name);\n    if (res.status === 'error' || res.hasOwnProperty('name')) {\n      myDropzone.removeAllFiles();\n      displayEasyPayMsg(\n        'error',\n        dropzoneErrorDict[res.msg || res.message] || res.msg || res.message\n      );\n      return;\n    }\n  });\n\n  myDropzone.on('queuecomplete', function (progress) {\n    document.querySelector('.total-progress').style.opacity = '0';\n  });\n\n  document.querySelector('#easyPayFileUploaderSubmit').addEventListener('click', () => {\n    const validationResult = validateFileUploadForm();\n    if (!validationResult.valid) return displayEasyPayMsg('error', validationResult.msg);\n\n    myDropzone.enqueueFiles(myDropzone.getFilesWithStatus(Dropzone.ADDED));\n  });\n  document.querySelector('.file-upload-reset-btn').addEventListener('click', () => {\n    myDropzone.removeAllFiles();\n  });\n}\n\nfunction fixFilePreviewTemplate(file) {\n  if (file.type === 'application/pdf') {\n    const previewImgEl = file.previewElement.querySelector('.dz-image-img');\n    previewImgEl.src =\n      'https://uploads-ssl.webflow.com/60362f40a83dcf0034eb880b/631c6e9292aded48a225dba8_500px-Adobe_PDF_Icon.svg_.png';\n    previewImgEl.alt = 'Αρχείο PDF';\n    previewImgEl.width = 80;\n    previewImgEl.height = 80;\n  }\n\n  filename = file.previewElement.querySelector('.dz-filename span').textContent;\n  file.previewElement.querySelector('.dz-filename span').textContent =\n    filename.length > maxFilenameLength\n      ? `${filename.substring(0, maxFilenameLength)}...`\n      : filename;\n\n  filesizeEl = file.previewElement.querySelector('.dz-size');\n  filesize = filesizeEl.textContent;\n}\n\nfunction downloadFileFromEasyPay(base64, fileName) {\n  const link = document.createElement('a');\n  link.href = 'data:image/png;base64,' + base64;\n  link.download = fileName + '.png';\n  document.body.append(link);\n  link.click();\n  link.remove();\n}\n\nfunction displayEasyPayMsg(type, msg, time = 2000) {\n  document\n    .querySelector('#fileUploadContainer')\n    .classList.add(type === 'error' ? 'container-error' : 'container-success');\n  msgEl = document.querySelector('#easyPayForm .utils-msg');\n  msgEl.className = 'utils-msg'; //reseting\n  msgEl.classList.add(`${type}-msg`);\n  msgEl.textContent = msg;\n  msgEl.style.opacity = '1';\n  setTimeout(() => {\n    msgEl.style.opacity = '0';\n    document\n      .querySelector('#fileUploadContainer')\n      .classList.remove(type === 'error' ? 'container-error' : 'container-success');\n  }, time);\n}\n\nfunction getEasyPayFileUploadCategory() {\n  try {\n    const currentTab = [...document.querySelectorAll('#fileUploadTabs a')].filter(el =>\n      el.className.includes('w--current')\n    )[0];\n    return +currentTab.getAttribute('data-w-tab').split(' ')[1] - 1;\n  } catch (e) {\n    return 0;\n  }\n}\n\nfunction validateFileUploadForm() {\n  // if (triggeredFrom === 'basket' && isFacebookBrowser()) {\n  //   return {\n  //     valid: false,\n  //     msg: 'Για να κατεβάσετε την προσφορά θα πρέπει να ανοίξετε την ιστοσελίδα σε Chrome, Mozilla ή Safari, διότι ο ενσωματομένως περιηγητής του Facebook δεν επιτρέπει τη λήψη αρχείων.'\n  //   };\n  // }\n  submitBtn = document.querySelector('#easyPayFileUploaderSubmit');\n  if (submitBtn.getAttribute('disabled') === 'true') {\n    return {\n      valid: false,\n      msg: 'Παρακαλώ περιμένετε'\n    };\n  }\n\n  if (!hasResult())\n    return {\n      valid: false,\n      msg: 'Θα πρέπει πρώτα να επιλέξετε το όχημα σας από το Βήμα 1!'\n    };\n  if (!document.querySelector('.user-info-username').value)\n    return { valid: false, msg: 'Απαιτείται ονοματεπώνυμο' };\n\n  const userEmail = document.querySelector('.user-info-email').value;\n  if (userEmail && !isEmail(userEmail)) return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n\n  if (!isEmail(userEmail)) return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n\n  const userPhone = document.querySelector('.user-info-phone').value;\n  if (userPhone && (isNaN(userPhone) || userPhone.length !== 10))\n    return { valid: false, msg: 'Απαιτείται έγκυρος αριθμός τηλεφώνου (10ψηφία)' };\n  if (!userPhone) return { valid: false, msg: 'Απαιτείται έγκυρος αριθμός τηλεφώνου (10ψηφία)' };\n  // if (!hasUserInfo()) return { valid: false, msg: 'Συμπληρώστε πρώτα τα προσωπικά σας στοιχεία' };\n\n  if (!myDropzone.files.length) {\n    return { valid: false, msg: 'Παρακαλώ προσθέστε τα απαιτούμενα δικαιολογητικά' };\n  }\n\n  return { valid: true };\n}\n\nsumbitFileUploaderBtn = document.querySelector('#easyPayFileUploaderSubmit');\ndisableDropzoneEl = document.querySelector('#disableDropzoneDiv');\nfunction disableFileUploaderSubmitBtn() {\n  sumbitFileUploaderBtn.setAttribute('disabled', 'true');\n  sumbitFileUploaderBtn.style.cursor = 'wait';\n  sumbitFileUploaderBtn.style.opacity = '0.5';\n  disableDropzoneEl.style.display = 'block';\n}\nfunction enableFileUploaderSubmitBtn() {\n  sumbitFileUploaderBtn.setAttribute('disabled', 'false');\n  sumbitFileUploaderBtn.style.cursor = 'pointer';\n  sumbitFileUploaderBtn.style.opacity = '1';\n  disableDropzoneEl.style.display = 'none';\n}\n\nfunction triggerEasyPayFileUpload(options) {\n  trigger_system_summary('download');\n  // trigger_system_summary('email');\n  triggerGtagEvent('easy_pay_file_upload', options);\n}\n\nnotConvFormSubmitBtn.addEventListener('click', e => {\n  e.preventDefault();\n  const validationResult = validateNotConvForm();\n  if (!validationResult.valid) return handleInvalidDownload(validationResult.msg);\n\n  vehicleValues = userSelections.vehicle.identification.vehicleValues;\n  const dataToSend = {\n    vehicle: {\n      make: vehicleValues.make,\n      year: vehicleValues.year,\n      model: vehicleValues.model,\n      description: vehicleValues.description,\n      selectedFuel: userSelections.selectedFuel\n    },\n    userInfo: {\n      username: userInfo.username,\n      email: userInfo.email,\n      phone: userInfo.phone,\n      place: userSelections.location.place,\n      sourceReferrerDomain\n    }\n  };\n\n  notConvFormSubmitBtn.disabled = true;\n  notConvFormSubmitBtn.value = 'Γίνεται αποστολή...';\n  notConvFormSubmitBtn.style.cursor = 'wait';\n\n  fetch(urlNotConvForm, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ data: dataToSend })\n  })\n    .then(res => res.json())\n    .then(data => {\n      notConvFormSubmitBtn.disabled = false;\n      notConvFormSubmitBtn.value = 'Ενημερώστε με!';\n      notConvFormSubmitBtn.style.cursor = 'pointer';\n\n      if (data.status && data.status !== 200) {\n        handleInvalidDownload(data?.messages[0] || 'Κάτι πήγε στραβά');\n      } else {\n        showSuccessNotConvForm();\n        trigger_not_convertible_form_submit();\n      }\n    })\n    .catch(e => {\n      console.error('Error on Not Conv Form Fetch:', e);\n      notConvFormSubmitBtn.disabled = false;\n      notConvFormSubmitBtn.value = 'Ενημερώστε με!';\n      notConvFormSubmitBtn.style.cursor = 'pointer';\n    });\n});\n\nfunction validateNotConvForm() {\n  if (!document.querySelector('.user-info-username').value)\n    return { valid: false, msg: 'Απαιτείται ονοματεπώνυμο' };\n\n  const userEmail = document.querySelector('.user-info-email').value;\n  if (userEmail && !isEmail(userEmail)) return { valid: false, msg: 'Απαιτείται έγκυρο email' };\n\n  const userPhone = document.querySelector('.user-info-phone').value;\n  if (!userPhone) return { valid: false, msg: 'Απαιτείται αριθμός τηλεφώνου' };\n  if (userPhone && (isNaN(userPhone) || userPhone.length !== 10))\n    return { valid: false, msg: 'Απαιτείται έγκυρος αριθμός τηλεφώνου (10ψηφία)' };\n\n  return { valid: true };\n}\n\nfunction showNotConvertibleFormContainer() {\n  document.querySelector('#notConvertibleMakeImg').src =\n    makeImgPrefix + makeImgDict[makeSelect.value];\n  document.querySelector('#notConvertibleModelName').textContent =\n    `${modelSelect.value} (${yearSelect.value})`;\n  document.querySelector('.not-convertible-form-container').style.display = 'flex';\n}\n\nfunction showSuccessNotConvForm() {\n  document.querySelector('.not-conv-raw-form').style.display = 'none';\n  document.querySelector('.not-conv-success-container').style.display = 'flex';\n}\n\nfunction resetNotConvForm() {\n  document.querySelector('.not-conv-raw-form').style.display = 'block';\n  document.querySelector('.not-conv-success-container').style.display = 'none';\n}\n\nfunction trigger_not_convertible_form_submit() {\n  triggerGtagEvent('not_convertible_form_submit', {\n    selected_fuel: userSelections.selectedFuel,\n    vehicle_make: userSelections.vehicle.identification.vehicleValues.make,\n    vehicle_year: userSelections.vehicle.identification.vehicleValues.year,\n    vehicle_model: userSelections.vehicle.identification.vehicleValues.model,\n    vehicle_description: userSelections.vehicle.identification.vehicleValues.description,\n    user_location: userSelections.location.place\n  });\n}\n\n/* VIDEO JS */\n\n// videojs.addLanguage('el', {\n//   Play: 'Aναπαραγωγή',\n//   Pause: 'Παύση',\n//   'Current Time': 'Τρέχων χρόνος',\n//   Duration: 'Συνολικός χρόνος',\n//   'Remaining Time': 'Υπολοιπόμενος χρόνος',\n//   'Play Video': 'Αναπαραγωγή',\n//   Fullscreen: 'Πλήρης οθόνη',\n//   'Exit Fullscreen': 'Έξοδος από πλήρη οθόνη',\n//   Mute: 'Σίγαση',\n//   Unmute: 'Kατάργηση σίγασης',\n//   'Playback Rate': 'Ρυθμός αναπαραγωγής',\n//   Subtitles: 'Υπότιτλοι',\n//   'subtitles off': 'απόκρυψη υπότιτλων',\n//   Captions: 'Λεζάντες',\n//   'captions off': 'απόκρυψη λεζάντων',\n//   'Close Modal Dialog': 'Κλείσιμο παραθύρου',\n//   'You aborted the media playback': 'Ακυρώσατε την αναπαραγωγή',\n//   'A network error caused the media download to fail part-way.':\n//     'Ένα σφάλμα δικτύου προκάλεσε την αποτυχία μεταφόρτωσης του αρχείου προς αναπαραγωγή.',\n//   'The media could not be loaded, either because the server or network failed or because the format is not supported.':\n//     'Το αρχείο προς αναπαραγωγή δεν ήταν δυνατό να φορτωθεί είτε γιατί υπήρξε σφάλμα στον διακομιστή ή το δίκτυο, είτε γιατί ο τύπος του αρχείου δεν υποστηρίζεται.',\n//   'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.':\n//     'Η αναπαραγωγή ακυρώθηκε είτε λόγω κατεστραμμένου αρχείου, είτε γιατί το αρχείο απαιτεί λειτουργίες που δεν υποστηρίζονται από το πρόγραμμα περιήγησης που χρησιμοποιείτε.',\n//   'No compatible source was found for this media.':\n//     'Δεν βρέθηκε συμβατή πηγή αναπαραγωγής για το συγκεκριμένο αρχείο.',\n//   'The media is encrypted and we do not have the keys to decrypt it.':\n//     'Το αρχείο προς αναπαραγωγή είναι κρυπτογραφημένo και δεν υπάρχουν τα απαραίτητα κλειδιά αποκρυπτογράφησης.',\n//   Close: 'Κλείσιμο',\n//   'Modal Window': 'Aναδυόμενο παράθυρο',\n//   'This is a modal window': 'Το παρών είναι ένα αναδυόμενο παράθυρο',\n//   'This modal can be closed by pressing the Escape key or activating the close button.':\n//     'Αυτό το παράθυρο μπορεί να εξαφανιστεί πατώντας το πλήκτρο Escape ή πατώντας το κουμπί κλεισίματος.',\n//   ', opens captions settings dialog': ', εμφανίζει τις ρυθμίσεις για τις λεζάντες',\n//   ', opens subtitles settings dialog': ', εμφανίζει τις ρυθμίσεις για τους υπότιτλους',\n//   ', opens descriptions settings dialog': ', εμφανίζει τις ρυθμίσεις για τις περιγραφές',\n//   ', selected': ', επιλεγμένο',\n//   'Picture-in-Picture': 'Προβολή σε παράθυρο'\n// });\n\n// let bigPlayBtn, heroVideo, heroVideoContainer;\n\n// let videoStarted = false;\n\n// const player = videojs('heroVideo', {\n//   language: 'el',\n//   controls: false,\n//   loop: false,\n//   playsinline: true,\n//   fluid: true,\n//   muted: true,\n//   autoplay: true,\n//   controlBar: {\n//     fullscreenToggle: !isMobile()\n//   },\n//   userActions: {\n//     doubleClick: !isMobile()\n//   }\n// });\n\n// let interval = null;\n\n// player.on('ready', function () {\n//   bigPlayBtn = document.querySelector('.vjs-big-play-button');\n//   heroVideo = document.querySelector('#heroVideo');\n//   heroVideoContainer = document.querySelector('#heroVideoContainer');\n\n//   heroVideoContainer.addEventListener('click', clickVideoFn);\n//   heroVideoContainer.addEventListener('touchstart', clickVideoFn);\n\n//   bigPlayBtn.style.display = 'block';\n//   heroVideo.style.cursor = 'pointer';\n\n//   interval = setInterval(() => {\n//     player.currentTime(0);\n//   }, 8000);\n// });\n\n// player.on('fullscreenchange', function () {\n//   if (isMobile()) {\n//     if (player.isFullscreen()) {\n//       player.exitFullscreen();\n//     }\n//   }\n// });\n\n// function clickVideoFn(e) {\n//   bigPlayBtn.style.display = 'none';\n//   heroVideo.style.cursor = 'default';\n//   if (interval) {\n//     clearInterval(interval);\n//     interval = null;\n//     player.controls(true);\n//     player.muted(false);\n//     player.currentTime(0);\n\n//     if (!i0) {\n//       // console.log('send 0%');\n//       trigger_video_watch_time({ video_id: 'heroVideo', watch_time: 0 });\n//       i0 = true;\n//     }\n//     setTimeout(() => {\n//       player.play();\n//     }, 50);\n//   }\n// }\n\n// player.reloadSourceOnError({\n//   getSource: function (reload) {\n//     reload({\n//       src: 'https://drive.google.com/uc?id=12Gj4M3K3QpSZdp-agOoKOwL8C60Czry0&authuser=0&export=download',\n//       type: 'video/mp4'\n//     });\n//     // reload({\n//     //   src: 'https://drive.google.com/uc?id=1quxLrbad-IpcanZA7fEZC2izRdsCbjiD&authuser=0&export=download',\n//     //   type: 'video/mp4'\n//     // });\n//   },\n// t  errorInterval: 1\n// });\n\n// let i0 = false,\n//   i25 = false,\n//   i50 = false,\n//   i75 = false,\n//   i100 = false;\n// const video = document.querySelector('#heroVideo video');\n// video.addEventListener('timeupdate', event => {\n//   const currentTime = video.currentTime;\n//   const duration = video.duration;\n\n//   if (currentTime > 0.25 * duration) {\n//     if (!i25) {\n//       // console.log('send 25%');\n//       trigger_video_watch_time({ video_id: 'heroVideo', watch_time: 25 });\n//       i25 = true;\n//     }\n//   }\n//   if (currentTime > 0.5 * duration) {\n//     if (!i50) {\n//       // console.log('send 50%');\n//       trigger_video_watch_time({ video_id: 'heroVideo', watch_time: 50 });\n//       i50 = true;\n//     }\n//   }\n//   if (currentTime > 0.75 * duration) {\n//     if (!i75) {\n//       // console.log('send 75%');\n//       trigger_video_watch_time({ video_id: 'heroVideo', watch_time: 75 });\n//       i75 = true;\n//     }\n//   }\n//   if (currentTime > 0.9 * duration) {\n//     if (!i100) {\n//       // console.log('send 100%');\n//       trigger_video_watch_time({ video_id: 'heroVideo', watch_time: 100 });\n//       i100 = true;\n//     }\n//   }\n// });\n\n// function trigger_video_watch_time(options) {\n//   triggerGtagEvent('video_watch_time', options);\n// }\n/* VIDEO JS */\n"]}