function calculateResults(offset_constant) {
  var value  = document.getElementById("calculator_kwh").value;
  var offset = value * offset_constant;

  document.getElementById("calculator_cooffset").innerHTML = round(offset, 4);
  document.getElementById("calculator_driven").innerHTML = Math.round(((offset / 0.649234)*10)/10);
  document.getElementById("calculator_trees_ha").innerHTML = Math.round(((offset / 1538.829)*1000)/1000);
  document.getElementById("calculator_trees").innerHTML = Math.round(offset * 0.214988);
}

function calculateForCoal() {
  calculateResults(0.950113);
}

function calculateForPetrol() {
  calculateResults(0.892971);
}

function calculateForGas() {
  calculateResults(0.599093);
}

function calculateForCAG() {
  calculateResults(0.595);
}

function calculateForUSAG() {
  calculateResults(0.1605);
}

function calculateForEUAG() {
  calculateResults(0.1187);
}

function calculateForIAG() {
  calculateResults(0.1624);
}

function round(v, decimal_places) {
  var result = 0;
  if (v > 8191 && v < 10485) {
    result = Math.round(v-5000*Math.pow(10,decimal_places))/Math.pow(10,decimal_places) + 5000;
  } else {
    result = Math.round(v*Math.pow(10,decimal_places))/Math.pow(10,decimal_places);
  }
  return result;
}

function calculate() {
  var table = {
    calculator_coal_source:      calculateForCoal,
    calculator_petroleum_source: calculateForPetrol,
    calculator_gas_source:       calculateForGas,
    calculator_cag_source:       calculateForCAG,
    calculator_uag_source:       calculateForUSAG,
    calculator_eag_source:       calculateForEUAG,
    calculator_iag_source:       calculateForIAG
  };

  for (var k in table) {
    if (document.getElementById(k).checked) {
      var handler = table[k];
      if (handler) {
        handler();
        break;
      }
      else {
        alert("Unknown checkbox: " + k);
      }
    }
  }
}

