window.onload=LW_Calculate;

qr = new Array(3); // [quality][resolution]

for(i = 0; i < qr.length; i++) {
    qr[i] = new Array(10);
}

qr[0][0] = 5;   // 320x240 low quality
qr[0][1] = 7;   // 352x288 low quality
qr[0][2] = 20;  // 640x480 low quality
qr[0][3] = 22;  // 704x480 low quality
qr[0][4] = 26;  // 704x570 low quality
qr[0][5] = 80;  // 1280x960 low quality
qr[0][6] = 85;  // 1280x1024 low quality
qr[0][7] = 125;  // 1600x1200 low quality
qr[0][8] = 205;  // 2048x1536 low quality
qr[0][9] = 330;  // 2592x1944 low quality

qr[1][0] = 10;  // 320x240 middle quality
qr[1][1] = 13;  // 352x288 middle quality
qr[1][2] = 40;  // 640x480 middle quality
qr[1][3] = 44;  // 704x480 middle quality
qr[1][4] = 52;  // 704x570 middle quality
qr[1][5] = 160;  // 1280x960 middle quality
qr[1][6] = 170;  // 1280x1024 middle quality
qr[1][7] = 250; // 1600x1200 middle quality
qr[1][8] = 410; // 2048x1536 middle quality
qr[1][9] = 655; // 2592x1944 middle quality

qr[2][0] = 20;  // 320x240 high quality
qr[2][1] = 26;  // 352x288 high quality
qr[2][2] = 80;  // 640x480 high quality
qr[2][3] = 88;  // 704x480 high quality
qr[2][4] = 105;  // 704x570 high quality
qr[2][5] = 320; // 1280x960 high quality
qr[2][6] = 340; // 1280x1024 high quality
qr[2][7] = 500; // 1600x1200 high quality
qr[2][8] = 820; // 2048x1536 high quality
qr[2][9] = 1310; // 2592x1944 high quality

ebw = new Array(3); // effective bandwidth

ebw[0] = 1E6;
ebw[1] = 1E5;
ebw[2] = 1024;
ebw[3] = 576;
ebw[4] = 192;

