var ManuelUdbetaling = false;

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
{
	if (isNaN(parseInt(num))) 
		return "NaN";
	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum));
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;

	var tmpNumStr = new String(tmpNum);
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;
		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";
	return tmpNumStr;
}

function FormatMyCurrency(b)
{
	var s = FormatNumber(b, 2, false, false, true);
	
	if (s.indexOf(".") == -1)
	{
		s = s+".00";
	}
	s = s.replace(".", "*");
	while (s.indexOf(",") != -1)
	{
		s = s.replace(",", ".");
	}
	s = s.replace("*", ",");
	if (s.indexOf(",") == s.length - 2)
		s = s+"0";
	return s;
}

function StripNumber(n)
{
	while (n.indexOf(".")!= -1)
		n = n.replace(".", "");
	n = n.replace(",", ".");
	return Number(n);
}

function EffectiveRate(n, pmt, npv, nv)
{
	i=0.05;
	diff=10;
	prar=0;
	while (diff>0.01)
	{
		nv=pmt*(1-Math.pow((1+i), (-n)))/i;
		prar=100*((Math.pow((1+i),12))-1);
		diff=npv-nv;
		i=i*nv/npv;
	}
	return prar;
}

function Beregn()
{
	FormatFields(false);
	//document.getElementById('felt5').value = document.getElementById('felt2').value - document.getElementById('felt3').value;
	
	//var Pris = document.getElementById('felt1').value - document.getElementById('felt5').value;
	var Pris = document.getElementById('felt1').value;
	var Udbetalingssats = document.getElementById('felt6').item(document.getElementById('felt6').selectedIndex).text;
	var Minimum = Pris * 21 / 100;
	var NyBil = (document.getElementById('felt0a').checked == true);
	var Lobetid = document.getElementById('felt10').item(document.getElementById('felt10').selectedIndex).text;
	var MaxLobeTid = NyBil ? 84 : 72;
	//var MaxYdelse = Number(document.getElementById('felt11a').value);
	var MaxYdelse = 0;
	var FastRente = (document.getElementById('felt9a').checked == true);
	var Rente = 0;
	var IncFactor = 1000;
	
		
	if (!ManuelUdbetaling)
		document.getElementById('felt7').value = Pris * Udbetalingssats / 100;
	else
	{
		// Check om pris er over minimum
		if (document.getElementById('felt7').value < Minimum)
		{
			alert('Udbetaling må ikke være under 21% af Bilens pris');
			document.getElementById('felt7').value = Minimum;
		}
	}
	
	
	if ((!NyBil) && (Lobetid == 84))
	{
		alert('Maximal løbetid for brugte biler er 72 måneder');
		document.getElementById('felt10').selectedIndex = 5;
		Lobetid = 72;
	}

	if (FastRente)
	{
		if (NyBil)
		{
			Rente = ((document.getElementById('felt13').value/360) * 365) / 100;
		}else
		{
			Rente = ((document.getElementById('felt13a').value/360) * 365) / 100;
		}
	}
	else
	{
		if (NyBil)
		{
			Rente = ((document.getElementById('felt14').value/360) * 365) / 100;
		}else
		{
			Rente = ((document.getElementById('felt14a').value/360) * 365) / 100;
		}
	}


	if (MaxYdelse == 0) 
		MaxYdelse = Infinity;

	Rente = Rente/12;
	
	do
	{
		//Forventetlånebehov / Finansieringsbeløb  (pris - udbetaling)
		//document.getElementById('felt8').value = document.getElementById('felt1').value - document.getElementById('felt5').value - document.getElementById('felt7').value;
		document.getElementById('felt8').value = document.getElementById('felt1').value - document.getElementById('felt7').value;
		
		//Dokumentgebyr ()
		var calc15 = document.getElementById('felt8').value * document.getElementById('felt15').value / 100;
		//calc15 = Math.min(calc15, Number(document.getElementById('felt15a').value));
		//calc15 = Math.max(calc15, Number(document.getElementById('felt15b').value));
		calc15 = Math.max(calc15, Number(document.getElementById('felt15b').value));
		//calc15 = calc15 + Number(document.getElementById('felt15a').value)
		//alert('calc15 ' + calc15);
		
		//Stempel
		var calc16 = Math.floor(document.getElementById('felt8').value * document.getElementById('felt16').value / 100);
		
		alert('calc16 ' + calc16);
		//document.getElementById('felt21').value = calc15+calc16+Number(document.getElementById('felt17').value)+Number(document.getElementById('felt18').value)+Number((NyBil ? document.getElementById('felt19').value : document.getElementById('felt20').value));
		var calc_17 = Number(document.getElementById('felt8').value) + Number(document.getElementById('felt15a').value) + calc15 + calc16 + Number(document.getElementById('felt17').value) + Number(document.getElementById('felt18').value);
		alert('calc_17 ' + calc_17);
		//(Stempel)
		//document.getElementById('felt21').value = Math.round(((calc_17 * document.getElementById('felt16').value / 100) + 49) / 100) * 100;
		var calc_18 = Math.round(((calc_17 * Number(document.getElementById('felt16').value) / 100) + 49) / 100) * 100;
		alert('calc_18 ' + calc_18);
		//Total Omkostninger
		document.getElementById('felt21').value = Number(document.getElementById('felt15a').value) + calc15 + Number(document.getElementById('felt17').value) + Number(document.getElementById('felt18').value) + calc_18;
		alert('Total omkostninger ' + document.getElementById('felt21').value);
		//Total Finansieringsbeløb
		document.getElementById('felt22').value = Number(document.getElementById('felt21').value)+Number(document.getElementById('felt8').value);
		alert('Total Finansieringsbeløb ' + document.getElementById('felt22').value );
		var HeleBelob = Number(document.getElementById('felt22').value);
		var Ydelse =  HeleBelob*(Rente / (1 - (Math.pow(1 + Number(Rente), - Lobetid))));
		document.getElementById('felt11').value = Math.round((Ydelse + 0.49) / 1) * 1;
		alert('ydelse ' + Ydelse + ' felt11 ' + document.getElementById('felt11').value);
		if (Ydelse > MaxYdelse) 
		{
			if (Lobetid < MaxLobeTid)
				Lobetid= Number(Lobetid)+12;
			else
				document.getElementById('felt7').value = Number(document.getElementById('felt7').value) + IncFactor;
			//alert(Lobetid+" "+felt7.value);
		}
	}
	while (Ydelse > MaxYdelse);
	
	// Vælg korrekt løbetid
	document.getElementById('felt10').selectedIndex = (Lobetid / 12)-1;

	var Belob = Number(document.getElementById('felt8').value);
	document.getElementById('felt12').value = Math.round(EffectiveRate(Lobetid, Ydelse, Belob, 0)*100)/100;
	EnableCalcFields();
	FormatFields(true);	
	ManuelUdbetaling = false;
	
}

