function hasClass(obj) {
    var result = false;
    if (obj.getAttributeNode("class") !== null) result = obj.getAttributeNode("class").value;
    return result;
}

function stripe() {

    var evenColor = arguments[1] ? arguments[1] : "#EDE0EC";
    var oddColor = arguments[2] ? arguments[2] : "#FFF";
    var tables = document.getElementsByTagName("table");

    if (!tables) return;

    for (var k = 0; k < tables.length; k++) {
        var table = tables[k];
        var even = false;
        var tbodies = table.getElementsByTagName("tbody");
        for (var h = 0; h < tbodies.length; h++) {
            var trs = tbodies[h].getElementsByTagName("tr");
            for (var i = 0; i < trs.length && trs.length >= 4; i++) {
                if (!hasClass(trs[i]) && !trs[i].style.backgroundColor) {
                    var tds = trs[i].getElementsByTagName("td");
                    for (var j = 0; j < tds.length; j++) {
                        var mytd = tds[j];
                        if (!hasClass(mytd) && !mytd.style.backgroundColor) mytd.style.backgroundColor = even ? evenColor : oddColor;
                    }
                    var tds = trs[i].getElementsByTagName("th");
                    for (var j = 0; j < tds.length; j++) {
                        var mytd = tds[j];
                        if (!hasClass(mytd) && !mytd.style.backgroundColor) mytd.style.backgroundColor = even ? evenColor : oddColor;
                    }
                }
                even = !even;
            }
        }
    }

}

function arrondir(x) {
    return Math.round(x);
}

function Float2Text(x) {
    x = arrondir(x) + '';
    Expression = new RegExp("[.]", "gi")
    x = x.replace(Expression, ',');
    return x;
}

function Text2Float(x) {
    x = x + '';
    Expression = new RegExp("[,]", "gi")
    x = x.replace(Expression, '.');
    if (x == '') x = 0;
    return arrondir(x);
}

function majAliment() {
    var frm = document.forms[0];
    var value = frm.Aliment.options[frm.Aliment.selectedIndex].value;
    if (value == '') {
        frm.AlimentTxt.value = '';
        frm.CaloriesTxt.value = '';
        frm.ProteinesTxt.value = '';
        frm.GlucidesTxt.value = '';
        frm.LipidesTxt.value = '';
    } else {
        var tabValue = value.split(/[~]/);
        frm.AlimentTxt.value = tabValue[0];
        frm.CaloriesTxt.value = Float2Text(Text2Float(tabValue[1]) * 0.2388459);
        frm.ProteinesTxt.value = Float2Text(Text2Float(tabValue[2]));
        frm.GlucidesTxt.value = Float2Text(Text2Float(tabValue[3]));
        frm.LipidesTxt.value = Float2Text(Text2Float(tabValue[4]));
    }
}

function effaceAliment(i, param) {
    var frm = document.forms[0];
    var lignesValues = frm[param].value.split(/[§]/);
    lignesValues[i] = '';
    frm[param].value = lignesValues.join('§');
    totalFinalProteines = 0;
    totalFinalLipides = 0;
    totalFinalGlucides = 0;
    totalFinalCalories = 0;
    majTable("PDejeuner");
    majTable("CollationM");
    majTable("Dejeuner");
    majTable("CollationAM");
    majTable("Diner");
    majTableTotal();
}

