Functions
Use more functions.
/**
* Confirm that all dates are valid Date values and that they follow business rules before proceeding to calculations. */ if ( termInYears < 0 ) { window.alert("Term in years must be greater than zero.") } else if ( !isValidDate(productPurchaseDate) ) { window.alert("Invalid ProductPurchase Date."); } else if ( !isValidDate(contractPurchaseDate) ) { window.alert("Invalid Contract Purchase Date."); } else if ( !isValidDate(cancelDate) ) { window.alert("Invalid Cancel Date."); } else if ( cancelDate < productPurchaseDate || cancelDate < contractPurchaseDate ) { window.alert("Cancel date cannot be prior to Product or Contract purchase date."); } else if ( cancelDate > expirationDate ) { window.alert("Cancel date cannot be past Expiration date."); } /** * Confirm that all numbers are valid numbers for calculations. */ else if ( isNaN(purchasePrice) || isNaN(termInYears) || isNaN(amtPaidInClaims) || isNaN(gracePeriodInDays) ) { window.alert("Invalid Number Entry. Please check your entries and try again."); } YouThis is one example of a place you could use another function. You can split that off into an isValidInput() function, perhaps, and call that by itself and get rid of the if/else if/else structure at the beginning of calculateProratedRefund(), replacing it with something like this:
if (!isValidInput()) { return } // other code here