function querystring_calc() {
    var q = window.location.search.substr(1);
        
    if (q.length > 1) {
        var spl = q.split("&");
        
        for (var x = 0; x < spl.length; x++) {
            var spl2 = spl[x].split("=");

            if (spl2.length == 2) {

                if (spl2[0].length > 0 && spl2[1].length > 0) {
                    
                    if (spl2[0].toLowerCase() == "length") {
                        document.getElementById('length').value = spl2[1];
                    } else {
                        document.getElementById(spl2[0].toLowerCase()).selectedIndex = document.getElementById(spl2[1].toLowerCase()).index;
                    }
                }
            }
        }
    }
}

function linkToPage() {
    var pathName;
    if (window.location.pathname.substr(0,5) == "data") {
        pathName = "/footage_calc_mobile.xml";
    } else {
        pathName = window.location.pathname;
    }
    
    var page_url= "http://www.digitalrebellion.com" + pathName;
    page_url += "?format=" + document.getElementById('format').options[document.getElementById('format').selectedIndex].id;
    page_url += "&frame_rate=" + document.getElementById('frame_rate').options[document.getElementById('frame_rate').selectedIndex].id;
    page_url += "&length=" + document.getElementById('length').value;
    page_url += "&length_type=" + document.getElementById('length_type').options[document.getElementById('length_type').selectedIndex].id;
    
    window.location.href = page_url;
}