function majTable(param) {

    var totalGlucides = 0;
    var totalProteines = 0;
    var totalLipides = 0;
    var totalCalories = 0;

    var frm = document.forms[0];
    var div = document.getElementById("Table" + param);
    var innerHTMl = '<table style="width: 430px;"><TBODY>';
    innerHTMl += '<tr><th>Aliment</th><th style="width:56px;">Calories</th><th style="width:56px;">Protéines</th><th style="width:56px;">Glucides</th><th style="width:56px;">Lipides</th><td style="width:26px; background-color:#F8EFF7;"></td></tr>';
    var lignesValues = frm[param].value.split(/[§]/);
    for (var i = 0; i < lignesValues.length; i++) {
        if (lignesValues[i] != "") {
            if (i % 2 != 0) innerHTMl += '<tr>';
            else innerHTMl += '<tr class="p">';
            var uneLigneValues = lignesValues[i].split(/[~]/);
            var alimentTxt = uneLigneValues[0];
            innerHTMl += '<td>' + alimentTxt + '</td>';
            var caloriesTxt = uneLigneValues[1];
            totalCalories += parseFloat(caloriesTxt);
            innerHTMl += '<td>' + Float2Text(caloriesTxt) + '</td>';
            var proteinesTxt = uneLigneValues[2];
            totalProteines += parseFloat(proteinesTxt);
            innerHTMl += '<td>' + Float2Text(proteinesTxt) + '</td>';
            var glucidesTxt = uneLigneValues[3];
            totalGlucides += parseFloat(glucidesTxt);
            innerHTMl += '<td>' + Float2Text(glucidesTxt) + '</td>';
            var lipidesTxt = uneLigneValues[4];
            totalLipides += parseFloat(lipidesTxt);
            innerHTMl += '<td>' + Float2Text(lipidesTxt) + '</td>';
            innerHTMl += '<td style="background-color:#F8EFF7;">' + '<a title="Retirer <' + alimentTxt + '> de la liste" href="#" onclick="effaceAliment(' + i + ', \'' + param + '\')"><img style="margin:0;padding:0;border:none;padding-left: 4px;" src="/images/supermince/poubelle.gif" style="border:none;" /></a>' + '</td>';
            innerHTMl += '</tr>';
        }
    }

    totalFinalProteines += totalProteines;
    totalFinalGlucides += totalGlucides;
    totalFinalLipides += totalLipides;
    totalFinalCalories += totalCalories;

    innerHTMl += '<tr><th>Total g</th><td>n/a</td><td>' + Float2Text(totalProteines) + '</td><td>' + Float2Text(totalGlucides) + '</td><td>' + Float2Text(totalLipides) + '</td><td style="background-color:#F8EFF7;">&#160;</td></tr>';

    innerHTMl += '<tr><th>Total Cal</th><td>' + Float2Text(totalCalories) + '</td><td>' + Float2Text(totalProteines * 4) + '</td><td>' + Float2Text(totalGlucides * 4) + '</td><td>' + Float2Text(totalLipides * 9) + '</td><td style="background-color:#F8EFF7;">&#160;</td></tr>';

    innerHTMl += '</TBODY></table>';

    div.innerHTML = innerHTMl;
}

function majTableTotal() {
    var frm = document.forms[0];
    var div = document.getElementById("TableTotal");
    var innerHTMl = '<table style="width: 430px;"><TBODY>';

    innerHTMl += '<tr><th>Total g</th><td style="width:56px;">n/a</td><td style="width:56px;">' + Float2Text(totalFinalProteines) + '</td><td style="width:56px;">' + Float2Text(totalFinalGlucides) + '</td><td style="width:56px;">' + Float2Text(totalFinalLipides) + '</td><td style="background-color:#F8EFF7; width:26px;">&#160;</td></tr>';

    innerHTMl += '<tr><th>Total Cal</th><td>' + Float2Text(totalFinalCalories) + '</td><td>' + Float2Text(totalFinalProteines * 4) + '</td><td>' + Float2Text(totalFinalGlucides * 4) + '</td><td>' + Float2Text(totalFinalLipides * 9) + '</td><td style="background-color:#F8EFF7;">&#160;</td></tr>';

    if (totalFinalCalories == 0) innerHTMl += '<tr><th>Total Cal%</th><td>' + Float2Text(100) + '</td><td>' + Float2Text(0) + '</td><td>' + Float2Text(0) + '</td><td>' + Float2Text(0) + '</td><td style="background-color:#F8EFF7;">&#160;</td></tr>';
    else innerHTMl += '<tr><th>Total Cal%</th><td>' + Float2Text(100) + '%</td><td>' + Float2Text(totalFinalProteines * 4 / totalFinalCalories * 100) + '%</td><td>' + Float2Text(totalFinalGlucides * 4 / totalFinalCalories * 100) + '%</td><td>' + Float2Text(totalFinalLipides * 9 / totalFinalCalories * 100) + '%</td><td style="background-color:#F8EFF7;">&#160;</td></tr>';

    innerHTMl += '</TBODY></table>';
    div.innerHTML = innerHTMl;
}

