Pro Rata Additional Premium Calculator
function calculateProRata() {
var annualIncrease = parseFloat(document.getElementById("annualIncrease").value);
var policyStart = new Date(document.getElementById("policyStart").value);
var policyEnd = new Date(document.getElementById("policyEnd").value);
var changeDate = new Date(document.getElementById("changeDate").value);
var errorBox = document.getElementById("errorBox");
var premiumResult = document.getElementById("premiumResult");
errorBox.style.display = "none";
premiumResult.style.display = "none";
// Validation
if (isNaN(annualIncrease) || annualIncrease <= 0) {
showError("Please enter a valid positive annual premium increase.");
return;
}
if (isNaN(policyStart.getTime()) || isNaN(policyEnd.getTime()) || isNaN(changeDate.getTime())) {
showError("Please select all three dates correctly.");
return;
}
if (policyEnd <= policyStart) {
showError("Policy expiration date must be after the policy start date.");
return;
}
if (changeDate policyEnd) {
showError("The change effective date must fall within the policy term dates.");
return;
}
// Time calculations
var oneDay = 24 * 60 * 60 * 1000; // milliseconds in a day
// Use Math.round to handle daylight savings shifts
var totalTermDays = Math.round(Math.abs((policyEnd – policyStart) / oneDay));
var daysRemaining = Math.round(Math.abs((policyEnd – changeDate) / oneDay));
if (totalTermDays === 0) {
showError("Total term duration cannot be zero.");
return;
}
var factor = daysRemaining / totalTermDays;
var finalPremium = annualIncrease * factor;
var percentage = factor * 100;
// Display Results
document.getElementById("displayTotalDays").innerText = totalTermDays + " days";
document.getElementById("displayDaysRemaining").innerText = daysRemaining + " days";
document.getElementById("displayPercentage").innerText = percentage.toFixed(2) + "%";
document.getElementById("displayAmount").innerText = "$" + finalPremium.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
premiumResult.style.display = "block";
}
function showError(msg) {
var errorBox = document.getElementById("errorBox");
errorBox.innerText = msg;
errorBox.style.display = "block";
}