// Groesse in cm, Gewicht in kg
function calcBMI(groesse, gewicht) {
    var groesse_m = groesse / 100.0;
    var bmi = gewicht / (groesse_m * groesse_m);
    bmi = Math.round(bmi * 10) / 10;    
    return bmi;
}

// Im Erfassungsbogen
function viewBMI() {
    var groesse = document.getElementById("groesse").value;
    var gewicht = document.getElementById("gewicht").value;
    
    if (gewicht > 0 && groesse > 0) {
        var bmi = calcBMI(groesse, gewicht);
        var textnode = document.createTextNode(bmi);
        document.getElementById("bmi").replaceChild(textnode, document.getElementById("bmi").firstChild);
    } else {
        var textnode = document.createTextNode("(wird errechnet)");
        document.getElementById("bmi").replaceChild(textnode, document.getElementById("bmi").firstChild);    
    }
    
}

// Im BMI Rechner
function viewBMIFull() {
    var groesse = document.getElementById("groesse").value;
    var gewicht = document.getElementById("gewicht").value;
    var geschlecht = document.getElementById("geschlecht").value;
    
    if (gewicht > 0 && groesse > 0) {
        var bmi = calcBMI(groesse, gewicht);
        createTextNode("bmi", bmi);
        
        // Med Eins.
        var medeinstufung = "Untergewicht";
        if (bmi >= 18.5) medeinstufung = "Normalgewicht";
        if (bmi >= 25) medeinstufung = "Übergewicht";
        if (bmi >= 30) medeinstufung = "Adipositas Grad I";
        if (bmi >= 35) medeinstufung = "Adipositas Grad II";
        if (bmi >= 40) medeinstufung = "Adipositas Grad III";
        if (bmi >= 50) medeinstufung = "Super Adipositas";
        createTextNode("medeinstufung", medeinstufung);
        
    } else {
        createTextNode("bmi", "(wird errechnet)");
        createTextNode("medeinstufung", "(wird errechnet)");
    }

    if (gewicht > 0 && groesse > 0 && geschlecht > 0) {
        var normalgewicht = groesse - 100;
        var idealgewicht = normalgewicht * 0.9;
        
        if (geschlecht == 1) {
            // weiblich
            idealgewicht = normalgewicht * 0.85;
        }
        
        var ueber_idealgewicht = gewicht - idealgewicht;
        var ueber_normalgewicht = gewicht - normalgewicht;
        
        // Update display
        createTextNode("normalgewicht", round2D(normalgewicht));
        createTextNode("idealgewicht", round2D(idealgewicht));
        
        if (ueber_normalgewicht > 0) {
            createTextNode("ueber_normalgewicht", round2D(ueber_normalgewicht));
        } else {
            createTextNode("ueber_normalgewicht", "Gratulation! Kein Übergewicht");
        }
        
        if (ueber_idealgewicht > 0) {
            createTextNode("ueber_idealgewicht", round2D(ueber_idealgewicht));
        } else {
            createTextNode("ueber_idealgewicht", "Gratulation! Kein Übergewicht");        
        }     
    } else {
        createTextNode("normalgewicht", "(wird errechnet)");
        createTextNode("idealgewicht", "(wird errechnet)");
        createTextNode("ueber_normalgewicht", "(wird errechnet)");
        createTextNode("ueber_idealgewicht", "(wird errechnet)");
    }
}

function incrementGewicht() {
    updateField("gewicht", 0.5, 80);
    return false;
}

function decrementGewicht() {
    updateField("gewicht", -0.5, 80);
    return false;
}

function incrementGroesse(e) {
    updateField("groesse", 1, 170);
    return false;
}

function decrementGroesse() {
    updateField("groesse", -1, 170);
    return false;
}

function updateField(fieldid, amount, defaultval) {
    if (isNaN(parseFloat(document.getElementById(fieldid).value))) {
        document.getElementById(fieldid).value = defaultval;
    }

    document.getElementById(fieldid).value = parseFloat(document.getElementById(fieldid).value) + amount;
    viewBMIFull();
}

// Creates a text node with text and replace the first child of elementid
function createTextNode(elementid, text) {
    var textnode = document.createTextNode(text);
    document.getElementById(elementid).replaceChild(textnode, document.getElementById(elementid).firstChild);
}

function round2D(input) {
    return Math.round(input * 10) / 10;
}