Calculator = {
  initialize: function() {
    // [num_users] = [%_for_one_location, %_for_two_locations, etc]
    var savings = new Array(95);
    savings[0] = [51,56,59,61,62];
    savings[1] = [42,50,55,57,59];
    savings[2] = [41,49,53,56,58];
    savings[3] = [34,44,49,53,55];
    savings[4] = [34,43,48,52,54];
    savings[5] = [29,39,45,49,51];
    savings[6] = [27,38,44,48,50];
    savings[7] = [22,34,41,45,48];
    savings[8] = [30,38,43,47,50];
    savings[9] = [26,35,41,45,48];
    savings[10] = [22,32,38,42,46];
    savings[11] = [18,29,36,40,44];
    savings[12] = [15,26,33,38,42];
    savings[13] = [12,23,31,36,40];
    savings[14] = [8,20,28,34,38];
    savings[15] = [5,18,26,32,36];
    savings[16] = [8,19,27,32,36];
    savings[17] = [5,17,24,30,35];
    savings[18] = [2,14,22,28,33];
    savings[19] = [5,16,23,29,33];
    savings[20] = [7,17,24,30,34];
    savings[21] = [9,19,25,30,34];
    savings[22] = [11,20,26,31,35];
    savings[23] = [9,18,24,29,33];
    savings[24] = [7,16,23,28,32];
    savings[25] = [9,18,24,29,32];
    savings[26] = [7,16,22,27,31];
    savings[27] = [5,14,21,26,30];
    savings[28] = [7,15,21,26,30];
    savings[29] = [5,14,20,25,29];
    savings[30] = [4,12,19,24,28];
    savings[31] = [6,13,19,24,28];
    savings[32] = [4,12,18,23,27];
    savings[33] = [2,10,17,22,26];
    savings[34] = [4,12,18,22,26];
    savings[35] = [2,10,16,21,25];
    savings[36] = [6,13,19,23,27];
    savings[37] = [7,14,19,24,28];
    savings[38] = [6,13,18,23,27];
    savings[39] = [4,11,17,22,25];
    savings[40] = [6,13,18,22,26];
    savings[41] = [5,11,17,21,25];
    savings[42] = [3,10,16,20,24];
    savings[43] = [5,11,17,21,25];
    savings[44] = [4,10,16,20,24];
    savings[45] = [3,9,15,19,23];
    savings[46] = [4,11,16,20,23];
    savings[47] = [3,9,15,19,23];
    savings[48] = [2,8,14,18,22];
    savings[49] = [4,10,15,19,22];
    savings[50] = [2,9,14,18,21];
    savings[51] = [1,8,13,17,21];
    savings[52] = [3,9,13,18,21];
    savings[53] = [2,8,13,17,20];
    savings[54] = [1,7,12,16,19];
    savings[55] = [2,8,12,17,20];
    savings[56] = [6,11,16,19,23];
    savings[57] = [5,10,15,19,22];
    savings[58] = [4,9,14,18,21];
    savings[59] = [5,10,15,19,22];
    savings[60] = [4,10,14,18,21];
    savings[61] = [6,11,15,18,22];
    savings[62] = [5,10,14,18,21];
    savings[63] = [4,9,13,17,20];
    savings[64] = [5,10,14,18,21];
    savings[65] = [4,9,13,17,20];
    savings[66] = [4,8,13,16,19];
    savings[67] = [5,9,13,17,20];
    savings[68] = [4,9,13,16,19];
    savings[69] = [3,8,12,16,19];
    savings[70] = [4,9,13,16,19];
    savings[71] = [3,8,12,16,19];
    savings[72] = [3,7,11,15,18];
    savings[73] = [4,8,12,16,19];
    savings[74] = [3,8,11,15,18];
    savings[75] = [2,7,11,14,17];
    savings[76] = [8,12,16,19,22];
    savings[77] = [8,12,15,18,21];
    savings[78] = [7,11,15,18,20];
    savings[79] = [8,12,15,18,21];
    savings[80] = [7,11,15,18,20];
    savings[81] = [7,11,14,17,20];
    savings[82] = [8,11,15,18,20];
    savings[83] = [7,11,14,17,20];
    savings[84] = [6,10,14,17,19];
    savings[85] = [7,11,14,17,20];
    savings[86] = [7,11,14,17,19];
    savings[87] = [6,10,13,16,19];
    savings[88] = [7,11,14,17,19];
    savings[89] = [7,10,13,16,19];
    savings[90] = [6,10,13,16,18];
    savings[91] = [7,10,14,16,19];
    savings[92] = [6,10,13,16,18];
    savings[93] = [6,9,12,15,18];
    savings[94] = [7,10,13,16,18];
    savings[95] = [6,10,13,15,18];
    Calculator.savings = savings;
  },
  savings_for: function(num_users, num_locations) {
    var savings_for_users = Calculator.savings[num_users - 5];
    if (num_locations > 4) num_locations = 4;
    if (savings_for_users) return savings_for_users[num_locations];
  },
  office_users_rate: function(value) {
    var rate = 20;
    if (value > 10) rate = 19;
    if (value > 25) rate = 18;
    if (value > 40) rate = 17;
    if (value > 60) rate = 16;
    if (value > 80) rate = 15;
    return value * rate;  
  },
  shared_spaces_rate: function(value) {
    return value * 10;
  },
  local_numbers_rate: function(value) {
    return value;
  },
  toll_free_numbers_rate: function(value) {
    return value * 2; 
  },
  office_locations_rate: function(value) {
    return value * 40;
  },
  softphones_rate: function(value) {
    return 0; // free!
  },
  exec_phones_rate: function(value) {
    return value * 300;
  },
  standard_phones_rate: function(value) {
    return value * 225;
  },
  economy_phones_rate: function(value) {
    return value * 175;
  },
  conference_phones_rate: function(value) {
    return value * 700;
  }
}