var Calculators = Calculators || {};
Calculators.planning = Calculators.planning || {};
Calculators.planning.tables = Calculators.planning.tables || {};

Calculators.planning.tables.Joint = function Joint() {
  this.table = {
    40 : [64.4, 63.6, 62.7, 61.9, 61.1, 60.2, 59.4, 58.7, 57.9, 57.1, 56.4, 55.7, 55, 54.3, 53.7, 53, 52.4, 51.8, 51.3, 50.8, 50.2, 49.8, 49.3, 48.9, 48.5, 48.1, 47.7, 47.4, 47.1, 46.8, 46.5, 46.3, 46, 45.8, 45.6, 45.5, 45.3, 45.1, 45, 44.9, 44.7, 44.6, 44.5, 44.5, 44.4, 44.3, 44.2, 44.2, 44.1, 44.1, 44, 44, 43.9, 43.9, 43.9, 43.8, 43.8, 43.8, 43.8, 43.8, 43.7],
    41 : [64.3, 63.5, 62.6, 61.7, 60.9, 60.1, 59.3, 58.5, 57.7, 56.9, 56.1, 55.4, 54.7, 54, 53.3, 52.7, 52, 51.4, 50.9, 50.3, 49.8, 49.3, 48.8, 48.3, 47.9, 47.5, 47.1, 46.7, 46.4, 46.1, 45.8, 45.5, 45.3, 45.1, 44.8, 44.7, 44.5, 44.3, 44.2, 44, 43.9, 43.8, 43.7, 43.6, 43.5, 43.4, 43.3, 43.3, 43.2, 43.1, 43.1, 43, 43, 43, 42.9, 42.9, 42.9, 42.9, 42.8, 42.8, 42.8],
    42 : [64.2, 63.3, 62.5, 61.6, 60.8, 59.9, 59.1, 58.3, 57.5, 56.7, 55.9, 55.2, 54.4, 53.7, 53, 52.3, 51.7, 51.1, 50.4, 49.9, 49.3, 48.8, 48.3, 47.8, 47.3, 46.9, 46.5, 46.1, 45.8, 45.4, 45.1, 44.8, 44.6, 44.3, 44.1, 43.9, 43.7, 43.5, 43.3, 43.2, 43, 42.9, 42.8, 42.7, 42.6, 42.5, 42.4, 42.3, 42.3, 42.2, 42.2, 42.1, 42.1, 42, 42, 42, 41.9, 41.9, 41.9, 41.9, 41.8],
    43 : [64.1, 63.2, 62.4, 61.5, 60.6, 59.8, 58.9, 58.1, 57.3, 56.5, 55.7, 54.9, 54.2, 53.4, 52.7, 52, 51.3, 50.7, 50.1, 49.5, 48.9, 48.3, 47.8, 47.3, 46.8, 46.3, 45.9, 45.5, 45.1, 44.8, 44.4, 44.1, 43.8, 43.6, 43.3, 43.1, 42.9, 42.7, 42.5, 42.4, 42.2, 42.1, 41.9, 41.8, 41.7, 41.6, 41.5, 41.4, 41.4, 41.3, 41.3, 41.2, 41.1, 41.1, 41.1, 41, 41, 41, 40.9, 40.9, 40.9],
    44 : [64, 63.1, 62.2, 61.4, 60.5, 59.6, 58.8, 57.9, 57.1, 56.3, 55.5, 54.7, 53.9, 53.2, 52.4, 51.7, 51, 50.4, 49.7, 49.1, 48.5, 47.9, 47.3, 46.8, 46.3, 45.8, 45.4, 44.9, 44.5, 44.2, 43.8, 43.5, 43.2, 42.9, 42.6, 42.4, 42.1, 41.9, 41.7, 41.5, 41.4, 41.2, 41.1, 41, 40.8, 40.7, 40.6, 40.6, 40.5, 40.4, 40.3, 40.3, 40.2, 40.2, 40.1, 40.1, 40.1, 40, 40, 40, 40],
    45 : [64, 63, 62.2, 61.3, 60.4, 59.5, 58.6, 57.8, 56.9, 56.1, 55.3, 54.5, 53.7, 52.9, 52.2, 51.5, 50.7, 50, 49.4, 48.7, 48.1, 47.5, 46.9, 46.3, 45.8, 45.3, 44.8, 44.4, 44, 43.6, 43.2, 42.8, 42.5, 42.2, 41.9, 41.6, 41.4, 41.2, 40.9, 40.7, 40.6, 40.4, 40.3, 40.1, 40, 39.9, 39.8, 39.7, 39.6, 39.5, 39.4, 39.4, 39.3, 39.3, 39.2, 39.2, 39.1, 39.1, 39.1, 39.1, 39],
    46 : [63.9, 63, 62.1, 61.2, 60.3, 59.4, 58.5, 57.7, 56.8, 56, 55.1, 54.3, 53.5, 52.7, 52, 51.2, 50.5, 49.8, 49.1, 48.4, 47.7, 47.1, 46.5, 45.9, 45.4, 44.8, 44.3, 43.9, 43.4, 43, 42.6, 42.2, 41.8, 41.5, 41.2, 40.9, 40.7, 40.4, 40.2, 40, 39.8, 39.6, 39.4, 39.3, 39.2, 39, 38.9, 38.8, 38.7, 38.6, 38.6, 38.5, 38.4, 38.4, 38.3, 38.3, 38.2, 38.2, 38.2, 38.1, 38.1],
    47 : [63.8, 62.9, 62, 61.1, 60.2, 59.3, 58.4, 57.5, 56.7, 55.8, 55, 54.1, 53.3, 52.5, 51.7, 51, 50.2, 49.5, 48.8, 48.1, 47.4, 46.7, 46.1, 45.5, 44.9, 44.4, 43.9, 43.4, 42.9, 42.4, 42, 41.6, 41.2, 40.9, 40.5, 40.2, 40, 39.7, 39.4, 39.2, 39, 38.8, 38.6, 38.5, 38.3, 38.2, 38.1, 38, 37.9, 37.8, 37.7, 37.6, 37.5, 37.5, 37.4, 37.4, 37.3, 37.3, 37.2, 37.2, 37.2],
    48 : [63.7, 62.8, 61.9, 61, 60.1, 59.2, 58.3, 57.4, 56.5, 55.7, 54.8, 54, 53.2, 52.3, 51.5, 50.8, 50, 49.2, 48.5, 47.8, 47.1, 46.4, 45.8, 45.1, 44.5, 44, 43.4, 42.9, 42.4, 41.9, 41.5, 41, 40.6, 40.3, 39.9, 39.6, 39.3, 39, 38.7, 38.5, 38.2, 38, 37.8, 37.7, 37.5, 37.4, 37.2, 37.1, 37, 36.9, 36.8, 36.7, 36.6, 36.6, 36.5, 36.5, 36.4, 36.4, 36.3, 36.3, 36.3],
    49 : [63.7, 62.8, 61.8, 60.9, 60, 59.1, 58.2, 57.3, 56.4, 55.6, 54.7, 53.8, 53, 52.2, 51.4, 50.6, 49.8, 49, 48.2, 47.5, 46.8, 46.1, 45.4, 44.8, 44.2, 43.6, 43, 42.4, 41.9, 41.4, 40.9, 40.5, 40.1, 39.7, 39.3, 38.9, 38.6, 38.3, 38, 37.8, 37.5, 37.3, 37.1, 36.9, 36.7, 36.6, 36.4, 36.3, 36.2, 36, 35.9, 35.9, 35.8, 35.7, 35.6, 35.6, 35.5, 35.5, 35.4, 35.4, 35.4],
    50 : [63.6, 62.7, 61.8, 60.8, 59.9, 59, 58.1, 57.2, 56.3, 55.4, 54.6, 53.7, 52.9, 52, 51.2, 50.4, 49.6, 48.8, 48, 47.3, 46.5, 45.8, 45.1, 44.4, 43.8, 43.2, 42.6, 42, 41.5, 40.9, 40.4, 40, 39.5, 39.1, 38.7, 38.3, 38, 37.6, 37.3, 37.1, 36.8, 36.6, 36.3, 36.1, 35.9, 35.8, 35.6, 35.5, 35.3, 35.2, 35.1, 35, 34.9, 34.8, 34.8, 34.7, 34.6, 34.6, 34.5, 34.5, 34.5],
    51 : [63.6, 62.6, 61.7, 60.8, 59.9, 58.9, 58, 57.1, 56.2, 55.3, 54.5, 53.6, 52.7, 51.9, 51, 50.2, 49.4, 48.6, 47.8, 47, 46.3, 45.5, 44.8, 44.1, 43.5, 42.8, 42.2, 41.6, 41, 40.5, 40, 39.5, 39, 38.5, 38.1, 37.7, 37.4, 37, 36.7, 36.4, 36.1, 35.8, 35.6, 35.4, 35.2, 35, 34.8, 34.7, 34.5, 34.4, 34.3, 34.2, 34.1, 34, 33.9, 33.8, 33.8, 33.7, 33.6, 33.6, 33.6],
    52 : [63.5, 62.6, 61.7, 60.7, 59.8, 58.9, 58, 57.1, 56.1, 55.2, 54.4, 53.5, 52.6, 51.7, 50.9, 50, 49.2, 48.4, 47.6, 46.8, 46, 45.3, 44.6, 43.8, 43.2, 42.5, 41.8, 41.2, 40.6, 40.1, 39.5, 39, 38.5, 38, 37.6, 37.2, 36.8, 36.4, 36, 35.7, 35.4, 35.1, 34.9, 34.6, 34.4, 34.2, 34, 33.9, 33.7, 33.6, 33.4, 33.3, 33.2, 33.1, 33, 33, 32.9, 32.8, 32.8, 32.7, 32.7],
    53 : [63.5, 62.5, 61.6, 60.7, 59.7, 58.8, 57.9, 57, 56.1, 55.2, 54.3, 53.4, 52.5, 51.6, 50.8, 49.9, 49.1, 48.2, 47.4, 46.6, 45.8, 45.1, 44.3, 43.6, 42.9, 42.2, 41.5, 40.9, 40.3, 39.7, 39.1, 38.5, 38, 37.5, 37.1, 36.6, 36.2, 35.8, 35.4, 35.1, 34.8, 34.5, 34.2, 33.9, 33.7, 33.5, 33.3, 33.1, 32.9, 32.8, 32.6, 32.5, 32.4, 32.3, 32.2, 32.1, 32, 32, 31.9, 31.8, 31.8],
    54 : [63.5, 62.5, 61.6, 60.6, 59.7, 58.8, 57.8, 56.9, 56, 55.1, 54.2, 53.3, 52.4, 51.5, 50.6, 49.8, 48.9, 48.1, 47.2, 46.4, 45.6, 44.8, 44.1, 43.3, 42.6, 41.9, 41.2, 40.5, 39.9, 39.3, 38.7, 38.1, 37.6, 37.1, 36.6, 36.1, 35.7, 35.2, 34.8, 34.5, 34.1, 33.8, 33.5, 33.2, 33, 32.7, 32.5, 32.3, 32.1, 32, 31.8, 31.7, 31.6, 31.5, 31.4, 31.3, 31.2, 31.1, 31, 31, 30.9],
    55 : [63.4, 62.5, 61.5, 60.6, 59.6, 58.7, 57.8, 56.8, 55.9, 55, 54.1, 53.2, 52.3, 51.4, 50.5, 49.7, 48.8, 47.9, 47.1, 46.3, 45.5, 44.7, 43.9, 43.1, 42.4, 41.6, 40.9, 40.2, 39.6, 38.9, 38.3, 37.7, 37.2, 36.6, 36.1, 35.6, 35.1, 34.7, 34.3, 33.9, 33.5, 33.2, 32.9, 32.6, 32.3, 32, 31.8, 31.6, 31.4, 31.2, 31.1, 30.9, 30.8, 30.6, 30.5, 30.4, 30.3, 30.3, 30.2, 30.1, 30.1],
    56 : [63.4, 62.4, 61.5, 60.5, 59.6, 58.7, 57.7, 56.8, 55.9, 54.9, 54, 53.1, 52.2, 51.3, 50.4, 49.5, 48.7, 47.8, 47, 46.1, 45.3, 44.5, 43.7, 42.9, 42.1, 41.4, 40.7, 40, 39.3, 38.6, 38, 37.4, 36.8, 36.2, 35.7, 35.1, 34.7, 34.2, 33.7, 33.3, 32.9, 32.6, 32.2, 31.9, 31.6, 31.4, 31.1, 30.9, 30.7, 30.5, 30.3, 30.1, 30, 29.8, 29.7, 29.6, 29.5, 29.4, 29.3, 29.3, 29.2],
    57 : [63.4, 62.4, 61.5, 60.5, 59.6, 58.6, 57.7, 56.7, 55.8, 54.9, 54, 53, 52.1, 51.2, 50.3, 49.4, 48.6, 47.7, 46.8, 46, 45.1, 44.3, 43.5, 42.7, 41.9, 41.2, 40.4, 39.7, 39, 38.3, 37.6, 37, 36.4, 35.8, 35.2, 34.7, 34.2, 33.7, 33.2, 32.8, 32.4, 32, 31.6, 31.3, 31, 30.7, 30.4, 30.2, 29.9, 29.7, 29.5, 29.4, 29.2, 29.1, 28.9, 28.8, 28.7, 28.6, 28.5, 28.4, 28.4],
    58 : [63.3, 62.4, 61.4, 60.5, 59.5, 58.6, 57.6, 56.7, 55.8, 54.8, 53.9, 53, 52.1, 51.2, 50.3, 49.4, 48.5, 47.6, 46.7, 45.8, 45, 44.2, 43.3, 42.5, 41.7, 40.9, 40.2, 39.4, 38.7, 38, 37.3, 36.7, 36, 35.4, 34.8, 34.3, 33.7, 33.2, 32.8, 32.3, 31.9, 31.4, 31.1, 30.7, 30.4, 30, 29.8, 29.5, 29.2, 29, 28.8, 28.6, 28.4, 28.3, 28.1, 28, 27.9, 27.8, 27.7, 27.6, 27.5],
    59 : [63.3, 62.3, 61.4, 60.4, 59.5, 58.5, 57.6, 56.7, 55.7, 54.8, 53.8, 52.9, 52, 51.1, 50.2, 49.3, 48.4, 47.5, 46.6, 45.7, 44.9, 44, 43.2, 42.4, 41.5, 40.7, 40, 39.2, 38.5, 37.8, 37.1, 36.4, 35.7, 35.1, 34.5, 33.9, 33.3, 32.8, 32.3, 31.8, 31.3, 30.9, 30.5, 30.1, 29.8, 29.4, 29.1, 28.8, 28.6, 28.3, 28.1, 27.9, 27.7, 27.5, 27.4, 27.2, 27.1, 27, 26.9, 26.8, 26.7]
  };

  this.getLifeExpectency = function(age, beneficiaryAge) {
    var row = this.table[Math.min(age, 59)];
    if (row) {
      var benAge = Math.min(beneficiaryAge, 80);
      return row[benAge - 20];
    }
    else {
      return 0;
    }
  }
}

