{"id":556,"date":"2026-09-01T12:00:00","date_gmt":"2026-09-01T12:00:00","guid":{"rendered":"https:\/\/ikkunakauppias.fi\/?page_id=102"},"modified":"2026-09-01T12:00:00","modified_gmt":"2026-09-01T12:00:00","slug":"energiansaastolaskuri","status":"publish","type":"page","link":"https:\/\/ikkunakauppias.fi\/index.php\/energiansaastolaskuri\/","title":{"rendered":"Energians\u00e4\u00e4st\u00f6laskuri \u2013 Ikkunat ja ovet"},"content":{"rendered":"<div class=\"laskuri-embed\">\n\n<div class=\"wrap\">\n\n  <header class=\"hero\">\n    <div class=\"hero-inner\">\n      <h1>Paljonko vanhat ikkunasi maksavat sinulle joka talvi?<\/h1>\n      <p>Vanhat, vetoisat ikkunat ja ovet p\u00e4\u00e4st\u00e4v\u00e4t l\u00e4mm\u00f6n ulos ja kylm\u00e4n sis\u00e4\u00e4n. Laske alla, kuinka paljon s\u00e4\u00e4st\u00e4isit vuodessa uusilla, energiatehokkailla ikkunoilla ja ovilla.<\/p>\n    <\/div>\n  <\/header>\n\n  <div class=\"calc\">\n    <div class=\"calc-grid\">\n\n      <div class=\"inputs-panel\">\n\n        <div class=\"field\">\n          <label class=\"field-label\" for=\"windowCount\">Kuinka monta ikkunaa tai ovea vaihdat?<\/label>\n          <div class=\"slider-row\">\n            <input type=\"range\" id=\"windowCount\" min=\"1\" max=\"30\" value=\"8\">\n            <span class=\"slider-value\" id=\"windowCountValue\">8<\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"field\">\n          <span class=\"field-label\" id=\"ageLabel\">Mink\u00e4 ik\u00e4isi\u00e4 nykyiset ikkunasi ovat?<\/span>\n          <div class=\"segmented\" role=\"radiogroup\" aria-labelledby=\"ageLabel\">\n            <input type=\"radio\" name=\"age\" id=\"age-young\" value=\"young\">\n            <label for=\"age-young\">Alle 10 vuotta<\/label>\n\n            <input type=\"radio\" name=\"age\" id=\"age-mid\" value=\"mid\" checked>\n            <label for=\"age-mid\">10\u201330 vuotta<\/label>\n\n            <input type=\"radio\" name=\"age\" id=\"age-old\" value=\"old\">\n            <label for=\"age-old\">Yli 30 vuotta<\/label>\n          <\/div>\n        <\/div>\n\n        <div class=\"field\">\n          <span class=\"field-label\" id=\"heatLabel\">Mik\u00e4 on kotisi l\u00e4mmitysmuoto?<\/span>\n          <div class=\"segmented\" role=\"radiogroup\" aria-labelledby=\"heatLabel\">\n            <input type=\"radio\" name=\"heat\" id=\"heat-sahko\" value=\"sahko\" checked>\n            <label for=\"heat-sahko\">S\u00e4hk\u00f6<\/label>\n\n            <input type=\"radio\" name=\"heat\" id=\"heat-oljy\" value=\"oljy\">\n            <label for=\"heat-oljy\">\u00d6ljy<\/label>\n\n            <input type=\"radio\" name=\"heat\" id=\"heat-kauko\" value=\"kauko\">\n            <label for=\"heat-kauko\">Kaukol\u00e4mp\u00f6<\/label>\n\n            <input type=\"radio\" name=\"heat\" id=\"heat-maalampo\" value=\"maalampo\">\n            <label for=\"heat-maalampo\">Maal\u00e4mp\u00f6<\/label>\n          <\/div>\n          <p class=\"field-hint\">Laskuri k\u00e4ytt\u00e4\u00e4 koko Suomen keskim\u00e4\u00e4r\u00e4isi\u00e4 l\u00e4mmitystarvelukuja. Tarkka arvio lasketaan ilmaisen kotik\u00e4ynnin yhteydess\u00e4.<\/p>\n        <\/div>\n\n      <\/div>\n\n      <aside class=\"result-panel\">\n        <span class=\"result-label\">Arvioitu s\u00e4\u00e4st\u00f6<\/span>\n        <div class=\"num-display\"><span id=\"savingsAmount\">0<\/span><span> \u20ac\/vuosi<\/span><\/div>\n        <p class=\"result-sub\" id=\"savingsSub\">N\u00e4in paljon voit s\u00e4\u00e4st\u00e4\u00e4 l\u00e4mmityskuluissa vaihtamalla vanhat ikkunat uusiin.<\/p>\n\n        <div class=\"grade-block\">\n          <div class=\"grade-caption\">\n            <span>Ikkunoiden energialuokka<\/span>\n          <\/div>\n          <div class=\"grade-bar\">\n            <span style=\"background:#3E8A5C\"><\/span>\n            <span style=\"background:#6FA968\"><\/span>\n            <span style=\"background:#A8B95B\"><\/span>\n            <span style=\"background:#D9C24A\"><\/span>\n            <span style=\"background:#DE9B45\"><\/span>\n            <span style=\"background:#D2703F\"><\/span>\n            <span style=\"background:#B84A3A\"><\/span>\n          <\/div>\n          <div class=\"grade-markers\" id=\"gradeMarkers\">\n            <span>A<\/span><span>B<\/span><span>C<\/span><span>D<\/span><span>E<\/span><span>F<\/span><span>G<\/span>\n          <\/div>\n        <\/div>\n\n        <p class=\"disclaimer\">Arvio perustuu ikkunoiden tyypilliseen l\u00e4mm\u00f6nl\u00e4p\u00e4isykykyyn, Suomen keskim\u00e4\u00e4r\u00e4isiin l\u00e4mmitystarvelukuihin sek\u00e4 energian keskihintoihin. Todellinen s\u00e4\u00e4st\u00f6 vaihtelee talon ja s\u00e4\u00e4n mukaan.<\/p>\n      <\/aside>\n\n    <\/div>\n\n    <div class=\"cta-band\" id=\"ctaBand\">\n      <p>Haluatko tarkan, veloituksettoman laskelman ja tarjouksen kotiisi?<\/p>\n      <button type=\"button\" class=\"primary\" id=\"showFormBtn\">Pyyd\u00e4 ilmainen tarjous<\/button>\n    <\/div>\n\n    <div class=\"lead-form\" id=\"leadForm\">\n      <div class=\"lead-form-inner\">\n        <h3>Saat tarkan laskelman ja tarjouksen<\/h3>\n        <p class=\"lead-intro\">J\u00e4t\u00e4 yhteystietosi, niin asiantuntijamme laskee tarkan s\u00e4\u00e4st\u00f6arvion tietojesi pohjalta ja sopii kanssasi ilmaisen mittausk\u00e4ynnin.<\/p>\n\n        <form id=\"contactForm\">\n          <div class=\"form-grid\">\n            <div class=\"form-field\">\n              <label for=\"name\">Nimi<\/label>\n              <input type=\"text\" id=\"name\" required autocomplete=\"name\">\n            <\/div>\n            <div class=\"form-field\">\n              <label for=\"phone\">Puhelinnumero<\/label>\n              <input type=\"tel\" id=\"phone\" required autocomplete=\"tel\">\n            <\/div>\n            <div class=\"form-field\">\n              <label for=\"email\">S\u00e4hk\u00f6posti<\/label>\n              <input type=\"email\" id=\"email\" required autocomplete=\"email\">\n            <\/div>\n            <div class=\"form-field\">\n              <label for=\"city\">Paikkakunta<\/label>\n              <input type=\"text\" id=\"city\" autocomplete=\"address-level2\">\n            <\/div>\n          <\/div>\n\n          <div class=\"form-submit-row\">\n            <button type=\"submit\" class=\"primary\">L\u00e4het\u00e4 ja saa ilmainen tarjous<\/button>\n            <span class=\"form-note\">Emme jaa tietojasi kolmansille osapuolille.<\/span>\n          <\/div>\n        <\/form>\n      <\/div>\n    <\/div>\n\n    <div class=\"thanks\" id=\"thanksBlock\">\n      <span class=\"thanks-badge\">\u2713<\/span>\n      <h3 id=\"thanksHeading\">Kiitos!<\/h3>\n      <p>Olemme sinuun yhteydess\u00e4 yhden arkip\u00e4iv\u00e4n kuluessa ja sovimme ilmaisen mittausk\u00e4ynnin kotiisi.<\/p>\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n<section class=\"benefits-section\">\n  <div class=\"wrap\">\n    <h2>Miksi ikkunaremontti kannattaa?<\/h2>\n    <p class=\"benefits-intro\">Muista, ett\u00e4 uudet ikkunat nostavat kiinteist\u00f6n arvoa huomattavasti &mdash; kyse ei ole pelk\u00e4st\u00e4 ulkon\u00e4\u00f6st\u00e4, vaan j\u00e4rkev\u00e4st\u00e4 sijoituksesta kotiin.<\/p>\n    <div class=\"benefits-grid\">\n      <div class=\"benefit-card\">\n        <h3>Energiatehokkuus<\/h3>\n        <p>Uudet ikkunat pienent\u00e4v\u00e4t l\u00e4mmityskuluja, mik\u00e4 kiinnostaa my\u00f6s mahdollisia ostajia.<\/p>\n      <\/div>\n      <div class=\"benefit-card\">\n        <h3>Asumismukavuus<\/h3>\n        <p>Parempi \u00e4\u00e4nieristys ja vedottomuus parantavat arjen laatua kodissa ymp\u00e4ri vuoden.<\/p>\n      <\/div>\n      <div class=\"benefit-card\">\n        <h3>Ulkon\u00e4k\u00f6<\/h3>\n        <p>Siistit, uudet ikkunat antavat hyv\u00e4n ensivaikutelman talosta &mdash; sek\u00e4 asukkaalle ett\u00e4 vierailijalle.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n  const windowCount = document.getElementById('windowCount');\n  const windowCountValue = document.getElementById('windowCountValue');\n  const savingsAmount = document.getElementById('savingsAmount');\n  const savingsSub = document.getElementById('savingsSub');\n  const gradeMarkers = document.getElementById('gradeMarkers');\n\n  const ageDeltaU = { young: 0.3, mid: 1.0, old: 1.8 };\n  \/\/ effective price per kWh delivered heat, accounting for system efficiency \/ COP\n  const heatingParams = {\n    sahko:    0.150,\n    oljy:     0.141,\n    kauko:    0.084,\n    maalampo: 0.043\n  };\n\n  const DEGREE_DAYS = 4500;       \/\/ Suomen keskim\u00e4\u00e4r\u00e4inen l\u00e4mmitystarveluku\n  const AVG_WINDOW_AREA = 1.5;    \/\/ m\u00b2 per ikkuna\/ovi (keskiarvo)\n\n  function getSelected(name){\n    return document.querySelector('input[name=\"' + name + '\"]:checked').value;\n  }\n\n  function gradeForDeltaU(deltaU){\n    \/\/ maps delta-U roughly onto an A\u2013G scale (7 segments)\n    if (deltaU <= 0.3) return 0; \/\/ A\n    if (deltaU <= 0.6) return 1; \/\/ B\n    if (deltaU <= 1.0) return 2; \/\/ C\n    if (deltaU <= 1.3) return 3; \/\/ D\n    if (deltaU <= 1.6) return 4; \/\/ E\n    if (deltaU <= 1.9) return 5; \/\/ F\n    return 6; \/\/ G\n  }\n\n  function calculate(){\n    const count = parseInt(windowCount.value, 10);\n    windowCountValue.textContent = count;\n\n    const age = getSelected('age');\n    const heat = getSelected('heat');\n\n    const deltaU = ageDeltaU[age];\n    const price = heatingParams[heat];\n\n    const area = count * AVG_WINDOW_AREA;\n    const degreeHours = DEGREE_DAYS * 24;\n    const kwhSaved = (deltaU * area * degreeHours) \/ 1000;\n    const eurosSaved = Math.round(kwhSaved * price \/ 5) * 5; \/\/ py\u00f6rist\u00e4 l\u00e4himp\u00e4\u00e4n 5 euroon\n\n    savingsAmount.textContent = eurosSaved.toLocaleString('fi-FI');\n    savingsSub.textContent = count + ' ikkunan\/oven vaihto voi s\u00e4\u00e4st\u00e4\u00e4 noin ' +\n      Math.round(kwhSaved).toLocaleString('fi-FI') + ' kWh l\u00e4mmitysenergiaa vuodessa.';\n\n    const currentGrade = gradeForDeltaU(deltaU);\n    const targetGrade = 0; \/\/ uudet ikkunat ~ A\n\n    Array.from(gradeMarkers.children).forEach((el, i) => {\n      el.classList.remove('is-current', 'is-target');\n      if (i === currentGrade) el.classList.add('is-current');\n      if (i === targetGrade && targetGrade !== currentGrade) el.classList.add('is-target');\n    });\n  }\n\n  windowCount.addEventListener('input', calculate);\n  document.querySelectorAll('input[name=\"age\"], input[name=\"heat\"]').forEach(el => {\n    el.addEventListener('change', calculate);\n  });\n\n  calculate();\n\n  \/\/ ---- Lead form reveal + submit ----\n  const showFormBtn = document.getElementById('showFormBtn');\n  const leadForm = document.getElementById('leadForm');\n  const ctaBand = document.getElementById('ctaBand');\n  const contactForm = document.getElementById('contactForm');\n  const thanksBlock = document.getElementById('thanksBlock');\n  const thanksHeading = document.getElementById('thanksHeading');\n\n  showFormBtn.addEventListener('click', () => {\n    leadForm.classList.add('is-open');\n    ctaBand.style.display = 'none';\n    document.getElementById('name').focus();\n  });\n\n  contactForm.addEventListener('submit', (e) => {\n    e.preventDefault();\n\n    \/\/ TODO: korvaa t\u00e4m\u00e4 oikealla l\u00e4hetyksell\u00e4 (esim. fetch-kutsu CRM:\u00e4\u00e4n,\n    \/\/ s\u00e4hk\u00f6postipalveluun tai lomaketaustaj\u00e4rjestelm\u00e4\u00e4n).\n    const name = document.getElementById('name').value.trim();\n\n    leadForm.classList.remove('is-open');\n    thanksHeading.textContent = name ? ('Kiitos, ' + name + '!') : 'Kiitos!';\n    thanksBlock.classList.add('is-visible');\n    thanksBlock.scrollIntoView({ behavior: 'smooth', block: 'center' });\n  });\n<\/script>\n\n\n<\/div>","protected":false},"excerpt":{"rendered":"Paljonko vanhat ikkunasi maksavat sinulle joka talvi? Vanhat, vetoisat ikkunat ja ovet p\u00e4\u00e4st\u00e4v\u00e4t l\u00e4mm\u00f6n ulos ja kylm\u00e4n sis\u00e4\u00e4n. Laske alla, kuinka paljon s\u00e4\u00e4st\u00e4isit vuodessa uusilla, energiatehokkailla ikkunoilla ja ovilla. Kuinka monta ikkunaa tai ovea vaihdat? 8 Mink\u00e4 ik\u00e4isi\u00e4 nykyiset ikkunasi ovat? Alle 10 vuotta 10\u201330 vuotta Yli 30 vuotta Mik\u00e4 on kotisi l\u00e4mmitysmuoto? S\u00e4hk\u00f6 \u00d6ljy [&hellip;]","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-556","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/pages\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":0,"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/pages\/556\/revisions"}],"wp:attachment":[{"href":"https:\/\/ikkunakauppias.fi\/index.php\/wp-json\/wp\/v2\/media?parent=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}