
function only_numbers(string) {
	return string.replace(/[^0-9.]/g, '');
}

function calculateRepayment() {

		var property_value 		= document.getElementById('property_value').value;
		var deposit 			= document.getElementById('deposit').value;

		var loanamount	 		= only_numbers(property_value)  - only_numbers(deposit);
		var interest 			= document.getElementById('interest_rate').value;
		var term 				= document.getElementById('payment_duration').value;
		
		var interestOnly 		= (document.getElementById('payment_type').selectedIndex == 0 ? false : true);

		if (property_value.length == 0) {
			alert('Please enter an mortgage amount');
			return;
		} else if (loanamount.length == 0) {
			alert('Please enter a property value');
			return;
		} else if (term.length == 0) {
			alert('Please enter a payment duration');
			return;
		} else if (interest.length == 0) {
			alert('Please enter an interest rate');
			return;
		}

		property_value		= only_numbers(property_value);
		deposit				= only_numbers(deposit);
		deposit 			= (deposit > 0 ? deposit : 0);
		interest			= only_numbers(interest);
		term 				= only_numbers(term);

		var I = interest / 12; // eg 5% => 0.416r
		var X = 1 / ( 1 + ( I / 100 ) ); // eg 1 / ( 1 + ( 0.416r / 100 ) ) => 0.99585062
		var N = term * 12; // eg 25 years => 300 months
		

		var iRatio = (interest / 100);
		
		var repayments = loanamount * (X - 1) / ( Math.pow(X, N + 1) - X); // ??

		if (interestOnly) {
			repayments = ((loanamount * iRatio) / 12).toFixed(0)
		}
		
		repayments = formatnumber(repayments)

		if (repayments.substring(0, 1) == '-')
			repayments = '0';
			
		document.getElementById('monthly_repayment').value 	= (only_numbers(repayments) >= 0 ? repayments : 0); // ensure that invalid input doesn't result in invalid output
}

function formatnumber(num) {

	if (isNaN(num)) {
		num = "0";
	}
	num = Math.floor(num*100+0.50000000001);
	cents = num % 100;
	num = Math.floor(num / 100).toString();
	if (cents < 10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
		num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
	}
	return num + '.' + cents;

}

