let n = new Date();
n.getUTCFullYear();
n.getUTCMonth() + 1;
n.getUTCDate();
document.getElementById("todays-date").innerHTML = "Today's Date: " + n.toLocaleDateString();


// when user clicks reset...
document.getElementById("reset").addEventListener("click", function () {
    //reset all values. doesnt matter what page it is
    document.getElementById('y').value = "";
    document.getElementById('x').value = "";
    document.getElementById('brake-space').value = "0";
    document.getElementById('drum-rotor').value = "0";
    document.getElementById('passenger-axle-length').value = "";
    document.getElementById('driver-axle-length').value = "";
    document.getElementById('pinion').value = "";
    document.getElementById('housing-width').value = "";
    document.getElementById('overall-width').value = "";
    
});


// when user clicks print...
document.getElementById("print").addEventListener("click", function () {
    //print window open for user to print the page. Only certain divs on the page will print
    window.print();
});


// Get the name of the page that the user is currently on
// This determines the type of calculations to do
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);

// when user clicks calculate, it determines what values to get from user input
document.getElementById("calculate").addEventListener("click", function () {

    // rearend width if statement
    if (sPage.toLowerCase() == "rearendWidth.html".toLowerCase()) {

        //get brake space value
        var bs = document.getElementById("brake-space");
        var brakeSpaceVal = parseFloat(bs.options[bs.selectedIndex].value);
        if (brakeSpaceVal === 0) {
            return alert("Please Choose A Brake Space Value");
        }


        //get Drum/Rotor value
        var dr = document.getElementById("drum-rotor");
        var drumRotorVal = parseFloat(dr.options[dr.selectedIndex].value);
        if (drumRotorVal === 0) {
            return alert("Please Choose A Drum or Rotor Thickness Value");
        }


        //get pinion value
        var pinionVal = document.getElementById('pinion').value;
        // if there is no pinion value
        if (pinionVal.length === 0 || pinionVal === undefined || pinionVal === null) {
            return alert("Please Enter A Pinion Value");
        }
        // if pinion value is not a number
        if (isNaN(pinionVal)) {
            return alert("Pinion Value Must Be A Number");
        } else {
            pinionVal = parseFloat(pinionVal);
        }


        //get overall width value
        var overallWidthVal = document.getElementById('overall-width').value
        // if there is no overall width value
        if (overallWidthVal.length === 0 || overallWidthVal === undefined || overallWidthVal === null) {
            return alert("Please Enter An Overall Width Value");
        }
        // if overall width value is not a number
        if (isNaN(overallWidthVal)) {
            return alert("Overall Width Value Must Be A Number");
        } else {
            overallWidthVal = parseFloat(overallWidthVal);
        }


        //calculate remaining values
        var passengerLengthVal = calculatePassengerLength(overallWidthVal, drumRotorVal, pinionVal).toFixed(3);
        var y = calculateY(passengerLengthVal, brakeSpaceVal).toFixed(3);
        var driverLengthVal = calculateDriverLength(overallWidthVal, drumRotorVal, pinionVal).toFixed(3);
        var x = calculateX(driverLengthVal, brakeSpaceVal).toFixed(3);
        var housingWidthVal = calculateHousingwidth(overallWidthVal, brakeSpaceVal, drumRotorVal).toFixed(3);


        //put the values in their respective places on the page
        //y
        var yText = document.getElementById('y');
        if (yText.length > 0) {
            yText.value = "";
        }
        yText.value = y;

        //x
        var xText = document.getElementById('x');
        if (xText.length > 0) {
            xText.value = "";
        }
        xText.value = x;

        //passenger
        var passengerText = document.getElementById('passenger-axle-length');
        if (passengerText.length > 0) {
            passengerText.value = "";
        }
        passengerText.value = passengerLengthVal;

        //driver
        var driverText = document.getElementById('driver-axle-length');
        if (driverText.length > 0) {
            driverText.value = "";
        }
        driverText.value = driverLengthVal;

        //housing
        var housingText = document.getElementById('housing-width');
        if (housingText.length > 0) {
            housingText.value = "";
        }
        housingText.value = housingWidthVal;
    }

    // rearend axle if statement
    if (sPage.toLowerCase() == "rearendAxle.html".toLowerCase()) {

        //get brake space value
        var bs = document.getElementById("brake-space");
        var brakeSpaceVal = parseFloat(bs.options[bs.selectedIndex].value);
        if (brakeSpaceVal === 0) {
            return alert("Please Choose A Brake Space Value");
        }

        //get Drum/Rotor value
        var dr = document.getElementById("drum-rotor");
        var drumRotorVal = parseFloat(dr.options[dr.selectedIndex].value);
        if (drumRotorVal === 0) {
            return alert("Please Choose A Drum or Rotor Thickness Value");
        }


        //get passenger side value
        var passengerLengthVal = document.getElementById('passenger-axle-length').value;
        // if there is no passenger value
        if (passengerLengthVal.length === 0 || passengerLengthVal === undefined || passengerLengthVal === null) {
            return alert("Please Enter A Passenger Side Value");
        }


        // if passenger side value is not a number
        if (isNaN(passengerLengthVal)) {
            return alert("Passenger Side Value Must Be A Number");
        } else {
            passengerLengthVal = parseFloat(passengerLengthVal);
        }


        //get driver side value
        var driverLengthVal = document.getElementById('driver-axle-length').value;
        // if there is no passenger value
        if (driverLengthVal.length === 0 || driverLengthVal === undefined || driverLengthVal === null) {
            return alert("Please Enter A Driver Side Value");
        }
        // if driver side value is not a number
        if (isNaN(driverLengthVal)) {
            return alert("Driver Side Value Must Be A Number");
        } else {
            driverLengthVal = parseFloat(driverLengthVal);
        }


        //calculate remaining values
        var y = calculateY(passengerLengthVal, brakeSpaceVal).toFixed(3);
        var x = calculateX(driverLengthVal, brakeSpaceVal).toFixed(3);
        var overallWidthVal = calculateOverallWidth(passengerLengthVal, driverLengthVal, drumRotorVal).toFixed(3);
        var housingWidthVal = calculateHousingwidth(overallWidthVal, brakeSpaceVal, drumRotorVal).toFixed(3);
        var pinionVal = calculatePinion(driverLengthVal, passengerLengthVal).toFixed(3);

        //put the values in their respective places on the page
        //y
        var yText = document.getElementById('y');
        if (yText.length > 0) {
            yText.value = "";
        }
        yText.value = y;

        //x
        var xText = document.getElementById('x');
        if (xText.length > 0) {
            xText.value = "";
        }
        xText.value = x;

        //pinion
        var pinionText = document.getElementById('pinion');
        if (pinionText.length > 0) {
            pinionText.value = "";
        }
        pinionText.value = pinionVal;

        //housing
        var housingText = document.getElementById('housing-width');
        if (housingText.length > 0) {
            housingText.value = "";
        }
        housingText.value = housingWidthVal;

        //overall
        var overallText = document.getElementById('overall-width');
        if (overallText.length > 0) {
            overallText.value = "";
        }
        overallText.value = overallWidthVal;
    };

    // rearend housing if statement
    if (sPage.toLowerCase() == "rearendHousing.html".toLowerCase()) {

        //get brake space value
        var bs = document.getElementById("brake-space");
        var brakeSpaceVal = parseFloat(bs.options[bs.selectedIndex].value);
        if (brakeSpaceVal === 0) {
            return alert("Please Choose A Brake Space Value");
        }


        //get Drum/Rotor value
        var dr = document.getElementById("drum-rotor");
        var drumRotorVal = parseFloat(dr.options[dr.selectedIndex].value);
        if (drumRotorVal === 0) {
            return alert("Please Choose A Drum or Rotor Thickness Value");
        }


        //get Y value
        var yVal = document.getElementById('y').value;
        // if there is no passenger value
        if (yVal.length === 0 || yVal === undefined || yVal === null) {
            return alert("Please Enter Y Value");
        }
        // if Y value is not a number
        if (isNaN(yVal)) {
            return alert("Y Value Must Be A Number");
        } else {
            yVal = parseFloat(yVal);
        }


        //get X value
        var xVal = document.getElementById('x').value;
        // if there is no passenger value
        if (xVal.length === 0 || xVal === undefined || xVal === null) {
            return alert("Please Enter X Value");
        }
        // if X value is not a number
        if (isNaN(xVal)) {
            return alert("X Value Must Be A Number");
        } else {
            xVal = parseFloat(xVal);
        }


        //calculate remaining values
        var passengerLengthVal = calculatePassengerLengthWithY(yVal, brakeSpaceVal).toFixed(3);
        var driverLengthVal = calculateDriverLengthWithX(xVal, brakeSpaceVal).toFixed(3);
        var overallWidthVal = calculateOverallWidth(parseFloat(passengerLengthVal), parseFloat(driverLengthVal), drumRotorVal).toFixed(3);
        var housingWidthVal = calculateHousingwidth(overallWidthVal, brakeSpaceVal, drumRotorVal).toFixed(3);
        var pinionVal = calculatePinion(parseFloat(driverLengthVal), parseFloat(passengerLengthVal)).toFixed(3);


        //put the values in their respective places on the page
        //passenger
        var passengerText = document.getElementById('passenger-axle-length');
        if (passengerText.length > 0) {
            passengerText.value = "";
        }
        passengerText.value = passengerLengthVal;

        //driver
        var driverText = document.getElementById('driver-axle-length');
        if (driverText.length > 0) {
            driverText.value = "";
        }
        driverText.value = driverLengthVal;


        //overall
        var overallText = document.getElementById('overall-width');
        if (overallText.length > 0) {
            overallText.value = "";
        }
        overallText.value = overallWidthVal;

        //housing
        var housingText = document.getElementById('housing-width');
        if (housingText.length > 0) {
            housingText.value = "";
        }
        housingText.value = housingWidthVal;

        //pinion
        var pinionText = document.getElementById('pinion');
        if (pinionText.length > 0) {
            pinionText.value = "";
        }
        pinionText.value = pinionVal;
    }
});

