function replaceSubString(originalString, searchForString, replaceWithString) {
    var objRegExp = eval("/" + searchForString + "/g");
    return (originalString.replace(objRegExp, replaceWithString));
}

function isNumber(item, min, max) {

    item.value = replaceSubString(item.value, ",", ".");
    item.value = replaceSubString(item.value, " ", "");

    if (item.value.length == 0) {
        alert("Calcul interrompu : vous devez renseigner ce champ !");
        item.focus();
        return false;
    }

    if (!isNaN(item.value)) {
        if (min != null) if (parseFloat(item.value) < min) item.value = min;
        if (max != null) if (parseFloat(item.value) > max) item.value = max;
        return true;
    }

    alert("Calcul interrompu :\n\n\"" + item.value + "\" n'est pas un nombre valide !");
    item.focus();
    return false;
}

function round(number, decimal) {
    var factor = Math.pow(10, decimal);
    return Math.round(number * factor) / factor;
}

brzyckiArray = [0.0, 1.0, 1.029, 1.059, 1.091, 1.125, 1.161, 1.200, 1.242, 1.286, 1.334, 1.385, 1.441, 1.501, 1.566, 1.637, 1.715, 1.801, 1.896, 2.002, 2.120];
landerArray = [0.0, 1.0, 1.042, 1.072, 1.104, 1.137, 1.173, 1.211, 1.251, 1.294, 1.341, 1.391, 1.444, 1.502, 1.565, 1.633, 1.708, 1.789, 1.879, 1.978, 2.089];
mayhewArray = [0.0, 1.0, 1.114, 1.140, 1.165, 1.190, 1.215, 1.239, 1.263, 1.286, 1.309, 1.332, 1.354, 1.376, 1.397, 1.417, 1.437, 1.457, 1.476, 1.494, 1.512];
wathenArray = [0.0, 1.0, 1.051, 1.090, 1.128, 1.166, 1.203, 1.240, 1.277, 1.312, 1.347, 1.382, 1.415, 1.447, 1.479, 1.509, 1.538, 1.567, 1.594, 1.620, 1.645];
kemmlerArray = [0.0, 1.0, 1.016, 1.035, 1.056, 1.080, 1.106, 1.134, 1.163, 1.193, 1.224, 1.255, 1.285, 1.316, 1.346, 1.374, 1.402, 1.427, 1.450, 1.471, 1.489];
squatArray = [0.0, 1.0, 1.0475, 1.13, 1.1575, 1.2, 1.242, 1.284, 1.326, 1.368, 1.41, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000];
deadliftArray = [0.0, 1.0, 1.065, 1.13, 1.147, 1.164, 1.181, 1.198, 1.22, 1.232, 1.24, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000];
benchPressArray = [0.0, 1.0, 1.035, 1.08, 1.115, 1.15, 1.18, 1.22, 1.255, 1.29, 1.325, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000];

function compute1(f) {
    var repetitions = 0.0;
    var weights = 0.0;
    var wantedRepetitions = 0.0;
    var maxi = 0.0;
    var computedWeights = 0.0;

    if (!isNumber(f.Repetitions, 1, 20)) return false;
    if (!isNumber(f.Weights, 1)) return false;
    if (!isNumber(f.WantedRepetitions, 1, 20)) return false;

    repetitions = parseFloat(f.Repetitions.value);
    weights = parseFloat(f.Weights.value);
    wantedRepetitions = parseFloat(f.WantedRepetitions.value);

    if (wantedRepetitions > 10 || repetitions > 10) {
        f.Squat.value = "n/a";
        f.Deadlift.value = "n/a";
        f.BenchPress.value = "n/a";
    } else {
        maxi = weights * squatArray[repetitions]; computedWeights = maxi / squatArray[wantedRepetitions]; f.Squat.value = round(computedWeights, 1);
        maxi = weights * deadliftArray[repetitions]; computedWeights = maxi / deadliftArray[wantedRepetitions]; f.Deadlift.value = round(computedWeights, 1);
        maxi = weights * benchPressArray[repetitions]; computedWeights = maxi / benchPressArray[wantedRepetitions]; f.BenchPress.value = round(computedWeights, 1);
    }
    maxi = weights * brzyckiArray[repetitions]; computedWeights = maxi / brzyckiArray[wantedRepetitions]; f.Brzycki.value = round(computedWeights, 1);
    maxi = weights * landerArray[repetitions]; computedWeights = maxi / landerArray[wantedRepetitions]; f.Lander.value = round(computedWeights, 1);
    maxi = weights * mayhewArray[repetitions]; computedWeights = maxi / mayhewArray[wantedRepetitions]; f.Mayhew.value = round(computedWeights, 1);
    maxi = weights * wathenArray[repetitions]; computedWeights = maxi / wathenArray[wantedRepetitions]; f.Wathen.value = round(computedWeights, 1);
    maxi = weights * kemmlerArray[repetitions]; computedWeights = maxi / kemmlerArray[wantedRepetitions]; f.Kemmler.value = round(computedWeights, 1);
}

