// Copyright 2007 Christian Davén

function clearMessages()
{
	document.getElementById("resultsp").style.display = "none";
	document.getElementById("label_ranta").style.display = "none";
	document.getElementById("msg_begin").firstChild.nodeValue = "";
	document.getElementById("msg_interest").firstChild.nodeValue = "";
	document.getElementById("msg_permonth").firstChild.nodeValue = "";
	document.getElementById("msg_years").firstChild.nodeValue = "";
	document.getElementById("msg_end").firstChild.nodeValue = "";
}

function calculate(type)
{
	function doOneMonth(accumulationeveryxmonths)
	{
		accinterest += sum * interest / 12.0;
		if((numMonths + 1) % accumulationeveryxmonths == 0)
		{
			if(type == 'bank')
				accinterest *= (1 - tax);

			sum += accinterest;
			totalinterest += accinterest;
			accinterest = 0;
		}

		sum += permonth;
		numMonths += 1;
	}

	var ok = 1;
	var tax = 0.3;
	if(!document.getElementById("in_tax").checked)
		tax = 0;

	clearMessages();

	var sum = getAndParseString("begin");
	if(sum == -999) ok = 0;
	var interest = getAndParseString("interest");
	if(interest == -999) ok = 0;
	var permonth = getAndParseString("permonth");
	if(permonth == -999) ok = 0;
	var years = getAndParseString("years");
	if(years == -999) ok = 0;
	var end = getAndParseString("end");
	if(end == -999) ok = 0;

	if(!ok) return;

	interest /= 100.0;

	if(years == 0 && end == 0)
	{
		showMessage("Fyll i spartid eller målbelopp", "msg_years")
		showMessage("Fyll i spartid eller målbelopp", "msg_end")
		return;
	}
	if(years != 0 && end != 0)
	{
		showMessage("Bägge kan inte vara ifyllda", "msg_years")
		showMessage("Bägge kan inte vara ifyllda", "msg_end")
		return;
	}
	if(sum == 0 && permonth == 0)
	{
		showMessage("Fyll i start- eller månadsbelopp", "msg_begin")
		showMessage("Fyll i start- eller månadsbelopp", "msg_permonth")
		return;
	}

	document.body.style.cursor = "wait";
	var numMonths = 0;
	var accinterest = 0;
	var totalinterest = 0;
	var timeperiod = 1;
	if(type == 'bank')
		if(document.getElementById("in_yearly").checked)
			timeperiod = 12;

	if(years == 0)
	{
		if(type == 'bank')
			while(sum < end && sum != Infinity && !isNaN(sum))
				doOneMonth(timeperiod);
		else
			while(sum - totalinterest * tax < end && sum != Infinity && !isNaN(sum))
				doOneMonth(timeperiod);
	}
	else
		while(numMonths < years * 12 && sum != Infinity && !isNaN(sum))
			doOneMonth(timeperiod);
			
	if(type == 'fond')
		sum -= totalinterest * tax;

	if(sum == Infinity || sum > 999999999999999999999)
		showResults("Beloppet blir för stort");
	else if(isNaN(sum))
		showResults("Kunde inte räkna ut resultatet");
	else
	{
		showResults(numberOfMonthsToNiceYears(numMonths) + " kommer du att ha sparat ihop " + FormatNumberBy3(sum.toFixed(0), ".", " ") + " kr!");
		document.getElementById("results_ranta").firstChild.nodeValue = FormatNumberBy3(totalinterest.toFixed(0), ".", " ") + " kr";
		document.getElementById("label_ranta").style.display = "inline";
	}

	document.body.style.cursor = "default";
}