function LW_Calculate()
{
    var resolution_object;
    for(i = 0; i < webform.resolution_input.length; i++) {
        if(webform.resolution_input[i].selected)
            resolution_object = webform.resolution_input[i].value;
    }

    var quality_object;
    for(i = 0; i < webform.quality_input.length; i++) {
        if(webform.quality_input[i].selected)
            quality_object = webform.quality_input[i].value;
    }

    var eff_bandwidth_object;
    for(i = 0; i < webform.eff_bandwidth_input.length; i++) {
        if(webform.eff_bandwidth_input[i].selected) {
            eff_bandwidth_object = webform.eff_bandwidth_input[i].value;
            var bw_text = webform.eff_bandwidth_input.options[i].text;
        }
    }

    var camera_count  = parseInt(webform.camera_count_input.value);
    var fps           = parseInt(webform.fps_input.value);
    var resolution    = parseInt(resolution_object);
    var quality       = parseInt(quality_object);
    var eff_bandwidth = parseInt(eff_bandwidth_object);

    for(i = 0; i < webform.camera_count_input.value.length; i++) {
        if (webform.camera_count_input.value.charAt(i) < "0" ||
            webform.camera_count_input.value.charAt(i) > "9") {
                setFaultData();
                webform.camera_count_input.focus();
                return;
        }
    }

    if(webform.camera_count_input.value == "") {
        setFaultData();
        webform.camera_count_input.focus();
        return;
    }

    for(i = 0; i < webform.fps_input.value.length; i++) {
        if (webform.fps_input.value.charAt(i) < "0" ||
            webform.fps_input.value.charAt(i) > "9") {
                setFaultData();
                webform.fps_input.focus();
                return;
        }
    }

    if(webform.fps_input.value == "") {
        setFaultData();
        webform.fps_input.focus();
        return;
    }

    function setFaultData() {
                webform.bw_text.value   = "--";
                webform.ban.value       = "--";
                webform.siz.value       = "--";
                webform.efps.value      = "--";
                webform.eban.value      = "--";
                webform.nullnull.value  = "--";
                webform.nulleins.value  = "--";
                webform.nullzwei.value  = "--";
                webform.nulldrei.value  = "--";
                webform.nullvier.value  = "--";
                webform.nullfuenf.value = "--";
                webform.nullsechs.value = "--";
                webform.einsnull.value  = "--";
                webform.einseins.value  = "--";
                webform.einszwei.value  = "--";
                webform.einsdrei.value  = "--";
                webform.einsvier.value  = "--";
                webform.einsfuenf.value = "--";
                webform.einssechs.value = "--";
                webform.zweinull.value  = "--";
                webform.zweieins.value  = "--";
                webform.zweizwei.value  = "--";
                webform.zweidrei.value  = "--";
                webform.zweivier.value  = "--";
                webform.zweifuenf.value = "--";
                webform.zweisechs.value = "--";
                webform.dreinull.value  = "--";
                webform.dreieins.value  = "--";
                webform.dreizwei.value  = "--";
                webform.dreidrei.value  = "--";
                webform.dreivier.value  = "--";
                webform.dreifuenf.value = "--";
                webform.dreisechs.value = "--";
    }

    var bandwidth = qr[quality][resolution] * camera_count * fps * 8;
    var used_ban  = (bandwidth*100/ebw[eff_bandwidth]).toFixed(1);
    var eff_fps   = 0;

    if(used_ban > 100)
            used_ban = 100;

    image_size     = qr[quality][resolution];


    if(bandwidth <= ebw[eff_bandwidth]) {
        document.getElementById("eff_fps_text").style.display = "none";
    } else {
        eff_fps = (ebw[eff_bandwidth]/((image_size*8)*camera_count)).toFixed(2)+" FPS";
        document.getElementById("eff_fps_text").style.display = "inline";
    }

    var temp = qr[quality][resolution] * camera_count * fps;
    var sr   = 0.01; //Serverraum
    var eb   = 0.02; //Eingangsbereich
    var lg   = 0.05; //Lager
    var pp   = 0.1; //Parkplatz
    var ll   = 0.3; //Ladenlokal
    var ts   = 0.6; //Tankstelle

    var fill_table00 = (temp * 0.0036).toFixed(2);
    var fill_table01 = (temp * 0.0036 * ts).toFixed(2);
    var fill_table02 = (temp * 0.0036 * ll).toFixed(2);
    var fill_table03 = (temp * 0.0036 * pp).toFixed(2);
    var fill_table04 = (temp * 0.0036 * lg).toFixed(2);
    var fill_table05 = (temp * 0.0036 * eb).toFixed(2);
    var fill_table06 = (temp * 0.0036 * sr).toFixed(2);

    var fill_table10 = (temp * 0.0864).toFixed(2);
    var fill_table11 = (temp * 0.0864 * ts).toFixed(2);
    var fill_table12 = (temp * 0.0864 * ll).toFixed(2);
    var fill_table13 = (temp * 0.0864 * pp).toFixed(2);
    var fill_table14 = (temp * 0.0864 * lg).toFixed(2);
    var fill_table15 = (temp * 0.0864 * eb).toFixed(2);
    var fill_table16 = (temp * 0.0864 * sr).toFixed(2);

    var fill_table20 = (temp * 0.6048).toFixed(2);
    var fill_table21 = (temp * 0.6048 * ts).toFixed(2);
    var fill_table22 = (temp * 0.6048 * ll).toFixed(2);
    var fill_table23 = (temp * 0.6048 * pp).toFixed(2);
    var fill_table24 = (temp * 0.6048 * lg).toFixed(2);
    var fill_table25 = (temp * 0.6048 * eb).toFixed(2);
    var fill_table26 = (temp * 0.6048 * sr).toFixed(2);

    var fill_table30 = (temp * 2.4192).toFixed(2);
    var fill_table31 = (temp * 2.4192 * ts).toFixed(2);
    var fill_table32 = (temp * 2.4192 * ll).toFixed(2);
    var fill_table33 = (temp * 2.4192 * pp).toFixed(2);
    var fill_table34 = (temp * 2.4192 * lg).toFixed(2);
    var fill_table35 = (temp * 2.4192 * eb).toFixed(2);
    var fill_table36 = (temp * 2.4192 * sr).toFixed(2);

    webform.ban.value      = bandwidth+" Kbps".toString();
    webform.siz.value      = image_size+" KByte".toString();
    webform.efps.value     = eff_fps.toString();
    webform.eban.value     = used_ban+" %".toString();
    webform.nullnull.value = fill_table00.toString();
    webform.nulleins.value = fill_table01.toString();
    webform.nullzwei.value = fill_table02.toString();
    webform.nulldrei.value = fill_table03.toString();
    webform.nullvier.value = fill_table04.toString();
    webform.nullfuenf.value = fill_table05.toString();
    webform.nullsechs.value = fill_table06.toString();
    webform.einsnull.value = fill_table10.toString();
    webform.einseins.value = fill_table11.toString();
    webform.einszwei.value = fill_table12.toString();
    webform.einsdrei.value = fill_table13.toString();
    webform.einsvier.value = fill_table14.toString();
    webform.einsfuenf.value = fill_table15.toString();
    webform.einssechs.value = fill_table16.toString();
    webform.zweinull.value = fill_table20.toString();
    webform.zweieins.value = fill_table21.toString();
    webform.zweizwei.value = fill_table22.toString();
    webform.zweidrei.value = fill_table23.toString();
    webform.zweivier.value = fill_table24.toString();
    webform.zweifuenf.value = fill_table25.toString();
    webform.zweisechs.value = fill_table26.toString();
    webform.dreinull.value = fill_table30.toString();
    webform.dreieins.value = fill_table31.toString();
    webform.dreizwei.value = fill_table32.toString();
    webform.dreidrei.value = fill_table33.toString();
    webform.dreivier.value = fill_table34.toString();
    webform.dreifuenf.value = fill_table35.toString();
    webform.dreisechs.value = fill_table36.toString();
    webform.bw_text.value  = bw_text;
}