// JavaScript document

function parseFloatForm(f, inp_name)
{
	var floatVal = parseFloat(f.elements[inp_name].value);
	if (isNaN(floatVal))
		floatVal = 0;
	return floatVal;
}

function parseNumeric(inp, prefix, bank)
{
	if (typeof prefix == "undefined")
		prefix = '';
	
	var caret_pos = getCaretPosition(inp).start;
	
	inp.value = inp.value.replace(/,/g, ".");
	inp.value = inp.value.replace(/[^0-9\.]/g, '');
	inp.value = inp.value.replace(/\.+/, '.');
	
	setCursorPosition(inp, caret_pos);
	calculateMonthlyPayment(prefix, bank);
}

var wLoaded = false;
addEvent(window, 'load', function(e){
	wLoaded = true;
});

function calculateMonthlyPayment(prefix, bank)
{
	if (typeof prefix == "undefined")
		prefix = '';
	
	if (typeof bank == "undefined")
		bank = '';
	
	// monthly payment place
	var mpp = document.getElementById(prefix+"monthly_payment");
	
	var f = getForm();
	
	var currency	= 'EUR';
//	var EURIBOR		= 3.56900;
//	var EUR			= 4.367;
	
	var project_price	= parseFloatForm(f, prefix+"project_price");
	var first_payment	= parseFloatForm(f, prefix+"first_payment");
	
	if (first_payment == 0 && !wLoaded){
		var first_payment_hidden = parseFloatForm(f, prefix+"first_payment_hidden");
		if (first_payment_hidden == 0) first_payment_hidden = 10;	// by default 10%
		first_payment = Math.ceil(project_price / first_payment_hidden);
		f.elements[prefix+"first_payment"].value = first_payment;
	}
	
	// loan_amount
	
		// if first_payment is percent
		// var loan_amount = project_price - (project_price * first_payment / 100);
		
		// if first_payment simple
		var loan_amount = project_price - first_payment;
	
	// annual_interest_rate
	var interest_rate	= parseFloatForm(f, prefix+"interest_rate");	// percent
	
	// years
	var term_of_loan	= parseFloatForm(f, prefix+"term_of_loan");	// term of loan in years

	if (prefix != '' && typeof CalcPopup == "object")
	{
		var oSaveData = {
			project_price: project_price,
			first_payment: first_payment,	// percent
			interest_rate: interest_rate,
			term_of_loan: term_of_loan,
			calc_currency: currency
		}
		CalcPopup.save( oSaveData ) ;
	}
	
	function MonthlyPayment(years, annual_interest_rate, loan_amount)
	{
		var mi = annual_interest_rate / 1200;
		
		var base = 1;		
		var mbase = 1 + mi;
		
		for (var i=0, years_12=years * 12; i < years_12; i++) {
		  base = base * mbase;
		}
		
		return (loan_amount * mi / ( 1 - (1/base))).toFixed(2);
	}
	
	var ret = MonthlyPayment(term_of_loan, interest_rate, loan_amount);
	
	if (bank == 'dnbnord')
		ret = Math.ceil(ret);
	
	ret += ' ' + currency;
	
	if (bank == 'dnbnord'){
		try {
			f.elements[prefix+"loan_amount"].value = loan_amount;
		} catch (e) {}
		f.elements[prefix+"monthly_payment"].value = ret;
	}
	else {
		mpp.style.display = "";
		mpp.innerHTML = ret;
	}
}

function getCaretPosition(input)
{
	var result = { start: 0, end: 0 };
	if (input.setSelectionRange)
	{
		result.start = input.selectionStart;
		result.end = input.selectionEnd;
	}
	else if (document.selection && document.selection.createRange)
	{
		var range = document.selection.createRange();
		var r2 = range.duplicate();
		result.start = 0 - r2.moveStart('character', -100000);
		result.end = result.start + range.text.length;
	}
	return result;
}

function setCursorPosition(field, pos)
{
	if (field.createTextRange) {
		var range = field.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
	else if (field.selectionEnd) {
		field.selectionEnd = pos;
	}
}
