<!--
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 < 7150){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 29050){
                base = 715.00; value = 7150; rate = .15;
            }
            else if (income < 70350 ){
                base = 4000.00; value = 29050; rate = .25;
            }
            else if (income < 146750){
                base = 14325.00; value = 70350 ; rate = .28;
            }
	        else if (income < 319100){
                base = 35717.00; value = 146750; rate = .33;
		    }
            else{
                base = 92592.50; value = 319100; rate = .35;
            }
            break;
        case "2":
            if (income < 14300){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 58100){
                base = 1430.00; value = 14300; rate = .15;
            }
            else if (income < 117250){
                base = 8000; value = 58100; rate = .25;
            }
            else if (income < 178650){
                base = 22787.50; value = 117250; rate = .28;
            }
	        else if (income < 319100){
                base = 39979.50; value =  178650; rate = .33;
         	}
            else{
                base = 86328; value = 319100; rate = .35;
            }
            break;
        case "3":  // same as single (lower 2 brackets)
            if (income < 7150){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 29050){
                base = 715.00; value = 7150; rate = .15;
            }
            else if (income < 58625){
                base = 4000.00; value = 29050; rate = .25;
            }
            else if (income < 89325){
                base = 11393.75 ; value = 58625; rate = .28;
            }
	        else if (income < 159550){
                base = 19989.75 ; value = 89325; rate = .33;
		    }
            else{
                base = 43164.00; value = 159550; rate = .35;
            }
            break;
        case "4":  // no change
            if (income < 10200){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 38900 ){
                base = 1020.00; value = 10200; rate = .15;
            }
            else if (income < 100500){
                base = 5325; value = 38900 ; rate = .25;
            }
            else if (income < 162700){
                base = 20725; value = 100500; rate = .28;
            }
		    else if (income <  319100){
                base = 38141; value = 162700; rate = .33;
            }
            else{
                base = 89753.00; value = 319100; rate = .35;
            }
            break;
        case "5": // same as MFJ
            if (income < 14300){
                base = 0; value = 0; rate = .10;
            }
            else if (income < 58100){
                base = 1430.00; value = 14300; rate = .15;
            }
            else if (income < 117250){
                base = 8000; value = 58100; rate = .25;
            }
            else if (income < 178650){
                base = 22787.50; value = 117250; rate = .28;
            }
	        else if (income < 319100){
                base = 39979.50; value =  178650; rate = .33;
         	}
            else{
                base = 86328; value = 319100; rate = .35;
            }
            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 = 4850;
            break;
        case "2":
            value = 9700;
            break;
        case "3":
            value = 4850;
            break;
        case "4":
            value = 7150;
            break;
        case "5":
            value = 9700;
            break;
    }
    return value;
}

function GetPersonalExemption(status,dependents)
{
    var value = 0;
    switch (status)
    {
        case "1":
            value = (1 * 3100);
            break;
        case "2":
            value = (2 * 3100);
            break;
        case "3":
            value = (1 * 3100);
            break;
        case "4":
            value = (1 * 3100);
            break;
        case "5":
            value = (1 * 3100);
            break;
    }
    value = value + (dependents * 3100);
    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;
    taxable = 0;
    var StandardDeduction = 0;
    var PersonalExemption = 0;
    var Deduction = 0;
    SetInput(input);
    StandardDeduction = GetStandardDeduction(status);
    PersonalExemption = GetPersonalExemption(status,dependents)
    form.exemptions.value = PersonalExemption;
    if (form.ideduction.value == null || form.ideduction.value <= 0)
    {
        Deduction = StandardDeduction;
        form.deduction.value = Deduction;
    }
    else if (form.ideduction.value > 0){ 
        Deduction = GetItemizedDeduction(form);
        form.deduction.value = 0;
    }
    taxable = (form.income.value - Deduction) - PersonalExemption;
    if (taxable < 0) taxable = 0;
    tax = TaxRate(taxable, form.status.options[form.status.selectedIndex].value); 
    form.tax.value = "" + tax;
    form.taxable.value = "" + taxable;
    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;
    }
    loops++; 
}
// -->