function ajouteAliment() {
    var frm = document.forms[0];

    if (frm.Aliment.selectedIndex == 0) {
        alert("Merci de sélectionner un aliment !");
        return false;
    }

    if (frm.Repas.selectedIndex == 0) {
        alert("Merci de sélectionner un repas !");
        return false;
    }

    var alimentTxt = frm.AlimentTxt.value;
    var caloriesTxt = Text2Float(frm.CaloriesTxt.value);
    var proteinesTxt = Text2Float(frm.ProteinesTxt.value);
    var glucidesTxt = Text2Float(frm.GlucidesTxt.value);
    var lipidesTxt = Text2Float(frm.LipidesTxt.value);
    var repas = frm.Repas.options[frm.Repas.selectedIndex].value;

    if (isNaN(caloriesTxt)) {
        alert(frm.CaloriesTxt.value + " n'est pas un nombre valide !");
        return false;
    }

    if (isNaN(proteinesTxt)) {
        alert(frm.ProteinesTxt.value + " n'est pas un nombre valide !");
        return false;
    }

    if (isNaN(glucidesTxt)) {
        alert(frm.GlucidesTxt.value + " n'est pas un nombre valide !");
        return false;
    }

    if (isNaN(lipidesTxt)) {
        alert(frm.LipidesTxt.value + " n'est pas un nombre valide !");
        return false;
    }

    var grammes = prompt("Combien de gramme(s) avez-vous mangé de cet aliment ?", "100");
    if (grammes == null) return false;
    grammes = Text2Float(grammes)
    caloriesTxt = grammes * caloriesTxt / 100;
    proteinesTxt = grammes * proteinesTxt / 100;
    glucidesTxt = grammes * glucidesTxt / 100;
    lipidesTxt = grammes * lipidesTxt / 100;

    frm[repas].value = frm[repas].value + "§" + grammes + " g " + alimentTxt.toLowerCase() + "~" + caloriesTxt + "~" + proteinesTxt + "~" + glucidesTxt + "~" + lipidesTxt;

    totalFinalProteines = 0;
    totalFinalLipides = 0;
    totalFinalGlucides = 0;
    totalFinalCalories = 0;
    majTable("PDejeuner");
    majTable("CollationM");
    majTable("Dejeuner");
    majTable("CollationAM");
    majTable("Diner");
    majTableTotal();
}

function resetAliment() {
    var frm = document.forms[0];
    frm.PDejeuner.value = '';
    frm.CollationM.value = '';
    frm.Dejeuner.value = '';
    frm.CollationAM.value = '';
    frm.Diner.value = '';
    frm.Aliment.selectedIndex = 0;
    frm.Repas.selectedIndex = 0;
    frm.AlimentTxt.value = '';
    frm.CaloriesTxt.value = '';
    frm.ProteinesTxt.value = '';
    frm.GlucidesTxt.value = '';
    frm.LipidesTxt.value = '';
    totalFinalProteines = 0;
    totalFinalLipides = 0;
    totalFinalGlucides = 0;
    totalFinalCalories = 0;
    majTable("PDejeuner");
    majTable("CollationM");
    majTable("Dejeuner");
    majTable("CollationAM");
    majTable("Diner");
    majTableTotal();
}