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].substr(0,4).toLowerCase() == "res_" || spl2[0].substr(0,4).toLowerCase() == "txt_") {
                        document.getElementById(spl2[0].toLowerCase()).value = spl2[1];
                    } else {
                        document.getElementById(spl2[0].toLowerCase()).selectedIndex = document.getElementById(spl2[1].toLowerCase()).index;
                    }
                }
            }
            changeType();
        }
    }
}

function linkToPage() {
var pathName = window.location.pathname;
        
    if (pathName.substr(0,11) == "application") {
        pathName = "/lens_calc_mobile.xml";
    }
    
    var gettype = document.getElementById('calc').options[document.getElementById('calc').selectedIndex].id;
    
    var page_url= "http://www.digitalrebellion.com" + pathName;
    page_url += "?calc=" + gettype;
    
    switch (gettype) {
        case 'horiz_angle':
            page_url += "&res_w=" + document.getElementById('res_w').value;
            page_url += "&txt_focal=" + document.getElementById('txt_focal').value;
            break;
        case 'vert_angle':
            page_url += "&res_h=" + document.getElementById('res_h').value;
            page_url += "&txt_focal=" + document.getElementById('txt_focal').value;
            break;
        case 'focal_length_h':
            page_url += "&res_w=" + document.getElementById('res_w').value;
            page_url += "&txt_hangle=" + document.getElementById('txt_hangle').value;
            break;
        case 'focal_length_v':
            page_url += "&res_h=" + document.getElementById('res_h').value;
            page_url += "&txt_vangle=" + document.getElementById('txt_vangle').value;
            break;
    }
    
    window.location.href = page_url;
}

function calculate(gettype, res_w, res_h, focal, hangle,vangle) {
    res_w = parseFloat(res_w);
    res_h = parseFloat(res_h);
    focal = parseInt(focal);
    hangle = parseFloat(hangle);
    vangle = parseFloat(vangle);
    
    switch (gettype) {
        case 'horiz_angle':
                    var angle_full = (Math.atan(res_w / (2 * focal)) * 360) / Math.PI;
                    var vFinal = Math.round((angle_full) * 100) / 100;
                    
                    document.getElementById('output').innerHTML = "Horizontal lens angle: " + vFinal + String.fromCharCode(176);
                    document.getElementById('morestats').innerHTML = "Unrounded horizontal lens angle: " + angle_full + String.fromCharCode(176);

                    // Copy settings to other tabs
                    document.getElementById('txt_hangle').value = angle_full;
                    break;
         case 'vert_angle':
                    var angle_full = (Math.atan(res_h / (2 * focal)) * 360) / Math.PI;
                    var vFinal = Math.round((angle_full) * 100) / 100;
                    
                    document.getElementById('output').innerHTML = "Vertical lens angle: " + vFinal + String.fromCharCode(176);
                    document.getElementById('morestats').innerHTML = "Unrounded vertical lens angle: " + angle_full + String.fromCharCode(176);

                    // Copy settings to other tabs
                    document.getElementById('txt_vangle').value = angle_full;
                    break;
          case 'focal_length_h':
                    var focal_full = res_w / (2 * Math.tan((hangle / 360) *Math.PI));
                    
                    var vFinal = Math.round((focal_full) * 100) / 100;
                    
                    document.getElementById('output').innerHTML = "Focal length: " + vFinal + " mm";
                    document.getElementById('morestats').innerHTML = "Unrounded focal length: " + focal_full;

                    // Copy settings to other tabs
                    document.getElementById('txt_focal').value = focal_full;
                    break;
        case 'focal_length_v':
                    var focal_full = res_h / (2 * Math.tan((vangle / 360) *Math.PI));
                    
                    var vFinal = Math.round((focal_full) * 100) / 100;
                    
                    document.getElementById('output').innerHTML = "Focal length: " + vFinal + " mm";
                    document.getElementById('morestats').innerHTML = "Unrounded focal length: " + focal_full;

                    // Copy settings to other tabs
                    document.getElementById('txt_focal').value = focal_full;
                    break;
    }
}     

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() {
    var gettype = document.getElementById('calc').options[document.getElementById('calc').selectedIndex].id;
    calculate(gettype, document.getElementById('res_w').value, document.getElementById('res_h').value, document.getElementById('txt_focal').value, document.getElementById('txt_hangle').value, document.getElementById('txt_vangle').value);
}