//The many calculations are below

//calculate pinion
function calculatePinion(driverSideLength, passengerSideLength) {
    var p = (4.375 - ((passengerSideLength - driverSideLength))) / 2;

    if (p.toFixed(3) == -0.001) {
        return 0.000;
    } else {
        return p;
    }
}

// Calculate Driver Axle Length
function calculateDriverLength(overallWidth, drumRotor, pinion) {
    return ((overallWidth - (2 * drumRotor)) / 2) - 2.751 + pinion;
}

// Calculate Driver Axle Length if you dont have the overall width
function calculateDriverLengthWithX(x, brakeSpace) {
    return x + (brakeSpace + 3.135);
}

// Calculate Housing Width
function calculateHousingwidth(overallWidth, brakeSpace, drumRotor) {
    return overallWidth - (2 * (brakeSpace + drumRotor));
}

// Calculate Overall Width
function calculateOverallWidth(driverSideLength, passengerSideLength, drumRotor) {
    return driverSideLength + passengerSideLength + (2 * (drumRotor)) + 1.125;
}

// Calculate Passenger Axle Length
function calculatePassengerLength(overallWidth, drumRotor, pinion) {
    return ((overallWidth - (2 * drumRotor)) / 2) + 1.626 - pinion
}

// Calculate Passenger Axle Length if you dont have the overall width
function calculatePassengerLengthWithY(y, brakeSpace) {
    return y + (brakeSpace + 5.76);
}

// Calculate X
function calculateX(driverSideLength, brakeSpace) {
    return driverSideLength - (brakeSpace + 3.135);
}

// calculate Y
function calculateY(passengerSideLength, brakeSpace) {
    return passengerSideLength - (brakeSpace + 5.76);
}