function limit (a,b,c) { // a and c must not be NaN // if b is NaN, NaN is returned if (!(c >= a)) { alert ("internal ERROR in cap (a,b,c): a = " + a + " ; b = " + b + " ; c = " + c) ; return 0 ; } if (b < a) return a ; if (b > c) return c ; return b ; } function f_biv () { // Read input parameters from form var Year = limit (2012, parseInt (document.getElementById("biv_form").Year.value), 2020) ; var CO2 = limit (0, parseInt (document.getElementById("biv_form").CO2.value), 500) ; var Factor = limit (0, parseFloat (document.getElementById("biv_form").Factor.value), 2.0) ; var Euro = limit (0, parseInt (document.getElementById("biv_form").Euro.value), 6) ; var Filter = document.getElementById("biv_form").Filter.checked ; var Diesel = document.getElementById("biv_form").Diesel.checked ; if (Filter && Diesel) { if (Euro == 4) { Euro = 5 } if (Euro == 3) { Euro = 4 } } var c = 0 ; if (Diesel) { switch (Euro) { case (0): c = 8521.27; break ; case (1): c = 2500.00; break ; case (2): c = 1813.47 ; break ; case (3): c = 731.42 ; break ; case (4): c = 190.89 ; break ; case (5): c = 93.72 ; break ; case (6): c = 49.01 break ; } } else { switch (Euro) { case (0): c = 3389.22; break ; case (1): c = 1515.70; break ; case (2): c = 453.24; break ; case (3): c = 284.31; break ; case (4): c = 68.26; break ; case (5): c = 61.35; break ; case (6): c = 61.35; break ; } } var x ; switch (Year) { case 2012: x = 0 ; break ; case 2013: x = 4.5 ; break ; case 2014: x = 9.0 ; break ; case 2015: x = 13.5 ; break ; default: x = 0 ; } var base ; base = ((CO2*Factor) + x) / 250.0 var power2, power6 ; power2 = base * base ; power6 = power2 * power2 * power2; var result ; result = ((power6 * 6000.0) + c) ; document.getElementById("biv_form").BIV.value = result.toFixed(2) ; }