// Solar System Model JavaScript
// Keith Enevoldsen, thinkzone.wlonk.com

function recalc_all(form)
{
metric_units = form.units[0].checked
size = form.size.value;

if (metric_units) {
        form.diam_units.value = "km";
        form.dist_units.value = "km";
        form.scale_diam_units.value = "mm";
        form.scale_dist_units.value = "m";

        // km
        diam_sun = 1392000;
        diam_mercury = 4880;
        diam_venus = 12100;
        diam_earth = 12760;
        diam_mars = 6800;
        diam_ceres = 950;
        diam_jupiter = 142800;
        diam_saturn = 120600;
        diam_uranus = 51200;
        diam_neptune = 48600;
        diam_pluto = 2320;

        // km
        dist_sun = 0;
        dist_mercury = 58300000;
        dist_venus = 108000000;
        dist_earth = 150000000;
        dist_mars = 227000000;
        dist_ceres = 414000000;
        dist_jupiter = 778000000;
        dist_saturn = 1430000000;
        dist_uranus = 2870000000;
        dist_neptune = 4500000000;
        dist_pluto = 5910000000;
        
        factor0 = size/dist_pluto;
        mm_per_m = 1000;
        factor1 = factor0*mm_per_m;
        factor2 = factor0;
} else {
        form.diam_units.value = "miles";
        form.dist_units.value = "miles";
        form.scale_diam_units.value = "inches";
        form.scale_dist_units.value = "feet";

        // miles
        diam_sun = 865000;
        diam_mercury = 3031;
        diam_venus = 7520;
        diam_earth = 7928;
        diam_mars = 4217;
        diam_ceres = 590;
        diam_jupiter = 88850;
        diam_saturn = 74900;
        diam_uranus = 31760;
        diam_neptune = 30780;
        diam_pluto = 1430;

        // miles
        dist_sun = 0;
        dist_mercury = 36000000;
        dist_venus = 67200000;
        dist_earth = 96000000;
        dist_mars = 142000000;
        dist_ceres = 257000000;
        dist_jupiter = 484000000;
        dist_saturn = 888000000;
        dist_uranus = 1790000000;
        dist_neptune = 2800000000;
        dist_pluto = 3670000000;

        factor0 = size/dist_pluto;
        in_per_ft = 12;
        factor1 = factor0*in_per_ft;
        factor2 = factor0;
}

form.diam_sun.value = diam_sun;
form.diam_mercury.value = diam_mercury;
form.diam_venus.value = diam_venus;
form.diam_earth.value = diam_earth;
form.diam_mars.value = diam_mars;
form.diam_ceres.value = diam_ceres;
form.diam_jupiter.value = diam_jupiter;
form.diam_saturn.value = diam_saturn;
form.diam_uranus.value = diam_uranus;
form.diam_neptune.value = diam_neptune;
form.diam_pluto.value = diam_pluto;

form.dist_sun.value = dist_sun;
form.dist_mercury.value = dist_mercury;
form.dist_venus.value = dist_venus;
form.dist_earth.value = dist_earth;
form.dist_mars.value = dist_mars;
form.dist_ceres.value = dist_ceres;
form.dist_jupiter.value = dist_jupiter;
form.dist_saturn.value = dist_saturn;
form.dist_uranus.value = dist_uranus;
form.dist_neptune.value = dist_neptune;
form.dist_pluto.value = dist_pluto;

if (metric_units) {
        round1 = 2;
        round2 = 2;

        form.scale_diam_sun.value = round(factor1*diam_sun, round1);
        form.scale_diam_mercury.value = round(factor1*diam_mercury, round1);
        form.scale_diam_venus.value = round(factor1*diam_venus, round1);
        form.scale_diam_earth.value = round(factor1*diam_earth, round1);
        form.scale_diam_mars.value = round(factor1*diam_mars, round1);
        form.scale_diam_ceres.value = round(factor1*diam_ceres, round1);
        form.scale_diam_jupiter.value = round(factor1*diam_jupiter, round1);
        form.scale_diam_saturn.value = round(factor1*diam_saturn, round1);
        form.scale_diam_uranus.value = round(factor1*diam_uranus, round1);
        form.scale_diam_neptune.value = round(factor1*diam_neptune, round1);
        form.scale_diam_pluto.value = round(factor1*diam_pluto, round1);

        form.scale_dist_sun.value = round(factor2*dist_sun, round2);
        form.scale_dist_mercury.value = round(factor2*dist_mercury, round2);
        form.scale_dist_venus.value = round(factor2*dist_venus, round2);
        form.scale_dist_earth.value = round(factor2*dist_earth, round2);
        form.scale_dist_mars.value = round(factor2*dist_mars, round2);
        form.scale_dist_ceres.value = round(factor2*dist_ceres, round2);
        form.scale_dist_jupiter.value = round(factor2*dist_jupiter, round2);
        form.scale_dist_saturn.value = round(factor2*dist_saturn, round2);
        form.scale_dist_uranus.value = round(factor2*dist_uranus, round2);
        form.scale_dist_neptune.value = round(factor2*dist_neptune, round2);
        form.scale_dist_pluto.value = round(factor2*dist_pluto, round2);
} else {
        round1 = 4;

        form.scale_diam_sun.value = round(factor1*diam_sun, round1);
        form.scale_diam_mercury.value = round(factor1*diam_mercury, round1);
        form.scale_diam_venus.value = round(factor1*diam_venus, round1);
        form.scale_diam_earth.value = round(factor1*diam_earth, round1);
        form.scale_diam_mars.value = round(factor1*diam_mars, round1);
        form.scale_diam_ceres.value = round(factor1*diam_ceres, round1);
        form.scale_diam_jupiter.value = round(factor1*diam_jupiter, round1);
        form.scale_diam_saturn.value = round(factor1*diam_saturn, round1);
        form.scale_diam_uranus.value = round(factor1*diam_uranus, round1);
        form.scale_diam_neptune.value = round(factor1*diam_neptune, round1);
        form.scale_diam_pluto.value = round(factor1*diam_pluto, round1);

        form.scale_dist_sun.value = feet_inches(factor2*dist_sun);
        form.scale_dist_mercury.value = feet_inches(factor2*dist_mercury);
        form.scale_dist_venus.value = feet_inches(factor2*dist_venus);
        form.scale_dist_earth.value = feet_inches(factor2*dist_earth);
        form.scale_dist_mars.value = feet_inches(factor2*dist_mars);
        form.scale_dist_ceres.value = feet_inches(factor2*dist_ceres);
        form.scale_dist_jupiter.value = feet_inches(factor2*dist_jupiter);
        form.scale_dist_saturn.value = feet_inches(factor2*dist_saturn);
        form.scale_dist_uranus.value = feet_inches(factor2*dist_uranus);
        form.scale_dist_neptune.value = feet_inches(factor2*dist_neptune);
        form.scale_dist_pluto.value = feet_inches(factor2*dist_pluto);
}
}

function round(number, digits) {
var a = Math.pow(10,digits);
return Math.round(number*a)/a;
}

function inch_fractions(x) {
inches = Math.floor(x);
fraction = Math.round((x-inches)*64);
return inches + " - " + fraction + "/64 in"
}

function feet_inches(x) {
feet = Math.floor(x);
inches = Math.round((x-feet)*12);
return feet + " ft " + inches + " in"
}