House Tax Plan 12/02/2017

Graph of cuts by income

HTML

<h1>House Tax cut (12/02/2017):</h1>

<form onsubmit="return false">
  <label>
  Home:
  <select name="own" onchange="updateGraph()">
    <option value="true">Own</option>
    <option value="false" selected>Rent</option>
  </select>
  </label>
  <label>
  Status:
  <select name="married" onchange="updateGraph()">
    <option value="true">Married</option>
    <option value="false">Single</option>
  </select>
  </label>
  <label>
  Children:
  <select name="children" onchange="updateGraph()">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  </select>
  </label>
  <label>
  State:
  <select name="state" onchange="updateGraph()">
    <option value="CA">CA</option>
    <option value="NY">NY</option>
    <option value="WA">WA</option>
    <option value="N/A">N/A</option>
  </select>
  </label>
  <label>
  Home value / Net Income
  <select name="houseValue" onchange="updateGraph()">
    <option value="2">2</option>
    <option value="2.5">2.5</option>
    <option value="3">3</option>
    <option value="3.5">3.5</option>
    <option value="4" selected>4</option>
    <option value="4.5">4.5</option>
    <option value="5">5</option>
    <option value="5.5">5.5</option>
    <option value="6">6</option>
    <option value="6.5">6.5</option>
    <option value="7">7</option>
    <option value="8.5">8</option>
    <option value="8">8.5</option>
    <option value="9">9</option>
    <option value="9.5">9.5</option>
    <option value="10">10</option>
  </select>
  </label>
</form>
<br />

<div id="chartContainer" style="height: 400px; width: 100%;"></div>

<div>
  <h2>Notes</h2> Home - Own: assumes the person does 20% down and mortgage rate of 4% for 30 years.
  <br /> Since the bill has a limit of 10K for property tax it hurts rich people if they are buying huge houses. If rich people buy small houses it hurts them much less.
  <br />
  <br />CA: state income tax +...

CSS

l

JavaScript

(function() {
  var debugMode = false;
  var person = {
    // HTML form sets own, married, children, state
    charityRate: 0, // 0%
    //charityRate: .1, // 10% (pretax)
    medicalRate: 0, // (pretax %)
    downPayment: .2, // 20% of home value
    mortgageRate: .04, // 4% for 30 year
    homeToSalary: .20, // 20% of salary to mortgage payment
  }

  let salaries = [];
  for (let i = 50000; i <= 1200000; i += 1000) {
    salaries.push(i);
  }

  if (debugMode) {
    salaries = [2000000];
  }

  const defaultConfig = {
    brackets: [
      {s:      0, m:      0, r: .10},
      {s:   9525, m:  19050, r: .15},
      {s:  38700, m:  77400, r: .25},
      {s:  93700, m: 156150, r: .28},
      {s: 195450, m: 237950, r: .33},
      {s: 424950, m: 424950, r: .35},
      {s: 426700, m: 480050, r: .396},
    ],
    deductionLimits: {
      propertyTax: -1,
      stateTax: -1,
      charity: -1,
      medical: -1,
      mortgageInterest: person.mortgageRate * 1000000,
    },
    personalExemption: {amount: 4150},
    standardDeduction: {s: 6500, m: 13000},
    childTaxCredit: {amount: 1000, s: 75000, m: 110000},
    phaseout: {m: 305000, s: 254000},
    phaseoutRate: {m: .03, s: .03},

    amt: {
      exemption: {s: 55400, m: 86200},
      phaseout: {s: 123100, m: 164100},
      amtPhaseoutRate: 0.25,

      // nothing to phase out
      phaseoutRate: {m: 0, s: 0},

      brackets: [
        {s:      0, m:      0, r: .26},
        {s: 191500, m: 191500, r: .28},
      ],
    },
  };

  const houseConfig = {
    brackets: [
      {s:      0, m:       0, r: .12},
      {s:  45000, m:   90000, r: .25},
      {s: 200000, m:  260000, r: .35},
      {s: 500000, m: 1000000, r: .396},
    ],
    deductionLimits: {
      propertyTax: 10000,
      stateTax: 0,
      charity: -1,
      medical: -1,
      mortgageInterest: person.mortgageRate * 500000
    },
    personalExemption: {amount: 0},
    phaseout: {m: 305000, s: 254000},

    // no pease phaseout
    phaseoutRate: {m:...