
Type.registerNamespace('MaisonMax');

MaisonMax.Calculator = function(element) {
	MaisonMax.Calculator.initializeBase(this, [element]);
	this._principalElement = null;
	this._yearlyRateElement = null;
	this._yearsElement = null;
	this._monthlyPaymentElement = null;
	this._calculateElement = null;
}
MaisonMax.Calculator.prototype = {
	initialize: function() {
		MaisonMax.Calculator.callBaseMethod(this, 'initialize');
		$addHandlers(this._calculateElement, { 'click': this._calculateElementClick }, this);
	},
	dispose: function() {
		$clearHandlers(this._calculateElement);
		MaisonMax.Calculator.callBaseMethod(this, 'dispose');
	},
	_calculateElementClick: function(evt) {
		var principal = Number.parseLocale(this._principalElement.value);
		var yearlyRate = Number.parseLocale(this._yearlyRateElement.value);
		var years = Number.parseLocale(this._yearsElement.value);
		if (isNaN(principal) || isNaN(yearlyRate) || isNaN(years)) return false;
		var compoundRate = Math.pow(1 + (yearlyRate / 200), 1 / 6);
		var monthlyPayment = principal * ((compoundRate - 1) / (1 - Math.pow(compoundRate, -12 * years)));
		this._monthlyPaymentElement.value = monthlyPayment.localeFormat('n2');
		return false;
	},
	get_principalElement: function() {
		return this._principalElement;
	},
	set_principalElement: function(value) {
		this._principalElement = value;
	},
	get_yearlyRateElement: function() {
		return this._yearlyRateElement;
	},
	set_yearlyRateElement: function(value) {
		this._yearlyRateElement = value;
	},
	get_yearsElement: function() {
		return this._yearsElement;
	},
	set_yearsElement: function(value) {
		this._yearsElement = value;
	},
	get_monthlyPaymentElement: function() {
		return this._monthlyPaymentElement;
	},
	set_monthlyPaymentElement: function(value) {
		this._monthlyPaymentElement = value;
	},
	get_calculateElement: function() {
		return this._calculateElement;
	},
	set_calculateElement: function(value) {
		this._calculateElement = value;
	}
}

MaisonMax.Calculator.registerClass('MaisonMax.Calculator', Sys.UI.Control);