function calculateSize(codec, frame_rate, length, length_mult) {
    var oneframe;
    var lockrate = 0; // Calculate at one frame rate only, regardless of user setting
    
    switch (codec) {
        case 'dv_ntsc_f':
                    oneframe = ((25/8) / 30) * 1024 * 1024; // Bytes
                    lockrate = 30;
                    break;
        case 'ntsc_uncompressed_8_720x486':
                    //oneframe = 703547;
                    oneframe = (720*486*8*3) / 8;
                    break;
        case 'ntsc_uncompressed_10_720x486':
//                    oneframe = 933947;
                    oneframe = (720*486*10*3) / 8;
                    break;
        case 'dv50_ntsc_f':
                    oneframe = ((50/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'pal_720x576':
                    oneframe = ((25/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'pal_dv50_720x576':
                    oneframe = ((50/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'pal_uncompressed_8_720x576':
                    //oneframe = 841787;
                    oneframe = (720*576*8*3) / 8;
                    break;
        case 'pal_uncompressed_10_720x576':
//                    oneframe = 1118267;
                    oneframe = (720*576*10*3) / 8;
                    break;
        case 'hdv_1080_r':
//                   oneframe = 324827;
                    oneframe = ((25/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'hdv_720':
                    //oneframe = 270673;
                    oneframe = ((25/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'dvcprohd_1080_r':
                    oneframe = ((100/8) / 30) * 1024 * 1024;
                    lockrate = 30;
//                    oneframe = 590045;
                    break;
        case 'dvcprohd_24n_720_r':
//                    oneframe = 270673;
                    oneframe = ((40/8) / 24) * 1024 * 1024;
                    break;
        case 'dvcprohd_720_r':
//                    oneframe = 270673;
                    oneframe = ((100/8) / 30) * 1024 * 1024;
                    lockrate = 30;
                    break;
        case 'dnxhd_1080_220_8bit':
                    oneframe = 918397;
                    break;
        case 'dnxhd_1080_145_8bit':
                    oneframe = 607101;
                    break;
        case 'dnxhd_1080_36_8bit':
                    oneframe = 189309;
                    break;
        case 'dnxhd_720_220_8bit':
                    oneframe = 459645;
                    break;
        case 'dnxhd_720_145_8bit':
                    oneframe = 303997;
                    break;
        case 'avid_dv25_ntsc_411':
                    oneframe = 120949;
                    break;
        case 'avid_dv50_ntsc':
                    oneframe = 240949;
                    break;
        case 'avid_dv25_pal_411':
                    oneframe = 144949;
                    break;
        case 'avid_dv50_pal':
                    oneframe = 288949;
                    break;
        case 'prores_422_ntsc':
                    oneframe = 178257.92;
                    break;
        case 'prores_422_hq_ntsc':
                    oneframe = 272629.76;
                    break;
        case 'prores_422_pal':
                    oneframe = 214958.08;
                    break;
        case 'prores_422_hq_pal':
                    oneframe = 319815.68;
                    break;
        case 'prores_422_720':
                    oneframe = 319815.68;
                    break;
        case 'prores_422_hq_720':
                    oneframe = 482344.96;
                    break;
        case 'prores_422_1080':
                    oneframe = 642895.6957;
                    break;
        case 'prores_422_hq_1080':
                    oneframe = 962156.82349;
                    break;
        case 'prores_422_2048':
                    oneframe = 734003.2;
                    break;
        case 'prores_422_hq_2048':
                    oneframe = 1101004.8;
                    break;
        case 'prores_422_lt_ntsc':
                    oneframe = 125829.12;
                    break;
        case 'prores_422_lt_pal':
                    oneframe = 146800.64;
                    break;
        case 'prores_422_lt_720':
                    oneframe = 220200.96;
                    break;
        case 'prores_422_lt_1080':
                    oneframe = 446090.89089;
                    break;
        case 'prores_422_lt_2048':
                    oneframe = 508559.36;
                    break;
        case 'prores_422_proxy_ntsc':
                    oneframe = 52428.8;
                    break;
        case 'prores_422_proxy_pal':
                    oneframe = 62914.56;
                    break;
        case 'prores_422_proxy_720':
                    oneframe = 99614.72;
                    break;
        case 'prores_422_proxy_1080':
                    oneframe = 196804.8048;
                    break;
        case 'prores_422_proxy_2048':
                    oneframe = 225443.84;
                    break;
        case 'prores_4444_ntsc':
                    oneframe = 414187.52;
                    break;
        case 'prores_4444_pal':
                    oneframe = 482344.96;
                    break;
        case 'prores_4444_720':
                    oneframe = 723517.44;
                    break;
        case 'prores_4444_1080':
                    oneframe = 1443235.2352;
                    break;
        case 'prores_4444_2048':
                    oneframe = 1651507.2;
                    break;
        case 'redcode_28_4096':
                    oneframe = (28 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'redcode_28_3072':
                    oneframe = (14 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'redcode_28_2048':
                    oneframe = (7 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'redcode_36_4096':
                    oneframe = (36 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'redcode_36_3072':
                    oneframe = (18 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'redcode_36_2048':
                    oneframe = (9 / 24) * 1024 * 1024;
                    //lockrate = 24;
                    break;
        case 'avid_11_ntsc_f':
                    oneframe = 721845;
                    break;
        case 'avid_11_pal':
                    oneframe = 861109;
                    break;
        case 'avid_11_720':
                    oneframe = 1844149;
                    break;
        case 'avid_11_1080':
                    oneframe = 4154293;
                    break;        
        case 'avid_21_ntsc_f':
                    oneframe = 158205;
                    break;
        case 'avid_21_pal':
                    oneframe = 466021;
                    break;
        case 'avid_31_ntsc_f':
                    oneframe = 151461;
                    break;
        case 'avid_31_pal':
                    oneframe = 160389;
                    break;
        case 'avid_41_ntsc_f':
                    oneframe = 132957;
                    break;
        case 'avid_41_pal':
                    oneframe = 144733;
                    break;
        case 'avid_101_ntsc_f':
                    oneframe = 95773;
                    break;
        case 'avid_101_pal':
                    oneframe = 102793;
                    break;
        case 'avid_141_ntsc_f':
                    oneframe = 83537;
                    break;
        case 'avid_141_pal':
                    oneframe = 92669;
                    break;
        case 'avid_151_ntsc_f':
                    oneframe = 63941;
                    break;
        case 'avid_151_pal':
                    oneframe = 69941;
                    break;
        case 'avid_201_ntsc_f':
                    oneframe = 86577;
                    break;
        case 'avid_201_pal':
                    oneframe = 92585;
                    break;
        case 'avid_281_ntsc_f':
                    oneframe = 58645;
                    break;
        case 'avid_281_pal':
                    oneframe = 65085;
                    break;
        case 'avid_351_ntsc_f':
                    oneframe = 50169;
                    break;
        case 'avid_351_pal':
                    oneframe = 55869;
                    break;
        case 'animation_ntsc':
                    oneframe = 1265972;
                    break;
        case 'animation_pal':
                    oneframe = 1521874;
                    break;
        case 'animation_720':
                    oneframe = 3270213;
                    break;
        case 'animation_1080':
                    oneframe = 6911556;
                    break;
        case 'h264_ntsc':
                    oneframe = 133748;
                    break;
        case 'h264_pal':
                    oneframe = 152084;
                    break;
        case 'h264_720':
                    oneframe = 258226;
                    break;
        case 'h264_1080':
                    oneframe = 431470;
                    break;
        case 'photojpeg_ntsc':
                    oneframe = 309134;
                    break;
        case 'photojpeg_pal':
                    oneframe = 354104;
                    break;
        case 'photojpeg_720':
                    oneframe = 654662;
                    break;
        case 'photojpeg_1080':
                    oneframe = 1143944;
                    break;
        case 'uncompressed_8_720':
//                    oneframe = 1844453;
                    oneframe = (1280*720*8*3) / 8;
                    break;
        case 'uncompressed_10_720':
//                    oneframe = 2489573;
                    oneframe = (1280*720*10*3) / 8;
                    break;
        case 'uncompressed_8_1080':
//                    oneframe = 4148453;
                    oneframe = (1920*1080*8*3) / 8;
                    break;
        case 'uncompressed_10_1080':
//                    oneframe = 5530853;
                    oneframe = (1920*1080*10*3) / 8;
                    break;
        case 'tiff_uncompressed_rgb8_720':
//                    oneframe = 5530170;
                    oneframe = (1280*720*8*3) / 8;
                    break;
        case 'tiff_uncompressed_rgba8_720':
//                    oneframe = 7373386;
                    oneframe = (1280*720*8*4) / 8;
                   break;
        case 'tiff_uncompressed_rgb8_1080':
//                    oneframe = 12442354;
                    oneframe = (1920*1080*8*3) / 8;
                    break;
        case 'tiff_uncompressed_rgba8_1080':
 //                   oneframe = 16589570;
                     oneframe = (1920*1080*8*4) / 8;
                    break;
        case 'tiff_uncompressed_rgb10_720':
                    oneframe = (1280*720*10*3) / 8;
//                    oneframe = 5530170;
                    break;
        case 'tiff_uncompressed_rgba10_720':
//                    oneframe = 7373386;
                    oneframe = (1280*720*10*4) / 8;
                    break;
        case 'tiff_uncompressed_rgb10_1080':
//                    oneframe = 12442354;
                    oneframe = (1920*1080*10*3) / 8;
                    break;
        case 'tiff_uncompressed_rgba10_1080':
//                    oneframe = 16589570;
                    oneframe = (1920*1080*10*4) / 8;
                    break;
        case 'aja_log_720':
                    oneframe = 7373627;
                    break;
        case 'aja_log_1080':
                    oneframe = 16589627;
                    break;
        case 'aja_10bit_720':
                    oneframe = 7373639;
                    break;
        case 'aja_10bit_1080':
                    oneframe = 16589639;
                    break;
        case 'aja_2vuy_720':
                    oneframe = 3687215;
                    break;
        case 'aja_2vuy_1080':
                    oneframe = 8299311;
                    break;
        case 'mpeg2_62_ntsc_br':
                    oneframe = 812646.4; // Byte rate / sec
                    break;
        case 'mpeg2_50_ntsc_br':
                    oneframe = 655360; // Byte rate / sec
                    break;
        case 'mpeg2_37_ntsc_br':
                    oneframe = 484966.4; // Byte rate / sec
                    break;
        case 'cineon_rgb_720':
                    oneframe = 3688448;
                    break;
        case 'cineon_rgba_720':
                    oneframe = 4917248;
                    break;
        case 'cineon_rgb_1080':
                    oneframe = 8296448;
                    break;
        case 'cineon_rgba_1080':
                    oneframe = 11061248;
                    break;
        case 'iff_ntsc':
                    oneframe = 1990216;
                    break;
        case 'iff_pal':
                    oneframe = 2387172;
                    break;
        case 'iff_720':
                    oneframe = 5149472;
                    break;
        case 'iff_1080':
                    oneframe = 11244436;
                    break;
        case 'openexr_720':
                    oneframe = 7384771;
                    break;
        case 'openexr_1080':
                    oneframe = 16606531;
                    break;
        case 'sgi_raw_rgb_720':
                    oneframe = 5530112;
                    break;
        case 'sgi_raw_rgba_720':
                    oneframe = 7373312;
                    break;
        case 'sgi_raw_rgb_1080':
                    oneframe = 12442112;
                    break;
        case 'sgi_raw_rgba_1080':
                    oneframe = 16589312;
                    break;
        case 'sgi_rgb_720':
                    oneframe = 5451836;
                    break;
        case 'sgi_rgba_720':
                    oneframe = 5490716;
                    break;
        case 'sgi_rgb_1080':
                    oneframe = 12030166;
                    break;
        case 'sgi_rgba_1080':
                    oneframe = 12110086;
                    break;
        case 'softimage_720':
                    oneframe = 2504494;
                    break;
        case 'softimage_1080':
                    oneframe = 5436534;
                    break;
        case 'targa_rgb_720':
                    oneframe = 2768219;
                    break;
        case 'targa_rgba_720':
                    oneframe = 3689819;
                    break;
        case 'targa_rgb_1080':
                    oneframe = 6225659;
                    break;
        case 'targa_rgba_1080':
                    oneframe = 8299259;
                    break;
        case 'cineform_low_1080':
                    oneframe = (10*1024*1024)/24;
                    break;
        case 'cineform_medium_1080':
                    oneframe = (12*1024*1024)/24;
                    break;
        case 'cineform_high_1080':
                    oneframe = (16*1024*1024)/24;
                    break;
        case 'cineform_filmscan_1080':
                    oneframe = (20*1024*1024)/24;
                    break;
        case 'cineform_filmscan2_1080':
                    oneframe = (24*1024*1024)/24;
                    break;
        case '5dmkii_h264_480':
                    oneframe = ((17*1024*1024)/8)/24;
                    lockframe = 24;
                    break;
        case '5dmkii_h264_1080':
                    oneframe = ((38*1024*1024)/8)/24;
                    lockframe = 24;
                    break;
        case '7d_h264_480':
                    oneframe = ((22*1024*1024)/8)/24;
                    lockframe = 24;
                    break;
        case '7d_h264_1080':
                    oneframe = ((48*1024*1024)/8)/24;
                    lockframe = 24;
                    break;
    }
    
    if (frame_rate.substr(0,1) == 'f') frame_rate = frame_rate.substr(1);
    
    if (lockrate > 0) frame_rate = lockrate;
    
    frame_rate = parseFloat(frame_rate);
    length = parseFloat(length);
    
    if (codec.substr(codec.length - 3) == '_br') { // Fixed bit rate
        switch (length_mult) {
        case 'frames':
            var vFinal = (oneframe / frame_rate) * length;
            break;
        case 'seconds':
            var vFinal = oneframe * length;
            break;
        case 'minutes':
            var vFinal = oneframe * 60 * length;
            break;
        case 'hours':
            var vFinal = oneframe * 60 * 60 * length;
        }
    } else {
    
        switch (length_mult) {
            case 'frames':
                var vFinal = oneframe * length;
                break;
            case 'seconds':
                var vFinal = oneframe * frame_rate * length;
                break;
            case 'minutes':
                var vFinal = oneframe * frame_rate * 60 * length;
                break;
            case 'hours':
                var vFinal = oneframe * frame_rate * 60 * 60 * length;
        }
    }
        
    if (vFinal < (1024 * 1024)) {
        document.getElementById('output').innerHTML = formatNum(Math.round((vFinal / 1024)*100)/100) + ' KB';
    } else if (vFinal < (1024 * 1024 * 1024)) {
        document.getElementById('output').innerHTML = formatNum(Math.round(((vFinal / 1024)/1024)*100)/100) + ' MB';
    } else if (vFinal < (1024 * 1024 * 1024 * 1024)) {
        document.getElementById('output').innerHTML = formatNum(Math.round((((vFinal / 1024)/1024) / 1024)*100)/100) + ' GB';
    } else {
        document.getElementById('output').innerHTML = formatNum(Math.round(((((vFinal / 1024)/1024) / 1024)/1024)*100)/100) + ' TB';
    }
}

function formatNum(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function recalculate() {
    calculateSize(document.getElementById('format').options[document.getElementById('format').selectedIndex].id, document.getElementById('frame_rate').options[document.getElementById('frame_rate').selectedIndex].id, document.getElementById('length').value, document.getElementById('length_type').options[document.getElementById('length_type').selectedIndex].id);
}

function changeFormat() {
    var getval = document.getElementById('format').options[document.getElementById('format').selectedIndex].id;
        
    if (getval.indexOf('480') > -1) {
        document.getElementById('reslabel').innerHTML = '640x480';
    } else if (getval.indexOf('ntsc_f') > -1) {
        document.getElementById('reslabel').innerHTML = '720x480';
    } else if (getval.indexOf('ntsc') > -1) {
        document.getElementById('reslabel').innerHTML = '720x486';
    } else if (getval.indexOf('pal') > -1) {
        document.getElementById('reslabel').innerHTML = '720x576';
    } else if (getval.indexOf('1080_r') > -1) { // Thin Raster
        document.getElementById('reslabel').innerHTML = '1440x1080';
    } else if (getval.indexOf('720_r') > -1) {
        document.getElementById('reslabel').innerHTML = '960x720';
    } else if (getval.indexOf('1080') > -1) { // Full raster
        document.getElementById('reslabel').innerHTML = '1920x1080';
    } else if (getval.indexOf('720') > -1) {
        document.getElementById('reslabel').innerHTML = '1280x720';
    } else if (getval.indexOf('2048') > -1) {
        document.getElementById('reslabel').innerHTML = '2048x1152';
    } else if (getval.indexOf('3072') > -1) {
        document.getElementById('reslabel').innerHTML = '3072x1728';
    } else if (getval.indexOf('4096') > -1) {
        document.getElementById('reslabel').innerHTML = '4096x2304';
    } else {
        document.getElementById('reslabel').innerHTML = 'Unknown';
    }
    
    recalculate();
}

function IsNumeric(sText)
{
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}
   
function validate_text() {
    var gettext = document.getElementById('length').value;
    
    if (IsNumeric(gettext) && gettext > 0) {
        resetTextBox();
        recalculate();
    } else {
        document.getElementById('length').className="textbox_red";
    }
}

function resetTextBox() {
    document.getElementById('length').className="textbox_black";
}