<!--
var loops = 0;
function FormatInput( str ) { 
    var str2 = ""; 
    for ( var c = 0; c < str.length; c++ ){ 
        var ch = str.substring(c, c + 1);
        if ( (ch >= "0" && ch <= "9") || ch == '.' ){ 
            str2 += ch;
        }
    }
return parseFloat(str2); 
}

function TaxRate( income, status ){
    if (income < 25){
        if ( income < 5 ) return 0;
        if ( income < 15 ) return 1;
        if ( income < 25 ) return 2;
    }
    else{
        if (income < 3000) step = 25;
        else step = 50;
    }
    switch (status){
        case "1":
            if (income < 7000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 28400){
                base = 700.00; value = 7000; rate = .15;
            }
            else if (income < 68800){
                base = 3910.00; value = 28400; rate = .25;
            }
            else if (income < 143500){
                base = 14010.00; value = 68800; rate = .28;
            }
	        else if (income < 311950){
                base = 34926.00; value = 143500; rate = .33;
		    }
            else{
                base = 90514.50; value = 311950; rate = .35;
            }
            break;
        case "2":
            if (income < 14000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 56800){
                base = 1400.00; value = 14000; rate = .15;
            }
            else if (income < 114650){
                base = 7820; value = 56800; rate = .25;
            }
            else if (income < 174700){
                base = 22282.50; value = 114650; rate = .28;
            }
	        else if (income < 311950){
                base = 39096.50; value =  174700; rate = .33;
         	}
            else{
                base = 84389; value = 311950; rate = .35;
            }
            break;
        case "3":  // same as single (lower 2 brackets)
            if (income < 7000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 28400){
                base = 700.00; value = 7000; rate = .15;
            }
            else if (income < 57325){
                base = 3910.00; value = 28400; rate = .25;
            }
            else if (income < 87350){
                base = 11141.25; value = 57325; rate = .28;
            }
	        else if (income < 155975){
                base = 19548.25; value = 87350; rate = .33;
		    }
            else{
                base = 42194.50; value = 155975; rate = .35;
            }
            break;
        case "4":  // no change
            if (income < 10000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 38050 ){
                base = 1000.00; value = 10000; rate = .15;
            }
            else if (income < 98250){
                base = 5207.50; value = 38050 ; rate = .25;
            }
            else if (income < 159100){
                base = 20257.50; value = 98250; rate = .28;
            }
		    else if (income <  311950){
                base = 37295.50; value = 159100; rate = .33;
            }
            else{
                base = 87736.00; value = 311950; rate = .35;
            }
            break;
        case "5": // same as MFJ
            if (income < 14000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 56800){
                base = 1400.00; value = 14000; rate = .15;
            }
            else if (income < 114650){
                base = 7820; value = 56800; rate = .25;
            }
            else if (income < 174700){
                base = 22282.50; value = 114650; rate = .28;
            }
	        else if (income < 311950){
                base = 39096.50; value =  174700; rate = .33;
         	}
            else{
                base = 84389; value = 311950; rate = .35;
            }
            break;
    }
    tmp = income - (income % step) + step / 2;
    return Math.round((tmp - value) * rate + base);
}

function TaxRateOld( income, status ){
    if (income < 25){
        if ( income < 5 ) return 0;
        if ( income < 15 ) return 1;
        if ( income < 25 ) return 2;
    }
    else{
        if (income < 3000) step = 25;
        else step = 50;
    }
    switch (status){
        case "1":
            if (income < 6000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 28400){
                base = 600.00; value = 6000; rate = .15;
            }
            else if (income < 68800){
                base = 3960.00; value = 28400; rate = .27;
            }
            else if (income < 143500){
                base = 14868.00; value = 68800; rate = .30;
            }
	    else if (income < 311950){
                base = 37278.00; value = 143500; rate = .35;
		}
            else{
                base = 96235.50; value = 311950; rate = .386;
            }
            break;
        case "2":
            if (income < 12000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 47450){
                base = 1200.00; value = 12000; rate = .15;
            }
            else if (income < 114650){
                base = 6517.50; value = 47450; rate = .27;
            }
            else if (income < 174700){
                base = 24661.50; value = 114650; rate = .30;
            }
	   else if (income < 311950){
                base =  42676.50; value =  174700; rate = .35;
         	}

            else{
                base = 90714.00; value = 311950; rate = .386;
            }
            break;
        case "3":
            if (income < 6000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 23725){
                base = 600.00; value = 6000; rate = .15;
            }
            else if (income < 57325){
                base = 3258.75; value = 23725; rate = .27;
            }
            else if (income < 87350){
                base = 12330.75; value = 57325; rate = .30;
            }
		else if (income <  155975){
                base = 21338.25; value =  87350; rate =.35;
	    }
            else{
                base = 45357.00; value = 155975; rate = .386;
            }
            break;
        case "4":
            if (income < 10000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 38050 ){
                base = 1000.00; value = 10000; rate = .15;
            }
            else if (income < 98250){
                base = 5207.50; value = 38050 ; rate = .27;
            }
            else if (income < 159100){
                base = 21461.50; value = 98250; rate = .30;
            }
		else if (income <  311950){
                base = 39716.50; value = 159100; rate = .35;
            }

            else{
                base = 93214.00; value = 311950; rate = .386;
            }
            break;
        case "5":
            if (income < 12000){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 47450){
                base = 1200.00; value = 12000; rate = .15;
            }
            else if (income < 114650){
                base = 6517.50; value = 47450; rate = .27;
            }
            else if (income < 174700){
                base = 24661.50; value = 114650; rate = .30;
            }
 	    else if (income < 311950){
                base =  42676.50; value =  174700; rate = .35;
            }

            else{
                base = 90714.00; value = 311950; rate = .386;
            }
            break;
    }
    tmp = income - (income % step) + step / 2;
    return Math.round((tmp - value) * rate + base);
}


