function insertCommas(isNum) {
    tmp = parseFloat(isNum);
    tmp = tmp.toFixed(2);
    return tmp.toString().split('').reverse().join('').replace(/(\d{3})/g,'$1,').split('').reverse().join('').replace(/^,/,'');
}

function calcSavings() {

    var hhInCome    = parseFloat(document.getElementById('hhincome').value);
    var outOfPocket = parseFloat(document.getElementById('outofpocket').value);
    var fileStatus  = document.getElementById('status').value;
    var taxRate     = 0;
    var estFed      = 0;
    var estFedwo    = 0;
    var fica        = 0.0765;
    var savingPct   = 0;
    var difference  = 0;
    var hhInComeC   = 0;
    var taxRateC    = 0;

    if (isNaN(hhInCome)) {
        hhInCome = 0;
    }
    if (isNaN(outOfPocket)) {
        outOfPocket = 0;
    }

    difference = hhInCome - outOfPocket;

    if (difference < 0) {
        return;
    }

    if (fileStatus == "single") {
        if (difference > 0) {
            taxRate 	= .1;
            hhInComeC   = 0;
            taxRateC    = 0;
        }		
        if (difference > 7825) {
            taxRate 	= 0.15;
            hhInComeC   = 7825;
            taxRateC    = 782.5;
        }		
        if (difference > 31850) {
            taxRate 	= 0.25;
            hhInComeC   = 31850;
            taxRateC    = 4386.25;
        }		
        if (difference > 77100) {
            taxRate 	= 0.28;
            hhInComeC   = 77100;
            taxRateC    = 15698.75;
        }		
        if (difference > 160850) {
            taxRate 	= .33;
            hhInComeC   = 160850;
            taxRateC    = 39148.75;
        }
		
        if (difference > 349700) {
            taxRate 	= .35;
            hhInComeC   = 349700;
            taxRateC    = 101469.25;
        }		
    }

    if (fileStatus == "marriedJoint") {
        if (difference > 0) {
            taxRate 	= .1;
            hhInComeC   = 0;
            taxRateC    = 0;
        }		
        if (difference > 15650) {
            taxRate 	= .15;
            hhInComeC   = 15650;
            taxRateC    = 1565;
        }		
        if (difference > 63700) {
            taxRate 	= .25;
            hhInComeC   = 63700;
            taxRateC    = 8772.5;
        }		
        if (difference > 128500) {
            taxRate 	= .28;
            hhInComeC   = 128500;
            taxRateC    = 24972.5;
        }		
        if (difference > 195850) {
            taxRate 	= .33;
            hhInComeC   = 195850;
            taxRateC    = 43830.5;
        }		
        if (difference > 349700) {
            taxRate 	= .35;
            hhInComeC   = 349700;
            taxRateC    = 94601;
        }	
    }

    if (fileStatus == "marriedSep") {	
        if (difference > 0) {
            taxRate 	= .1;
            hhInComeC   = 0;
            taxRateC    = 0;
        }		
        if (difference > 7825) {
            taxRate 	= .15;
            hhInComeC   = 7825;
            taxRateC    = 782.5;
        }		
        if (difference > 31850) {
            taxRate 	= .25;
            hhInComeC   = 31850;
            taxRateC    = 4386.25;
        }		
        if (difference > 64250) {
            taxRate 	= .28;
            hhInComeC   = 64250;
            taxRateC    = 12486.25;
        }		
        if (difference > 97925) {
            taxRate 	= .33;
            hhInComeC   = 97925;
            taxRateC    = 21915.25;
        }	
        if (difference > 175850) {
            taxRate 	= .35;
            hhInComeC   = 174850;
            taxRateC    = 47300.5;
        }
    }

    if (fileStatus == "headHousehold") {	
        if (difference > 0) {
            taxRate     = 0.1;
            hhInComeC   = 0;
            taxRateC    = 0;
        }		
        if (difference > 11200) {
            taxRate 	= 0.15;
            hhInComeC   = 11200;
            taxRateC    = 1120;
        }		
        if (difference > 42650) {
            taxRate = 0.25;
            hhInComeC   = 42650;
            taxRateC    = 5837.5;
        }		
        if (difference > 110100) {
            taxRate 	= 0.28;
            hhInComeC   = 110100;
            taxRateC    = 22700;
        }		
        if (difference > 175350) {
            taxRate 	= 0.33;
            hhInComeC   = 178350;
            taxRateC    = 41810;
        }		
        if (difference > 349700) {
            taxRate     = 0.35;
            hhInComeC   = 349700;
            taxRateC    = 98355;
        }	
    }
    
    estFed = ((hhInCome - outOfPocket) - hhInComeC) * taxRate + taxRateC;
    estFedwo = (hhInCome  - hhInComeC) * taxRate + taxRateC;

    savingPct = Math.round((((hhInCome - outOfPocket) - estFed - ((hhInCome - outOfPocket) * fica)) - (hhInCome - estFedwo - (hhInCome * fica) - outOfPocket)) / outOfPocket * 100);

    document.getElementById('wAnnInc').innerHTML            = insertCommas(hhInCome);
    document.getElementById('woAnnInc').innerHTML           = insertCommas(hhInCome);
    document.getElementById('wMoneyLASIK').innerHTML        = insertCommas(outOfPocket);
    document.getElementById('wTaxableIncome').innerHTML     = insertCommas(hhInCome - outOfPocket);
    document.getElementById('woTaxableIncome').innerHTML    = insertCommas(hhInCome);
    document.getElementById('wEstFed').innerHTML            = insertCommas(estFed);
    document.getElementById('woEstFed').innerHTML           = insertCommas(estFedwo);
    document.getElementById('wFICA').innerHTML              = insertCommas((hhInCome - outOfPocket) * fica);
    document.getElementById('woFICA').innerHTML             = insertCommas(hhInCome * fica);
    document.getElementById('woLASIKExp').innerHTML         = insertCommas(outOfPocket);
    document.getElementById('wLASIKExp').innerHTML          = 0;
    document.getElementById('wNetIncome').innerHTML         = insertCommas((hhInCome - outOfPocket) - estFed - ((hhInCome - outOfPocket) * fica));
    document.getElementById('woNetIncome').innerHTML        = insertCommas(hhInCome - estFedwo - (hhInCome * fica) - outOfPocket);
    document.getElementById('savAmt').innerHTML             = insertCommas(((hhInCome - outOfPocket) - estFed - ((hhInCome - outOfPocket) * fica)) - (hhInCome - estFedwo - (hhInCome * fica) - outOfPocket));
    document.getElementById('savingPct').innerHTML          = isNaN(savingPct) ? 0 : savingPct;

    document.getElementById('savAmtHidden').value    = document.getElementById('savAmt').innerHTML;
    document.getElementById('savingPctHidden').value = document.getElementById('savingPct').innerHTML;
}

