I had a great time building this calculator and saved a ton of time using the following components:
Also, I'd like to thank my friends at Firmhouse for which I developed the spreadsheet that was the basis of this online calculator.