Payroll Calculator Adp
function calculatePayroll() {
var frequency = parseFloat(document.getElementById('payFrequency').value);
var gross = parseFloat(document.getElementById('grossPay').value);
var status = document.getElementById('filingStatus').value;
var stateRate = parseFloat(document.getElementById('stateTaxRate').value) / 100;
var preTax = parseFloat(document.getElementById('preTaxDeductions').value);
var postTax = parseFloat(document.getElementById('postTaxDeductions').value);
if (isNaN(gross) || gross <= 0) {
alert("Please enter a valid Gross Pay amount.");
return;
}
if (isNaN(preTax)) preTax = 0;
if (isNaN(postTax)) postTax = 0;
if (isNaN(stateRate)) stateRate = 0;
// 1. Taxable Income (Pre-tax deductions reduce taxable base)
var taxableIncome = gross – preTax;
if (taxableIncome < 0) taxableIncome = 0;
// 2. FICA (Social Security 6.2%, Medicare 1.45%)
var socSec = taxableIncome * 0.062;
var medicare = taxableIncome * 0.0145;
// 3. Federal Income Tax (Simplified Annualized Brackets for 2024)
var annualTaxable = taxableIncome * frequency;
var annualFedTax = 0;
if (status === "single") {
if (annualTaxable <= 11600) annualFedTax = annualTaxable * 0.10;
else if (annualTaxable <= 47150) annualFedTax = 1160 + (annualTaxable – 11600) * 0.12;
else if (annualTaxable <= 100525) annualFedTax = 5426 + (annualTaxable – 47150) * 0.22;
else if (annualTaxable <= 191950) annualFedTax = 17168.50 + (annualTaxable – 100525) * 0.24;
else annualFedTax = 39110.50 + (annualTaxable – 191950) * 0.32;
} else if (status === "married") {
if (annualTaxable <= 23200) annualFedTax = annualTaxable * 0.10;
else if (annualTaxable <= 94300) annualFedTax = 2320 + (annualTaxable – 23200) * 0.12;
else if (annualTaxable <= 201050) annualFedTax = 10852 + (annualTaxable – 94300) * 0.22;
else annualFedTax = 34337 + (annualTaxable – 201050) * 0.24;
} else { // Head of Household
if (annualTaxable <= 16550) annualFedTax = annualTaxable * 0.10;
else if (annualTaxable <= 63100) annualFedTax = 1655 + (annualTaxable – 16550) * 0.12;
else if (annualTaxable <= 100500) annualFedTax = 7241 + (annualTaxable – 63100) * 0.22;
else annualFedTax = 15469 + (annualTaxable – 100500) * 0.24;
}
var fedTaxPerPeriod = annualFedTax / frequency;
// 4. State Tax
var stateTax = taxableIncome * stateRate;
// 5. Total Deductions (Taxes + Post-tax)
var totalDeductions = socSec + medicare + fedTaxPerPeriod + stateTax + postTax;
// 6. Net Pay
var netPay = taxableIncome – (socSec + medicare + fedTaxPerPeriod + stateTax) – postTax;
// Display Results
document.getElementById('resGross').innerText = "$" + gross.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resSocSec').innerText = "- $" + socSec.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMedicare').innerText = "- $" + medicare.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resFedTax').innerText = "- $" + fedTaxPerPeriod.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resStateTax').innerText = "- $" + stateTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resDeductions').innerText = "- $" + (preTax + postTax).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resNetPay').innerText = "$" + netPay.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('payrollResults').style.display = 'block';
}