<title>ISEE &amp; ISPE Calculator</title>
<style>
  .calculator-container {
    border: 1px solid #000;
    padding: 20px;
    width: 50%;
    margin: 0 auto;
  }
  .form-group {
    margin-bottom: 15px;
  }
  label {
    display: block;
    margin-bottom: 5px;
  }
  input {
    width: 100%;
  }
  button {
    width: 100%;
  }
  .result {
    margin-top: 20px;
    font-weight: bold;
  }
</style>


<div class="calculator-container">
  <h2>ISEE &amp; ISPE Calculator</h2>
  <div class="form-group">
    <label for="income">Family's Annual Income (EUR):</label>
    <input type="number" id="income" required="">
  </div>
  <div class="form-group">
    <label for="property">Square Meters of Real Estate Property:</label>
     <input type="number" id="property" required="">
  </div>
  <div class="form-group">
    <label for="bank">Amount in Bank on Last Day of Last Year (EUR, if Negative Write 0):</label>
    <input type="number" id="bank" required="">
  </div>
  <div class="form-group">
    <label for="members">Number of Family Members:</label>
    <input type="number" id="members" required="">
  </div>
  <div class="form-group">
    <label for="disabled">Number of Family Members with Disabilities:</label>
    <input type="number" id="disabled" required="">
  </div>
  <button type="button" id="calculate-button">Calculate ISEE &amp; ISPE</button>
  <div class="result" id="result"></div>
</div>


<script>
const calculateButton = document.getElementById('calculate-button');
const resultDiv = document.getElementById('result');
calculateButton.addEventListener('click', () => {
  const income = parseFloat(document.getElementById('income').value);
  const property = parseFloat(document.getElementById('property').value);
  const bank = parseFloat(document.getElementById('bank').value);
  const members = parseInt(document.getElementById('members').value);
  const disabled = parseInt(document.getElementById('disabled').value);
  if (isNaN(income) || isNaN(property) || isNaN(bank) || isNaN(members) || isNaN(disabled)) {
    resultDiv.innerHTML = 'Error: Please make sure to provide valid input values for all fields.';
  } else {
    const equivalentScaleCoefficient = calculateEquivalentScaleCoefficient(members, disabled);
    const isee = calculateISEE(income, property, bank, equivalentScaleCoefficient);
    const ispe = calculateISPE(income, equivalentScaleCoefficient);
    let resultMessage = `ISEE: ${isee.toFixed(2)}, ISPE: ${ispe.toFixed(2)}<br>`;
    resultMessage += `The Equivalent Scale Coefficient is ${equivalentScaleCoefficient.toFixed(2)}.<br>`;
    resultMessage += `The corrected income is ${(income * 0.770312949).toFixed(2)} EUR (annual income * 0.770312949).<br>`;
    resultMessage += `The property worth is ${(property * 500).toFixed(2)} EUR (square meters of property * 500).<br>`;
    resultMessage += `ISEE is calculated as (corrected income + 0.2 * property worth + 0.2 * bank amount) / Equivalent Scale Coefficient.<br>`;
    resultMessage += `ISPE is calculated as corrected income / Equivalent Scale Coefficient.<br>`;
    if (isee < 23000 && ispe < 50000) {
      resultMessage += 'Congratulations! According to our estimation, you are eligible for a scholarship and the lowest tuition fee. But please make sure to confirm it with your first-choice university, as this calculator might have errors.';
    } else {
      resultMessage += 'Unfortunately, you are not eligible for a scholarship and the lowest tuition fee based on the ISEE and ISPE values. But please make sure to confirm it with your first-choice university, as this calculator might have errors.';
    }
    resultDiv.innerHTML = resultMessage;
  }
});
function calculateEquivalentScaleCoefficient(members, disabled) {
  let coefficient;
  if (isNaN(members)) {
    coefficient = 1;
  } else {
    switch (members) {
      case 1:
        coefficient = 1;
        break;
      case 2:
        coefficient = 1.57;
        break;
      case 3:
        coefficient = 2.04;
        break;
      case 4:
        coefficient = 2.46;
        break;
      case 5:
        coefficient = 2.85;
        break;
      default:
        coefficient = 2.85 + (0.35 * (members - 5));
    }
  }
  return coefficient + (0.5 * disabled);
}
function calculateISEE(income, property, bank, equivalentScaleCoefficient) {
  const correctedIncome = income * 0.770312949;
  const propertyWorth = property * 500;
  const isee = (correctedIncome + 0.2 * propertyWorth + 0.2 * bank) / equivalentScaleCoefficient;
  return isee;
}
function calculateISPE(income, equivalentScaleCoefficient) {
const correctedIncome = income * 0.770312949;
const ispe = correctedIncome / equivalentScaleCoefficient;
return ispe;
}
</script>

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.