function LazyCoder(color)
{
	// change to div to disable whole line
	//document.getElementById('felt5').style.color = color;
	document.getElementById('felt8').style.color = color;
	document.getElementById('felt11').style.color = color;
	document.getElementById('felt12').style.color = color;
	//document.getElementById('tekst5').style.color = color;
	document.getElementById('tekst8').style.color = color;
	document.getElementById('tekst11').style.color = color;
	document.getElementById('tekst12').style.color = color;
}

function FormatFields(pretty)
{
	if (pretty)
	{
		//document.getElementById('felt5').value = FormatMyCurrency(document.getElementById('felt5').value);
		document.getElementById('felt8').value = FormatMyCurrency(document.getElementById('felt8').value);
		document.getElementById('felt11').value = FormatMyCurrency(document.getElementById('felt11').value);
		document.getElementById('felt12').value = FormatMyCurrency(document.getElementById('felt12').value);
	}
	else
	{
		//document.getElementById('felt5').value = StripNumber(document.getElementById('felt5').value);
		document.getElementById('felt8').value = StripNumber(document.getElementById('felt8').value);
		document.getElementById('felt11').value = StripNumber(document.getElementById('felt11').value);
		document.getElementById('felt12').value = StripNumber(document.getElementById('felt12').value);
	}
	return true;
}

function DisableCalcFields()
{
	LazyCoder("red");
}

function EnableCalcFields()
{
	LazyCoder("black");
}

function felt6_onchange() 
{
	ManuelUdbetaling = false;
	document.getElementById('felt7').value = "";
}

function felt7_onchange() 
{
	ManuelUdbetaling = true;
}

function Button1_onclick() {
	Beregn();
	return true;
}

function SetupLobetid(brugtBil)
{
	if ((brugtBil) && (document.getElementById('felt10').selectedIndex == 6))
	{
		alert('Maximal løbetid for brugte biler er 72 måneder');
		document.getElementById('felt10').selectedIndex = 5;
	}
	return true;
}