function round(value,precision) { var exp = Math.pow(10,precision); return Math.round(value*exp)/exp; } function initialize() { } var youngLimits = new Array(); function addLimit(years,sex,limit5,limit85,limit95) { if(youngLimits[years]==undefined) youngLimits[years] = Array(); youngLimits[years][sex] = Array(limit5,limit85,limit95); } //boys addLimit( 5,0,13.4,16.7,17.7); addLimit( 6,0,13.4,16.9,18.0); addLimit( 7,0,13.6,17.3,18.5); addLimit( 8,0,13.8,17.7,19.1); addLimit( 9,0,14.0,18.3,19.8); addLimit(10,0,14.3,18.9,20.7); addLimit(11,0,14.7,19.6,21.6); addLimit(12,0,15.1,20.5,22.6); addLimit(13,0,15.7,21.4,23.7); addLimit(14,0,16.3,22.4,24.7); addLimit(15,0,16.8,23.2,25.7); addLimit(16,0,17.3,24.0,26.5); addLimit(17,0,17.7,24.7,27.2); addLimit(18,0,18.1,25.3,27.8); addLimit(19,0,18.2,25.6,28.1); //girls addLimit( 5,1,13.1,17.0,18.2); addLimit( 6,1,13.1,17.2,18.6); addLimit( 7,1,13.2,17.6,19.1); addLimit( 8,1,13.4,18.1,19.8); addLimit( 9,1,13.7,18.8,20.7); addLimit(10,1,14.1,19.5,21.6); addLimit(11,1,14.6,20.4,22.7); addLimit(12,1,15.2,21.4,23.9); addLimit(13,1,15.8,22.4,25.0); addLimit(14,1,16.3,23.3,25.9); addLimit(15,1,16.7,24.0,26.7); addLimit(16,1,16.9,24.5,27.2); addLimit(17,1,17.1,24.8,27.5); addLimit(18,1,17.2,25.0,27.7); addLimit(19,1,17.2,25.1,27.8); function recalculate(field) { var form = field.form; if(field.type=="text") { if(field.value.indexOf(',')>0) field.value = field.value.replace(',','.'); var numberRegExp = new RegExp("^[0-9\.,]*$"); if(!numberRegExp.test(field.value)) field.value = field.value.replace(/[^0-9\.,]*/ig,''); //check for double decimal separator var firstSep = field.value.indexOf("."); var secondSep = firstSep>0?field.value.indexOf(".",firstSep+1):-1; if(firstSep>0 && secondSep>firstSep) { field.value = field.value.substring(0,secondSep); } if(field.value[field.value.length-1]=='.') return; } var resultDiv = document.getElementById("bmiResult"); var resultWeightDiv = document.getElementById("bmiResultWeight"); var bmiAge = parseInt(form.bmiAge.value); if(form.bmiAge.value>=5 && form.bmiAge.value<=18) { document.getElementById("bmiChooseSexSelect").style.removeProperty("display"); document.getElementById("bmiChooseSexLabel").style.removeProperty("display"); }else { document.getElementById("bmiChooseSexSelect").style.display = "none"; document.getElementById("bmiChooseSexLabel").style.display = "none"; } if(!form.bmiAge.value || !form.bmiWeight.value || !form.bmiHeight.value) { resultDiv.innerHTML = ""; resultWeightDiv.innerHTML = ""; return; } var bmiWeight = parseFloat(form.bmiWeight.value); var bmiHeight = parseFloat(form.bmiHeight.value)/100; var bmiSex = form.bmiSex.value; var bmi = bmiWeight/(bmiHeight*bmiHeight); var bmiResult = 0;//-1 niedowaga, 0 - ok, 1 nadwaga, 2 - otyłość var weightMin; var weightMax; if(bmiWeight<10 || bmiWeight>900 || bmiHeight<0.5 || bmiHeight>3 || bmi<4 || bmi>99) { resultDiv.innerHTML = ""; resultWeightDiv.innerHTML = ""; return; } if(bmiAge>=5 && bmiAge<20) { weightMin = calculateWeightForBMI(youngLimits[bmiAge][bmiSex][0],bmiHeight); weightMax = calculateWeightForBMI(youngLimits[bmiAge][bmiSex][1],bmiHeight); if(bmi < youngLimits[bmiAge][bmiSex][0]) bmiResult = -1; else if(bmi > youngLimits[bmiAge][bmiSex][2]) bmiResult = 2; else if(bmi > youngLimits[bmiAge][bmiSex][1]) bmiResult = 1; }else if(bmiAge<121) { weightMin = calculateWeightForBMI(18.5,bmiHeight); weightMax = calculateWeightForBMI(25,bmiHeight); if(bmi<18.5) bmiResult = -1; else if(bmi>30) bmiResult = 2; else if(bmi>25) bmiResult = 1; } if(bmiAge<5) { resultDiv.innerHTML = "Wyznaczone BMI to: "+round(bmi,1)+".

Skala BMI nie nadaje się jednak do obliczeń dla tak małych dzieci, nie sugeruj się więc tą wartością przy określaniu, czy waga jest prawidłowa!"; resultWeightDiv.innerHTML = ""; }else if(bmiAge<121) { resultDiv.innerHTML = "Wyliczone BMI to: "+round(bmi,1)+"

"; switch(bmiResult) { case -1: resultDiv.innerHTML += "Niedowaga"; break; case 0: resultDiv.innerHTML += "Waga prawidłowa"; break; case 1: resultDiv.innerHTML += "Nadwaga"; break; case 2: resultDiv.innerHTML += "Otyłość"; break; } resultWeightDiv.innerHTML = "Prawidłowa waga dla
wzrostu "+round(bmiHeight*100,0)+"cm:

od "+round(weightMin,0)+"kg do "+round(weightMax,0)+"kg"; }else { resultDiv.innerHTML = "Limit wieku tego kalkulatora to 120 lat."; resultWeightDiv.innerHTML = ""; } } function calculateWeightForBMI(bmi,height) { return round(bmi*height*height,1); } function selectInput(field) { addClass(field,"input_selected"); for(var i = 0; i < document.forms.length; i++) for(var j = 0; j < document.forms[i].elements.length; j++) { var currentElement = document.forms[i].elements[j]; if(currentElement == field) continue; removeClass(currentElement,"input_selected"); } } function addClass(item, classname) { var obj = item if (typeof item=="string") { obj = document.getElementById(item) } obj.className += " " + classname } function removeClass(item, classname) { var obj = item if (typeof item=="string") { obj = document.getElementById(item) } var classes = ""+obj.className while (classes.indexOf(classname)>-1) { classes = classes.replace (classname, "") } obj.className = classes } Number.prototype.toMoney = function(decimals, decimalSeparator, thousandsSeparator) { var n = this; c = isNaN(decimals) ? 2 : Math.abs(decimals); d = decimalSeparator || '.'; t = (typeof thousandsSeparator === 'undefined') ? ' ' : thousandsSeparator; sign = (n < 0) ? '-' : '', i = parseInt(n = Math.abs(n).toFixed(c)) + '', j = ((j = i.length) > 3) ? j % 3 : 0; return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ''); } String.prototype.startsWith = function (str) { return this.indexOf(str) == 0; };