function windowLoad()
{
    //Initialize worksheet cells, add handlers
    
    //Recurring Yearly Medical Expenses
    for (i = 1; i <= 9; i++)
    {
        var count = $get('count' + i);
        var amount = $get('amount' + i);
        
        $addHandler(count, 'change', calculateWorksheet);
        $addHandler(amount, 'change', calculateWorksheet);
    }
    
    //Once Yearly Medical Expenses
    for (i = 10; i <= 13; i++)
    {
        var tally = $get('tally' + i);
        
        $addHandler(tally, 'change', calculateWorksheet);
    }
    
    //Daycare Expenses
    var amount = $get('daycareAmount');
    $addHandler(amount, 'change', calculateWorksheet);
    
    //Tax Bracket Dropdown
    var taxBracket = $get('ddlTaxBracket');
    $addHandler(taxBracket, 'change', calculateWorksheet);
    
    //Elections
    var medicalElection = $get('medicalElection');
    $addHandler(medicalElection, 'change', calculateWorksheet);
    var daycareElection = $get('daycareElection');
    $addHandler(daycareElection, 'change', calculateWorksheet);
    
    //Paycheck Section
    var payroll = $get('ddlPayroll');
    $addHandler(payroll, 'change', calculateWorksheet);   
    var customPayroll = $get('customPayroll');
    $addHandler(customPayroll, 'change', calculateWorksheet);
    var currentGrossPay = $get('currentGrossPay');
    $addHandler(currentGrossPay, 'change', calculateWorksheet);
    var currentNetPay = $get('currentNetPay');
    $addHandler(currentNetPay, 'change', calculateWorksheet);
    
    calculateWorksheet();
    
}

function calculateWorksheet()
{
    
    var recurringTotal = 0;
    var onceYearlyTotal = 0;
    var daycareTotal = 0;
    
    //Recurring Expenses
    for (i = 1; i <= 9; i++)
    {
        var count = $get('count' + i);
        var amount = $get('amount' + i);
        var tally = $get('tally' + i);
        var result = 0;
        
        result = Number(count.value) * Number(amount.value);
        recurringTotal = recurringTotal + result;
        tally.innerHTML = '$' + addCommas(result.toFixed(2));
        
    }
    
    //Once Yearly Expenses
    for (i = 10; i <= 13; i++)
    {
        var tally = $get('tally' + i);
        var result = 0;
        
        result = Number(tally.value);
        onceYearlyTotal = onceYearlyTotal + result;
    }
    
    
    //Medical Total
    //Gets
    var medicalElection = $get('medicalElection');
    //Sets
    var medicalTally = $get('medicalTotal');
    var totalMedicalElection = $get('totalMedicalElection');
    
    var medicalTotal = onceYearlyTotal + recurringTotal;
    var medicalTotalElection = Number(medicalElection.value)
    
    medicalTally.innerHTML = "$" + addCommas(medicalTotal.toFixed(2));
    totalMedicalElection.innerHTML = "$" + addCommas(medicalTotalElection.toFixed(2));
    
    //Daycare Expenses
    //Gets
    var daycareAmount = $get('daycareAmount');
    var daycareElection = $get('daycareElection');
    //Sets
    var daycareTally = $get('daycareTotal');
    var totalDaycareElection = $get('totalDaycareElection');
    
    daycareTotal = (Number(daycareAmount.value) * 52);
    daycareTotalElection = Number(daycareElection.value);
    
    daycareTally.innerHTML = "$" + addCommas(daycareTotal.toFixed(2));
    totalDaycareElection.innerHTML = "$" + addCommas(daycareTotalElection.toFixed(2));
    
    //Paycheck Calculations
    //Gets
    var payroll = $get('ddlPayroll');
    var customPayRow = $get('customPayRow');
    var currentGrossPay = $get('currentGrossPay');
    var currentNetPay = $get('currentNetPay'); 
    var taxBracket = $get('ddlTaxBracket');
    
    //Sets
    var grandTotalElection = $get('grandTotalElection');
    var totalElection = $get('totalElection');
    var customPayroll = $get('customPayroll');
    var payDeduction = $get('paycheckDeduction');
    var newGrossPay = $get('newGrossPay');
    var newNetPay = $get('newNetPay'); 
    var taxSavings = $get('taxSavings');
    var taxRate = $get('taxRate');
    var paycheckTaxes = $get('paycheckTaxes');
    var changeNetPay = $get('changeNetPay');
    
    
    var taxTotal = 0;
    var taxPct = 0;
    var electionTotal = 0;
    var payPeriods = 0;
    var paycheckDeduction = 0;
    var grossPay = 0;
    var netPay = 0;
    var taxPay = 0;
    var netChange = 0;
    
    taxPct = Number(taxBracket.value);
    electionTotal = daycareTotalElection + medicalTotalElection;
    taxTotal = electionTotal * taxPct;
    
    if (payroll.value == "other")
    {
        //Show custom payroll row
        customPayRow.style.visibility = "visible";
        payPeriods = customPayroll.value;
    }
    else
    {
        //Hide custom payroll row
        customPayRow.style.visibility = "hidden";
        payPeriods = payroll.value;
    }
    
    paycheckDeduction = (electionTotal / payPeriods);
    grossPay = (Number(currentGrossPay.value) - paycheckDeduction);
    taxPay = (grossPay * taxPct);
    netPay = (grossPay - taxPay);
    netChange = (netPay - parseFloat(currentNetPay.value)); 
    
    totalElection.innerHTML = "$" + addCommas(electionTotal.toFixed(2));
    grandTotalElection.innerHTML = "$" + addCommas(electionTotal.toFixed(2));
    payDeduction.innerHTML = "$" + addCommas(paycheckDeduction.toFixed(2));
    newGrossPay.innerHTML = "$" + addCommas(grossPay.toFixed(2));
    paycheckTaxes.innerHTML = "$" + addCommas(taxPay.toFixed(2));
    newNetPay.innerHTML = "$" + addCommas(netPay.toFixed(2));
    changeNetPay.innerHTML = "$" + addCommas(netChange.toFixed(2));
    
    taxRate.innerHTML = (taxPct * 100).toFixed(0) + "%";
    taxSavings.innerHTML = "$" + addCommas(taxTotal.toFixed(2));;
    
        
}

function addCommas(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;
}

Sys.Application.add_init(windowLoad);
