<title>ISEE & 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 & 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 & 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>
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.