//rentebelob 1,5 procent om md
var Interest = 0.0150000000000000000000000;
//adm belob 25 kr
var admbel = 25;
//oprettelses bel 1
var opretbel1 = 350;
// rente bel 1
var rentebel1 = 500;
// rente graense 6 pct
var rentegraense = 0.06;

function addCommasRettes(nStr)
{
	var result;
	result = nStr.toFixed(2);
	nStr = result;
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? ',' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}



function CalculateLoanAmount(repayment, terms)
{
var R = Interest;
var N = parseFloat(terms);
var Y = parseFloat(repayment);
var G = 0;

var K = admbel;
var B = 1 + R;
var A = Y - K;
var C = (1 / (Math.pow(B, N)));

G = ((A) * (1 - (C)) / R) - opretbel1;

if (G > 16667) 
   G = (((A) * (1 - (C))) / (R * 1.05));

//document.getElementById('calctextarea').innerHTML=''+addCommasRettes(G)+'';
return G;
}

function CalculateTerms(loanAmount, repayment)
{
var A;
var B;
var C;
var D;
var E;
var R = Interest;
var G = parseFloat(loanAmount);
var Y = parseFloat(repayment);
var N = 0.000000000000000000000000;

if (G <= 16667)
   G = G + opretbel1;
else
   G = (G + (G * 0.05));

A = (R * G);
B = (Y - admbel);
C = Math.log((1 + R));
D = 1 - (A / B);
//alert(D);
E = -(Math.log(D));
//Fejler her i den linie med E
N = (E) / (C);

document.getElementById('calctextarea').innerHTML=''+addCommasRettes(N)+'';
return N;
}

function CalculateRepayment(terms, loanAmount)
{
var R = Interest;
var G = parseFloat(loanAmount);
var N = parseFloat(terms);
var Y = 0;
var res = 0.000000000000000000000000;
if (G <= 8342)
   Y = ((G + rentebel1) * (Math.pow((1 + R), N) * R) / (Math.pow((1 + R), N) - 1)) + admbel;
else
   Y = ((G + (G * rentegraense)) * (Math.pow((1 + R), N) * R) / (Math.pow((1 + R), N) - 1)) + admbel;

res = Math.ceil(Y);


document.getElementById('calctextarea1').innerHTML='Finansiering i 60 m&aring;neder:<br><h4>M&aring;nedlig ydelse: '+addCommasRettes(res)+'</h4>';
document.getElementById('calctextarea3').innerHTML='Omkostning: '+addCommasRettes((N*res)-G)+'';




return res;
}


function CalculateCostsPercent(NN, GG)
{
var R = Interest;
var Y = 0.0000000000000000000000000;
var N = parseFloat(NN);
var G = parseFloat(GG);
var i = 0.0000000000000000000;
var r = 1.00000000000000000000000;
var r2 = 1;
var cp = 0.0000000000000000000000000000;

	Y = CalculateRepayment(NN, GG);
     while (Math.round(Y) != Math.round((G * Math.pow((1 + r), N) * r) / (Math.pow((1 + r), N) - 1)))
            {

                if (Y < Math.round((G * Math.pow((1 + r), N) * r) / (Math.pow((1 + r), N) - 1)))
                    r = r - r2 / 2;
                else
                    r = r + r2 / 2;
                r2 = r;
                i++;

                if (i > 1000)
                    break;
            }
 
//    cp = Math.round(((Math.pow((1 + r), 12) - 1) * 100), 2);
    cp = ((Math.pow((1 + r), 12) - 1) * 100);

	document.getElementById('calctextarea2').innerHTML='&Aring;OP: '+addCommasRettes(cp)+'%';

	return cp;
}
 
function SelfCalculate(LL,NN)
{

            // G: gldens hovedstol
            // R: terminsretefoden
            // N: antal terminer
            // Y: terminsydelsen

var G = parseFloat(LL);
var N = parseFloat(NN)
var Y;
var R = Interest;
var costsPercent;

Y = CalculateRepayment(NN, LL);

           if (N == 0)//Ubekendt: N
            {

                N = CalculateTerms(G, Y);

 

            }

            else if (G == 0) // Ubekendt: G

            {

                G = CalculateLoanAmount(Y, N);

            }

            else//Ubekendt: Y

            {

                Y = CalculateRepayment(N, G);

            }

 

            costsPercent = CalculateCostsPercent(N, G);

 

            if (isNaN(N))

                N = 0;

            if (isNaN(G))

                G = 0;

            if (isNaN(Y))

                Y = 0;

            

}

