if (Calculators == undefined) {
	var Calculators = {};
}
if (Calculators.planning == undefined) {
	Calculators.planning = {};
}
Calculators.planning.MinimumIRADistribution = function MinimumIRADistribution(balance, distributionYear, birthMonth, birthDay, birthYear) {
	this.balance = new Calculators.type.Money(balance);
	this.distributionYear = new Number(distributionYear);
	this.birthMonth = new Number(birthMonth);
	this.birthDay = new Number(birthDay);
	this.birthYear = new Number(birthYear);	
	
	// Data taken from IRS Uniform Lifetime Table III Pub 590 found at http://www.irs.gov/publications/p590/ar02.html#d0e12457
	this.table3 = {70:27.4, 71:26.5, 72:25.6, 73:24.7, 74:23.8, 75:22.9, 76:22, 77:21.2, 78:20.3, 79:19.5, 80:18.7, 81:17.9, 82:17.1, 83:16.3, 84:15.5, 85:14.8, 86:14.1, 87:13.4, 88:12.7, 89:12, 90:11.4, 91:10.8, 92:10.2, 93:9.6, 94:9.1, 95:8.6, 96:8.1, 97:7.6, 98:7.1, 99:6.7, 100:6.3, 101:5.9, 102:5.5, 103:5.2, 104:4.9, 105:4.5, 106:4.2, 107:3.9, 108:3.7, 109:3.4, 110:3.1, 111:2.9, 112:2.6, 113:2.4, 114:2.1, 115:1.9};	
	
	this.getBalance = function() {
		return this.balance.formatted();
	}
	
	this.getAgeAtEndOfDistributionYear = function() {
		return (this.distributionYear	- this.birthYear);
	}
	
	this.getFirstYearRequired = function() {
		var firstYearRequired = Math.round(this.distributionYear + (70.5 - this.getAgeAtEndOfDistributionYear()));
		if(this.birthMonth < 7) {
      // based on year someone turned 70.5.  Number lower for birthdays before July.			
			firstYearRequired--;
		}
		return firstYearRequired;
	}
	
	this.getNumberOfPriorYearsRequired = function () {
		var numPriorYearsRequired = (this.distributionYear - this.birthYear) - 71; 
		// based on year someone turned 70.5.  Number higher for birthdays before July.
		if(this.birthMonth < 7) {
			numPriorYearsRequired++;
		}		
		numPriorYearsRequired = (numPriorYearsRequired < 0) ? 0 : numPriorYearsRequired;
		return numPriorYearsRequired;
	}
	
	this.getExpectedReturnDivisor = function() {
		// IRS Table only setup for ages 70 - 115.  Make sure person's age isn't out of bounds
		var expectedReturnDivisor = 0;
		var ageAtEndOfDistYear = this.getAgeAtEndOfDistributionYear();
		if (ageAtEndOfDistYear < 70) {
			expectedReturnDivisor = this.table3[70];
		} else if (ageAtEndOfDistYear > 115) {
			expectedReturnDivisor = this.table3[115];
		} else {
			expectedReturnDivisor = this.table3[ageAtEndOfDistYear];
		}
		return expectedReturnDivisor;
	}
	
	this.getMinimumDistribution = function() {
		var minimumDistribution = new Calculators.type.Money(this.balance.getAmount() / this.getExpectedReturnDivisor());
		return minimumDistribution.formatted();
	}
}
