if (Calculators == undefined) {
	var Calculators = {};
}
if (Calculators.loan == undefined) {
	Calculators.loan = {};
}
Calculators.loan.LumpsumPaymentFrequency = function LumpsumPaymentFrequency() {
	this.isPrepaymentMonth = function(startmonth, month){
		return (startmonth == month);
	}
	
	this.toString = function(){
        return "Lumpsum";
	}
}

Calculators.loan.MonthlyPaymentFrequency = function MonthlyPaymentFrequency() {
	this.isPrepaymentMonth = function(startmonth, month){
		return (startmonth <= month);
	}
	
	this.toString = function(){
        return "Monthly";
	}
}

Calculators.loan.YearlyPaymentFrequency = function YearlyPaymentFrequency() {
	this.isPrepaymentMonth = function(startmonth, month){
		return ((startmonth <= month) &&
			((startmonth - month) % 12 == 0));
	}
	
	this.toString = function(){
        return "Yearly";
	}
}

Calculators.loan.NonePaymentFrequency = function NonePaymentFrequency() {
	this.isPrepaymentMonth = function(startmonth, month){
		return false;
	}
	
	this.toString = function(){
		return "None";
	}
}

Calculators.loan.PaymentFrequency = function PaymentFrequency(){

	this.YEARLY = 0; //new Calculators.loan.PaymentFrequency(12);
	this.MONTHLY = 1; //new Calculators.loan.PaymentFrequency(1);
	this.NONE = 2; //new Calculators.loan.PaymentFrequency(-1);
	this.LUMPSUM = 3; //new Calculators.loan.PaymentFrequency(0);

	this.getPaymentFrequency = function(increment) {
		if (increment == this.LUMPSUM) {
			return new Calculators.loan.LumpsumPaymentFrequency();
		} else if (increment  == this.MONTHLY) {
			return new Calculators.loan.MonthlyPaymentFrequency();
		} else if (increment  == this.YEARLY) {
			return new Calculators.loan.YearlyPaymentFrequency();
		} else if (increment  == this.NONE) {
			return new Calculators.loan.NonePaymentFrequency();
		}
		else {
			return null;
		}
	}
}

Calculators.loan.LumpsumPaymentFrequency.prototype = new Calculators.loan.PaymentFrequency();
Calculators.loan.MonthlyPaymentFrequency.prototype = new Calculators.loan.PaymentFrequency();
Calculators.loan.YearlyPaymentFrequency.prototype = new Calculators.loan.PaymentFrequency();
Calculators.loan.NonePaymentFrequency.prototype = new Calculators.loan.PaymentFrequency();