function compute2(f) {
    var repetitions = 0.0;
    var weights = 0.0;
    var maxi = 0.0;
    var maxi = 0.0;
    var wantedWeights = 0.0;
    var computedRepetitions = 0.0;
    var i = 0;
    var ok = 0;

    if (!isNumber(f.Repetitions, 1, 20)) return false;
    if (!isNumber(f.Weights, 1)) return false;
    if (!isNumber(f.WantedWeights, 1)) return false;

    repetitions = parseFloat(f.Repetitions.value);
    weights = parseFloat(f.Weights.value);
    wantedWeights = parseFloat(f.WantedWeights.value);

    ok = 0;
    for (i = 20; i >= 1; i--) {
        maxi = (weights * brzyckiArray[repetitions]) / brzyckiArray[i];
        if (maxi >= wantedWeights) {
            if (i == 20) f.Brzycki.value = "Au moins 20 !";
            else f.Brzycki.value = i;
            ok = 1;
            break;
        }
    }
    if (ok == 0) f.Brzycki.value = "Aucune !"; 

    ok = 0;
    for (i = 20; i >= 1; i--) {
        maxi = (weights * landerArray[repetitions]) / landerArray[i];
        if (maxi >= wantedWeights) {
            if (i == 20) f.Lander.value = "Au moins 20 !";
            else f.Lander.value = i;
            ok = 1;
            break;
        }
    }
    if (ok == 0) f.Lander.value = "Aucune !"; 

    ok = 0;
    for (i = 20; i >= 1; i--) {
        maxi = (weights * mayhewArray[repetitions]) / mayhewArray[i];
        if (maxi >= wantedWeights) {
            if (i == 20) f.Mayhew.value = "Au moins 20 !";
            else f.Mayhew.value = i;
            ok = 1;
            break;
        }
    }
    if (ok == 0) f.Mayhew.value = "Aucune !";

    ok = 0;
    for (i = 20; i >= 1; i--) {
        maxi = (weights * wathenArray[repetitions]) / wathenArray[i];
        if (maxi >= wantedWeights) {
            if (i == 20) f.Wathen.value = "Au moins 20 !";
            else f.Wathen.value = i;
            ok = 1;
            break;
        }
    }
    if (ok == 0) f.Wathen.value = "Aucune !";

    ok = 0;
    for (i = 20; i >= 1; i--) {
        maxi = (weights * kemmlerArray[repetitions]) / kemmlerArray[i];
        if (maxi >= wantedWeights) {
            if (i == 20) f.Kemmler.value = "Au moins 20 !";
            else f.Kemmler.value = i;
            ok = 1;
            break;
        }
    }
    if (ok == 0) f.Kemmler.value = "Aucune !";

    ok = 0;
    for (i = 10; i >= 1; i--) {
        maxi = (weights * squatArray[repetitions]) / squatArray[i];
        if (maxi >= wantedWeights) {
            if (i == 10) f.Squat.value = "Au moins 10 !";
            else f.Squat.value = i;
            ok = 1;
            break;
        }
    }
    if (repetitions > 10) f.Squat.value = "n/a";
    else if (ok == 0) f.Squat.value = "Aucune !";  

    ok = 0;
    for (i = 10; i >= 1; i--) {
        maxi = (weights * deadliftArray[repetitions]) / deadliftArray[i];
        if (maxi >= wantedWeights) {
            if (i == 10) f.Deadlift.value = "Au moins 10 !";
            else f.Deadlift.value = i;
            ok = 1;
            break;
        }
    }
    if (repetitions > 10) f.Deadlift.value = "n/a";
    else if (ok == 0) f.Deadlift.value = "Aucune !";  

    ok = 0;
    for (i = 10; i >= 1; i--) {
        maxi = (weights * benchPressArray[repetitions]) / benchPressArray[i];
        if (maxi >= wantedWeights) {
            if (i == 10) f.BenchPress.value = "Au moins 10 !";
            else f.BenchPress.value = i;
            ok = 1;
            break;
        }
    }
    if (repetitions > 10) f.BenchPress.value = "n/a";
    else if (ok == 0) f.BenchPress.value = "Aucune !";
}
