

jQuery(function() {
	jQuery("#calculatorForm").bind('submit', calculate);	
	jQuery("#accountBalance").bind("change", function() {
		var formatted = new Calculators.type.Money(jQuery(this).val());
		jQuery(this).val(formatted.formatted());
	});
	calculate();
});

function calculate() {
	var birthMonth = jQuery("#month").val();
	var birthYear = jQuery("#year").val();
	var birthDay = jQuery("#day").val();
	var distYear = jQuery("#distYear").val();
	var accountBalance = jQuery("#accountBalance").val();
	
	if (!validMonth(birthMonth)) {
		alert("Please enter a valid birth month.");
		jQuery("#month").focus()[0].select();
		return false;
	}
	if (!validDay(birthDay)) {
		alert("Please enter a valid birth day.");	
		jQuery("#day").focus()[0].select();
		return false;		
	}
	if (!validYear(birthYear)) {
		alert("Please enter a valid birth year.");	
		jQuery("#year").focus()[0].select();
		return false;		
	}
	if (!validMoney(accountBalance)) {
		alert("Please enter your IRA account balance.");
		jQuery("#accountBalance").focus()[0].select();
		return false;
	}
	if (!validYear(distYear)) {
		alert("Please enter a valid year of distribution.");	
		jQuery("#distYear").focus()[0].select();
		return false;			
	}
	
	birthMonth = parseInt(birthMonth, 10);
	birthYear = parseInt(birthYear, 10);
	birthDay = parseInt(birthDay, 10);
	distYear = parseInt(distYear, 10);
	accountBalance = parseFloat(accountBalance.replace(/\$/g, "").replace(/,/g, ""), 10);	
	
	var minDist = new Calculators.planning.MinimumIRADistribution(accountBalance, distYear, birthMonth, birthDay, birthYear);	
	
	jQuery("#yearOfDistribution").text(distYear);
	jQuery("#taxpayerAge").text(minDist.getAgeAtEndOfDistributionYear());
	jQuery("#requiredBeginningDate").text(minDist.getFirstYearRequired());
	jQuery("#numPriorYears").text(minDist.getNumberOfPriorYearsRequired());	
	jQuery("#balance").text(minDist.getBalance());
	jQuery("#distributionPeriod").text(minDist.getExpectedReturnDivisor());
	jQuery("#minimumDistribution").text(minDist.getMinimumDistribution());	

	return false;
}
