window.onload=LW_Calculate;

qr = new Array(3); // [quality][resolution]

for(i = 0; i < qr.length; i++) {
    qr[i] = new Array(3);
}

qr[0][0] = 4; //320x240 low quality 
qr[0][1] = 12; //640x480 low quality
qr[0][2] = 36; //1280x960 low quality

qr[1][0] = 10; //320x240 middle quality
qr[1][1] = 30; //640x480 middle quality
qr[1][2] = 90; //1280x960 middle quality

qr[2][0] = 25; //320x240 high quality
qr[2][1] = 80; //640x480 high quality
qr[2][2] = 240; //1280x960 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;
}
