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 = "/pixel_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;
    
   if (gettype == "aspect" || gettype == "target") {
            page_url += "&res_s_w=" + document.getElementById('res_s_w').value;
            page_url += "&res_s_h=" + document.getElementById('res_s_h').value;
   }
   
      if (gettype == "aspect" || gettype == "source") {
            page_url += "&res_t_w=" + document.getElementById('res_t_w').value;
            page_url += "&res_t_h=" + document.getElementById('res_t_h').value;
      }
      
    if (gettype != "aspect") page_url += '&txt_aspect=' + document.getElementById('txt_aspect').value;
    
    window.location.href = page_url;
}

function calculate(gettype, res_s_w, res_s_h, res_t_w, res_t_h, aspect_ratio) {
    res_s_w = parseInt(res_s_w);
    res_s_h = parseInt(res_s_h);
    res_t_w = parseInt(res_t_w);
    res_t_h = parseInt(res_t_h);
    
    switch (gettype) {
        case 'aspect':
                    if (res_s_w != res_t_w && res_s_h != res_t_h) {
                        document.getElementById('output').innerHTML = "Error: Either target width or target height must be the same as source.";
                    } else {
                    
                        if (res_s_w == res_t_w) { // Height is  different
                            var aspect_full = (res_t_h / res_s_h);
                        } else {
                            var aspect_full = (res_s_w / res_t_w);
                        }
    
                        var vFinal = Math.round((aspect_full) * 1000) / 1000;
                        vFinal +=":1";
                        document.getElementById('output').innerHTML = "Pixel aspect ratio: " + vFinal;
                        document.getElementById('morestats').innerHTML = "Unrounded aspect ratio: " + aspect_full;
    
                        // Copy settings to other tabs
                        document.getElementById('txt_aspect').value = aspect_full;
                    }
                    break;
        case 'source':
                    if (aspect_ratio > 1.33 && aspect_ratio < 1.34) {
                        aspect_ratio = (4/3);
                    } else if (aspect_ratio > 1.36 && aspect_ratio < 1.37) {
                        aspect_ratio = (14/9);
                    } else if (aspect_ratio > 1.78 && aspect_ratio < 1.79) {
                        aspect_ratio = (16/9);
                    }
                                        
                    if (aspect_ratio < 1) { // Height, not width
                        getw = res_t_w;
                        geth = Math.round(res_t_h / aspect_ratio);
                    } else {
                        getw = Math.round(res_t_w * aspect_ratio);
                        geth = res_t_h;
                    }
                    
                    document.getElementById('output').innerHTML = "Source resolution: " + getw + ' x ' + geth;

                    // Copy settings to other tabs
                    document.getElementById('res_s_h').value = geth;
                    document.getElementById('res_s_w').value = getw;
                    break;
           case 'target':
                    if (aspect_ratio > 1.33 && aspect_ratio < 1.34) {
                        aspect_ratio = (4/3);
                    } else if (aspect_ratio > 1.36 && aspect_ratio < 1.37) {
                        aspect_ratio = (14/9);
                    } else if (aspect_ratio > 1.78 && aspect_ratio < 1.79) {
                        aspect_ratio = (16/9);
                    }
                    
                    if (aspect_ratio < 1) { // Height, not width
                        getw = res_s_w;
                        geth = Math.round(res_s_h * aspect_ratio);
                    } else {
                        getw = Math.round(res_s_w / aspect_ratio);
                        geth = res_s_h;
                    }
                    
                    document.getElementById('output').innerHTML = "Target resolution: " + getw + ' x ' + geth;

                    // Copy settings to other tabs
                    document.getElementById('res_t_h').value = geth;
                    document.getElementById('res_t_w').value = getw;
                    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;
    var getaspect = document.getElementById('txt_aspect').value;
    
    calculate(gettype, document.getElementById('res_s_w').value, document.getElementById('res_s_h').value, document.getElementById('res_t_w').value, document.getElementById('res_t_h').value, getaspect);
}

function changeType() {
    var aspect_id = document.getElementById('calc').options[document.getElementById('calc').selectedIndex].id;                                     
    switch (aspect_id) {
        case "aspect":
            document.getElementById('div_aspect').className = 'hide';
            document.getElementById('div_source_res').className = 'row';
            document.getElementById('div_target_res').className = 'row';
            document.getElementById('morestatslabel').className = 'show';
            break;
        case "source":
            document.getElementById('div_aspect').className = 'row';
            document.getElementById('div_source_res').className = 'hide';
            document.getElementById('div_target_res').className = 'row';
            document.getElementById('morestatslabel').className = 'hide';
            break;
        case "target":
            document.getElementById('div_aspect').className = 'row';
            document.getElementById('div_source_res').className = 'row';
            document.getElementById('div_target_res').className = 'hide';
            document.getElementById('morestatslabel').className = 'hide';
            break;
    }
    recalculate();
}

function changePreset() {
    var index_selected = document.getElementById('res_presets1').selectedIndex;
    
    switch (document.getElementById('res_presets1').options[index_selected].id) {
        case "ntsc": 
            document.getElementById('res_s_w').value = 720;
            document.getElementById('res_s_h').value = 547;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 486;
            pAspect = (8/9);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "ntsc_169":
            document.getElementById('res_s_w').value = 853;
            document.getElementById('res_s_h').value = 486;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 486;
            pAspect = (32/27);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "dv_ntsc": 
            document.getElementById('res_s_w').value = 720;
            document.getElementById('res_s_h').value = 540;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 480;
            pAspect = (8/9);
            document.getElementById('txt_aspect').value = pAspect;
            break;
         case "dv_ntsc_169": 
            document.getElementById('res_s_w').value = 853;
            document.getElementById('res_s_h').value = 480;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 480;
            pAspect = (32/27);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "dv_pal": 
            document.getElementById('res_s_w').value = 768;
            document.getElementById('res_s_h').value = 576;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 576;
            pAspect = (16/15);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "dv_pal_169":
            document.getElementById('res_s_w').value = 1024;
            document.getElementById('res_s_h').value = 576;
            document.getElementById('res_t_w').value = 720;
            document.getElementById('res_t_h').value = 576;
            pAspect = (64/45);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "hdv_720": 
            document.getElementById('res_s_w').value = 1280;
            document.getElementById('res_s_h').value = 720;
            document.getElementById('res_t_w').value = 1280;
            document.getElementById('res_t_h').value = 720;
            document.getElementById('txt_aspect').value = 1;
            break;
        case "hdcam_1080": 
            document.getElementById('res_s_w').value = 1920;
            document.getElementById('res_s_h').value = 1080;
            document.getElementById('res_t_w').value = 1920;
            document.getElementById('res_t_h').value = 1080;
            document.getElementById('txt_aspect').value = 1;
            break;
        case "dvcprohd_720": 
            document.getElementById('res_s_w').value = 1280;
            document.getElementById('res_s_h').value = 720;
            document.getElementById('res_t_w').value = 960;
            document.getElementById('res_t_h').value = 720;
            pAspect = (4/3);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "hdv_1080": 
            document.getElementById('res_s_w').value = 1920;
            document.getElementById('res_s_h').value = 1080;
            document.getElementById('res_t_w').value = 1440;
            document.getElementById('res_t_h').value = 1080;
            pAspect = (4/3);
            document.getElementById('txt_aspect').value = pAspect;
            break;
        case "dvcprohd_1080": 
            document.getElementById('res_s_w').value = 1920;
            document.getElementById('res_s_h').value = 1080;
            document.getElementById('res_t_w').value = 1280;
            document.getElementById('res_t_h').value = 1080;
            document.getElementById('txt_aspect').value = 1.5;
            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 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;';
    }
}