function SetInput(input){
    var form = input.form;
    var str = "";
    if (form.income.value.length > 0)
        if (form.income.value.indexOf(".") > 0)
            form.income.value = GetDollars(form.income);
    if (form.payments.value.length > 0)
        if (form.payments.value.indexOf(".") > 0)
            form.payments.value = GetDollars( form.payments );
    if (form.deduction.value.length > 0)
        if (form.deduction.value.indexOf(".") > 0)
            form.deduction.value = GetDollars( form.deduction );
    if (form.ideduction.value.length > 0)
        if (form.ideduction.value.indexOf(".") > 0)
            form.ideduction.value = GetDollars( form.ideduction );
}

function GetDollars( str ){
    var tmp = "" + str.value;
    var dollars = 0;
    var cents = parseInt( tmp.substring( tmp.indexOf(".")+1, tmp.length ) );
    if ( cents >= 50 ) dollars = FormatInput( tmp )+1;
    else dollars = FormatInput( tmp );
    tmp = "" + dollars;
    return tmp.substring( 0, tmp.indexOf( "." ) );
}

function GetStandardDeduction(status)
{
    var value = 0;
    switch (status)
    {
        case "1":
            value = 4750;
            break;
        case "2":
            value = 9500;
            break;
        case "3":
            value = 4750;
            break;
        case "4":
            value = 7000;
            break;
        case "5":
            value = 9500;
            break;
    }
    return value;
}

function GetPersonalExemption(status,dependents)
{
    var value = 0;
    switch (status)
    {
        case "1":
            value = (1 * 3050);
            break;
        case "2":
            value = (2 * 3050);
            break;
        case "3":
            value = (1 * 3050);
            break;
        case "4":
            value = (1 * 3050);
            break;
        case "5":
            value = (1 * 3050);
            break;
    }
    value = value + (dependents * 3050);
    return value;
}

function GetStandardDeductionOld(status)
{
    var value = 0;
    switch (status)
    {
        case "1":
            value = 4750;
            break;
        case "2":
            value = 7950;
            break;
        case "3":
            value = 3975;
            break;
        case "4":
            value = 7000;
            break;
        case "5":
            value = 7950;
            break;
    }
    return value;
}

function GetItemizedDeduction(form)
{
    var value = 0;
    value = form.ideduction.value;
    return parseInt(value);
}


function CalculateTax(input){
    var form = input.form;
    var status = form.status.options[form.status.selectedIndex].value;
    var dependents = form.dependents.value;
    tax = 0;
    taxold = 0;
    taxable = 0;
    taxableold = 0;
    var StandardDeduction = 0;
    var StandardDeductionOld = 0;
    var PersonalExemption = 0;
    var Deduction = 0;
    var DeductionOld = 0;
    SetInput(input);
    StandardDeduction = GetStandardDeduction(status);
    StandardDeductionOld = GetStandardDeductionOld(status);
    PersonalExemption = GetPersonalExemption(status,dependents)
    form.exemptions.value = PersonalExemption;
    //form.exemptionsold.value = PersonalExemption;
    if (form.ideduction.value == null || form.ideduction.value <= 0)
    {
        Deduction = StandardDeduction;
        DeductionOld = StandardDeductionOld;
        form.deduction.value = Deduction;
        //form.deductionold.value = DeductionOld;
    }
    else if (form.ideduction.value > 0){ 
        Deduction = GetItemizedDeduction(form);
        DeductionOld = GetItemizedDeduction(form);
        form.deduction.value = 0;
        //form.deductionold.value = 0;
    }
    taxable = (form.income.value - Deduction) - PersonalExemption;
    taxableold = (form.income.value - DeductionOld) - PersonalExemption;
    if (taxable < 0) taxable = 0;
    if (taxableold < 0) taxableold = 0;
    tax = TaxRate(taxable, form.status.options[form.status.selectedIndex].value); 
    taxold = TaxRateOld(taxableold, form.status.options[form.status.selectedIndex].value); 
    form.tax.value = "" + tax;
    //form.taxold.value = "" + taxold;
    form.taxable.value = "" + taxable;
    //form.taxableold.value = "" + taxableold;
    var payments = form.payments.value;
    if (payments > tax) {
        var refund = payments - tax;
        form.refund.value = refund;
        form.due.value = 0;
    }
    else if (payments < tax) {
        var due = tax - payments;
        form.due.value = due;
        form.refund.value = 0;
    }
    else{
        form.due.value = 0;
        form.refund.value = 0;
    }
    if (payments > taxold) {
        var refundold = payments - taxold;
        //form.refundold.value = refundold;
        //form.dueold.value = 0;
    }
    else if (payments < taxold) {
        var dueold = taxold - payments;
        //form.dueold.value = dueold;
        //form.refundold.value = 0;
    }
    else{
        //form.dueold.value = 0;
        //form.refundold.value = 0;
    }
	form.savings.value = taxold - tax
    loops++; 
}
// -->

