//arrotonda un numero
function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return result;
}

//parsa un numero che contiene un suffisso moltiplicatore p(pico)n(nano),u(micro),m(milli),k(kilo),M(mega),G(giga)
function parseInput(v) {
    try {
        var n = parseFloat(v);
        var p = n;
        var t = $.trim(v);
        var l = t.length;
        var m = t.charAt(l - 1);
        if (m == 'G') {
            p = n * 1000000000;
        } else if (m == 'M') {
            p = n * 1000000;
        } else if (m == 'k' || m == 'K') {
            p = n * 1000;
        } else if (m == 'm') {
            p = n / 1000;
        } else if (m == 'µ' || m == 'µ') {
            p = n / 1000000;
        } else if (m == 'n') {
            p = n / 1000000000;
        } else if (m == 'p') {
            p = n / 1000000000000;
        }
        return p;
    } catch (ex) {
        return "?";
    }
}

//converte un numero decimale in un numero con un suffisso moltiplicativo arrotondato a 2 cifre
function formatValueMult(v, suffix) {
    var r = "?";
    var m = "";
    if (v == 0) return "0";
    if (v >= 1000000000.0) {
        r = v / 1000000000;
        m = "G";
    } else if (v >= 1000000.0) {
        r = v / 1000000;
        m = "M";
    } else if (v >= 1000.0) {
        r = v / 1000;
        m = "k";
    } else if (v < 0.000000001) {
        r = v * 1000000000000;
        m = "p";
    } else if (v < 0.000001) {
        r = v * 1000000000;
        m = "n";
    } else if (v < .001) {
        r = v * 1000000;
        m = "µ";
    } else if (v < 1) {
        r = v * 1000;
        m = "m";
    } else {
        r = v;
    }
    return roundNumber(r, 2) + " " + m + suffix;
}

// trova i valore di resistenza commerciale inferiore pił vicino
function findCommercialResistorLess(r) {
    // find multiplier
    var mv = new Array(1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1, 0.1, 0.01, 0.001);
    var l = mv.length;
    var m = -1;
    for(var i = 0; i < l; i++){
        if(mv[i] < r){
            m = mv[i];
            break;
        }
    }
    //find min value
    var vr = new Array(1, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2);
    l = vr.length-1;
    for (var i = l; i >= 0; i--) {
        var t = vr[i] * m;
        if (t <= r) {
            return t;
        }
    }
    return vr[0] * m;
}

function findCommercialResistorPower(p) {
    var r = "?";
    if (p < 0.20) {
        r = "1/4";
    } else if (p < 0.40) {
        r = "1/2";
    } else if (p < 0.8) {
        r = "1";
    } else if (p < 4) {
        r = "5";
    } else if (p < 8) {
        r = 10;
    } else {
        r = "> " + p;
    }
    return r;
}
