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 = "/power_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 'diff':
            page_url += "&country=" + document.getElementById('country').options[document.getElementById('country').selectedIndex].id;
            page_url += "&txt_breaker=" + document.getElementById('txt_breaker').value;
            page_url += "&txt_total=" + document.getElementById('txt_total').value;
            break;
        case 'breaker':
            page_url += "&country=" + document.getElementById('country').options[document.getElementById('country').selectedIndex].id;
            page_url += "&txt_total=" + document.getElementById('txt_total').value;
            break;
        case 'voltage':
            page_url += "&txt_breaker=" + document.getElementById('txt_breaker').value;
            page_url += "&txt_total=" + document.getElementById('txt_total').value;
            break;
    }
    
    window.location.href = page_url;
}

function calculate(gettype, voltage, breaker, power) {
    voltage = parseInt(voltage);
    breaker = parseInt(breaker);
    power = parseInt(power);
        
    switch (gettype) {
            case 'diff':
                        var circuitLimit = breaker * voltage;
                        var recommendedLimit = circuitLimit * 0.8;
                        var load =  Math.round(((power / circuitLimit) * 100),2);
                        
                        if (power > circuitLimit) {
                            var vFinal = '<font color="red">' + (circuitLimit - power) + ' W<br />' + load + '% load</font>';
                        } else if (power > recommendedLimit) {
                            var vFinal = '<font color="orange">' + (circuitLimit - power) + ' W<br />' + load + '% load</font><br /><font size="1">Within 20% safety margin</font>';
                        } else {
                            var vFinal = '<font color="green">' + (circuitLimit - power) + ' W<br />' + load + '% load</font>';
                        }
                        
                        document.getElementById('output').innerHTML = "Difference: " + vFinal;
                        document.getElementById('morestats').innerHTML = "Circuit limit: " + circuitLimit + " W<br />Recommended limit: " + recommendedLimit + " W";
                        break;
         case 'breaker':
                    breaker = power / voltage;
                    var recBreaker = ((power + (power * 0.2)) / voltage);
                    
                    document.getElementById('output').innerHTML = "Minimum breaker size: " + Math.round(breaker) + " A<br />Recommended breaker size: " + Math.round(recBreaker) + " A";
                    document.getElementById('morestats').innerHTML = "Unrounded breaker size: " + breaker + " A<br />Unrounded recommended breaker size: " + recBreaker + " A";
                    break;
          case 'voltage':
                    voltage = power / breaker;
                    
                    document.getElementById('output').innerHTML = "Voltage: " + Math.round(voltage) + " V";
                    document.getElementById('morestats').innerHTML = "Unrounded voltage: " + voltage;
                    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 getvoltage = document.getElementById('country').options[document.getElementById('country').selectedIndex].id.substr(1,3);
    var getbreaker = document.getElementById('txt_breaker').value;
    var gettotal = document.getElementById('txt_total').value;
        
    calculate(gettype, getvoltage, getbreaker, gettotal);
}

function changeType() {
    var calc = document.getElementById('calc').options[document.getElementById('calc').selectedIndex].id;                                     
    switch (calc) {
        case "diff":
            document.getElementById('div_voltage').className = 'row';
            document.getElementById('div_breaker').className = 'row';
            document.getElementById('div_total').className = 'row';
            break;
        case "breaker":
            document.getElementById('div_voltage').className = 'row';
            document.getElementById('div_breaker').className = 'hide';
            document.getElementById('div_total').className = 'row';
            break;
        case "voltage":
            document.getElementById('div_voltage').className = 'hide';
            document.getElementById('div_breaker').className = 'row';
            document.getElementById('div_total').className = 'row';
            break;     
    }
    recalculate();
}

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

    if (sText.length == 0) return false;
 
   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;';
    }
}