function initCalculator() {

  var energyBillValid;

  var energyBill;
  var noMonths;
  var gSaveCost = 0;
  var savingPercentage = 31;
  var savingSterling = 0;
  var recoverySterling = 0;
  var errors = 'We cannot calculate your saving, there is a problem with the data you have supplied.\n\n';
  var i;
  
  i = 1;
  
  if(isNaN(document.getElementById('energyBill').value)
    || document.getElementById('energyBill').value == ''
    || document.getElementById('energyBill').value <= 0) {
    energyBillValid = false;
    errors += i + '. Please enter your energy bill.\n';
    i++;
  } else {
    energyBillValid = true;
    energyBill = new Number(document.getElementById('energyBill').value);
    energyBill = energyBill.toFixed(2);
  }
  
  if(isNaN(document.getElementById('noMonths').value)
    || document.getElementById('noMonths').value == ''
    || document.getElementById('noMonths').value <= 0) {
    noMonthsValid = false;
    errors += i + '. Number of months is invalid, please refresh the page.\n';
    i++;
  } else {
    noMonthsValid = true;
    noMonths = new Number(document.getElementById('noMonths').value);
    noMonths = noMonths.toFixed(0);
  }
  
  if(!document.getElementById('gsavecost')) {
    gSaveCostCheck = false;
    errors += i + '. g-save cost is invalid, please refresh the page.\n';
    i++;
  } else {
    gSaveCostCheck = true;
    gSaveCost = document.getElementById('gsavecost').value;
  }
  
  if(energyBillValid == true && noMonthsValid == true && gSaveCostCheck == true) {
    
    savingSterling = new Number((energyBill) * (savingPercentage / 100));
    savingSterling = savingSterling.toFixed(2);
    
    recoverySterling = new Number((gSaveCost / savingSterling) * noMonths);
    
    trueMonths = Math.ceil(recoverySterling);
    
    if(noMonths != 1) {
      monthString = 'months';
    } else {
      monthString = 'month';
    }
    
    if(trueMonths != 1) {
      trueMonthString = 'months';
    } else {
      trueMonthString = 'month';
    }
    
    document.getElementById('savecontainer').style.display = 'block';
    document.getElementById('tnoMonths').innerHTML = noMonths;
    document.getElementById('tmonthString').innerHTML = monthString;
    document.getElementById('tsavingSterling').innerHTML = savingSterling;
    document.getElementById('ttrueMonths').innerHTML = trueMonths;
    document.getElementById('ttrueMonthString').innerHTML = trueMonthString;
  } else {
    alert(errors);
  }

  return false;

}