function changeType() {
    var aspect_id = document.getElementById('calc').options[document.getElementById('calc').selectedIndex].id;                                     
    switch (aspect_id) {
        case "horiz_angle":
            document.getElementById('div_width').className = 'row';
            document.getElementById('div_height').className = 'hide';
            document.getElementById('div_focal').className = 'row';
            document.getElementById('div_hangle').className = 'hide';
            document.getElementById('div_vangle').className = 'hide';
            break;
        case "vert_angle":
            document.getElementById('div_width').className = 'hide';
            document.getElementById('div_height').className = 'row';
            document.getElementById('div_focal').className = 'row';
            document.getElementById('div_hangle').className = 'hide';
            document.getElementById('div_vangle').className = 'hide';
            break;
        case "focal_length_h":
            document.getElementById('div_width').className = 'row';
            document.getElementById('div_height').className = 'hide';
            document.getElementById('div_focal').className = 'hide';
            document.getElementById('div_hangle').className = 'row';
            document.getElementById('div_vangle').className = 'hide';
            break;
        case "focal_length_v":
            document.getElementById('div_width').className = 'hide';
            document.getElementById('div_height').className = 'row';
            document.getElementById('div_focal').className = 'hide';
            document.getElementById('div_hangle').className = 'hide';
            document.getElementById('div_vangle').className = 'row';
            break;       
    }
    recalculate();
}

function changePreset() {
    var index_selected = document.getElementById('res_presets1').selectedIndex;
    
    switch (document.getElementById('res_presets1').options[index_selected].id) {
        case "stan_16": 
            document.getElementById('res_w').value = 9.6;
            document.getElementById('res_h').value = 7.2;
            break;
        case "super_16": 
            document.getElementById('res_w').value = 11.76;
            document.getElementById('res_h').value = 7.08;
            break;
        case "academy_35": 
            document.getElementById('res_w').value = 20.96;
            document.getElementById('res_h').value = 15.30;
            break;
        case "full_35": 
            document.getElementById('res_w').value = 24;
            document.getElementById('res_h').value = 18;
            break;
        case "ana_35": 
            document.getElementById('res_w').value = 21.29;
            document.getElementById('res_h').value = 9.06;
            break;
        case "vistavision": 
            document.getElementById('res_w').value = 36.01;
            document.getElementById('res_h').value = 24.00;
            break;
        case "stan_65": 
            document.getElementById('res_w').value = 48.59;
            document.getElementById('res_h').value = 22.09;
            break;
        case "quarter_video": 
            document.getElementById('res_w').value = 3.2;
            document.getElementById('res_h').value = 2.4;
            break;
        case "third_video": 
            document.getElementById('res_w').value = 4.8;
            document.getElementById('res_h').value = 3.6;
            break;
        case "half_video": 
            document.getElementById('res_w').value = 6.4;
            document.getElementById('res_h').value = 4.8;
            break;
        case "twothirds_video": 
            document.getElementById('res_w').value = 8.8;
            document.getElementById('res_h').value = 6.6;
            break;
    }

    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(getobj) {
    var gettext = document.getElementById(getobj).value;
    
    if (IsNumeric(gettext) && gettext.length > 0) {
        resetTextBox(getobj);
        recalculate();
        document.getElementById(getobj).focus();
    } else {
        document.getElementById(getobj).className="textbox_red";
        document.getElementById(getobj).focus();
    }
}

function resetTextBox(getobj) {
    document.getElementById(getobj).className="textbox_black";
    document.getElementById(getobj).focus();
}

function changeAspect() {
    if (document.getElementById('cbo_aspect').options[document.getElementById('cbo_aspect').selectedIndex].id == 'custom_aspect' && document.getElementById('div_aspect').className == 'row') {
        document.getElementById('div_custom_aspect').className = 'row';
    } else {
        document.getElementById('div_custom_aspect').className = 'hide';
    }
    
    recalculate();
}

function showHideMoreStats() {
    var e_morestats = document.getElementById('morestats');
    var e_morestatslabel = document.getElementById('morestatslabel');
    
    if (e_morestats.className == 'hide') {
        e_morestats.className = 'stats';
        e_morestatslabel.innerHTML = '&#60; Fewer stats';
    } else {
        e_morestats.className = 'hide';
        e_morestatslabel.innerHTML = 'More stats &#62;';
    }
}

function roundTo16(num) {
    return Math.round(num/16)*16
}