// JavaScript Document
var iLeaseStartFee = 495;
var iLeaseFee = 45;

var istartFee = 495;
var ifee = 45;

function visaAktuellRanta()
{
	var aktuellRanta = 4.95; // Används för aktuell räntesats
	document.getElementById('ir').value = aktuellRanta;
}

/*--------------------------------------------------------------------------------*/
// function replaces a certain char ',' to other '.'
// @param:	evt_obj = input field that receives input (user entering data)
/*--------------------------------------------------------------------------------*/
function replaceText(obj){
	var symbolPos = new Number(obj.value.indexOf(","));
	if (symbolPos > -1){
		var begString = new String(obj.value.substr(0, symbolPos));
		var endString = new String(obj.value.substr(symbolPos + 1, obj.value.length));
		//alert("begString: " + begString + " \nendString: " + endString);
		obj.value = begString + "." + endString;
	}
}
function checkForZero(obj){
	obj.parentElement.nextSibling.innerText = '';
	if(obj.value < 0 || obj.value.length==0){
		obj.parentElement.nextSibling.innerText = 'V&auml;rdet f&aring;r inte vara mindre &auml;n 20000';
		//alert("This field can't be 0!");
		obj.focus();
	}
}
function checkForZeroLease(obj){
	alert(obj);
	obj.parentElement.nextSibling.innerText = '';
	if(obj.value <= 0 || obj.value.length==0){
		obj.parentElement.nextSibling.innerText = 'R&auml;ntan f&aring;r inte vara mindre &auml;n 0';
		alert("This field can't be 0!");
		obj.focus();
	}
}

function skrivUt(){window.print();}

function cmdCalc_Click(){
	if(document.form1.price.value==0 || document.form1.price.value.length==0){
		//alert ("The Price field can't be 0!");
		form.price.focus();
	}else if(document.form1.ir.value==0 || document.form1.ir.value.length==0){
		//alert("The Interest Rate field can't be 0!");
		document.form1.ir.focus();
	}else calculatePayment();
}

function cmdCalcLease(){
	var princ = Number(document.form1.txtLeasePrice.value);
	var iRestValue = princ*(Number(document.form1.txtLeaseRestV.value)/100);
	princ -= Number(document.form1.txtLeaseRent.value);
	var intRate = (document.form1.txtLeaseIntr.value/100)/12;
	var months = Number(document.form1.selMonthLease.options[document.form1.selMonthLease.selectedIndex].value);
	var iPMT = Math.abs(PMT(Number(document.form1.txtLeaseIntr.value),months,-princ,iRestValue,1));
	var iRate = rate(months,iPMT+Number(iLeaseFee),Number((-princ)+Number(iLeaseStartFee)),iRestValue,0,0);
	
	document.form1.txtLeasePMT.value = formatNumber(Math.round(iPMT));
	document.form1.txtLeasePrinc.value = formatNumber(Math.round(princ));
	//document.form1.txtLeaseNIntr.value = (iRate*12*100).toFixed(2);
	var iNEffIntr = effective_interest(iRate);
	//document.form1.txtLeaseEffecIntr.value = (iNEffIntr*100).toFixed(2);
	//document.form1.txtLeaseRestValue.value = formatNumber(iRestValue);

	document.getElementById('LeaseText').innerHTML = 'Uppl&auml;ggningsavgift samt aviavgift tillkommer om fn '+ iLeaseStartFee +':- respektive '+ iLeaseFee +':-.';

}

function calculatePayment(){
	var princ = Number(document.form1.price.value);
	var iRestValue = princ*(Number(document.form1.restValue.value)/100);
	princ -= Number(document.form1.dp.value);
	var intRate = (document.form1.ir.value/100)/12;
	var months = Number(document.form1.selMonths.options[document.form1.selMonths.selectedIndex].value);
	
	var iPMT = Math.abs(PMT(Number(document.form1.ir.value),months,-princ,iRestValue,0));
	var iRate = rate(months,iPMT+Number(ifee),Number((-princ)+Number(istartFee)),iRestValue,0,0);
	
	document.form1.pmt.value = formatNumber(Math.round(iPMT));
	document.form1.principle.value = formatNumber(Math.round(princ));
		
	var iNEffIntr = effective_interest(iRate);
	//document.form1.nEffecIntr.value = (iNEffIntr*100).toFixed(2);
	//document.form1.txtRestValue.value = formatNumber(iRestValue);
	
	document.getElementById('LoanText').innerHTML = 'Uppl&auml;ggningsavgift samt aviavgift tillkommer om fn '+ istartFee +':- respektive '+ ifee +':-. Den effektiva r&auml;ntan &auml;r '+ ((iNEffIntr*100).toFixed(2)) +'%.';
	
}

function setMinAdvance(sVal, obj){
	var iVal = Number(sVal);
	obj.value = (iVal*.2);
}

function checkMin20Percent(obj,sVal){
	var iVal = Number(sVal);
	var iCurrVal = Number(obj.value);
	document.getElementById('Perc20').innerText = ' ';
	
	if(iCurrVal>=20 && iCurrVal<100){
		obj.value = (iCurrVal/100)*iVal;
	}
	
	else{
		var iMin = 0;
		if(Number(obj.value<iMin)){
			obj.value = iMin;
			document.getElementById('Perc20').innerText = 'Minst 20% av priset';
			return false;
		}else
			return true;
	}
}

function fixValue(obj,iVal){
	var iCurrVal = Number(obj.value);
	
	if(iCurrVal>=0 && iCurrVal<100){
		obj.value = (iCurrVal/100)*iVal;
	}else{
	
	}

}

function formatNumber(iVal){
	var str = new String();
	var sVal = iVal.toString();
	var iChrCnt = sVal.length-1;
	var iSpaceCnt = 0;
	for(var i=iChrCnt;i>=0;i--){
		iSpaceCnt++;
		str = sVal.charAt(i) + str;
		if(iSpaceCnt==3){
			str = ' '+ str;
			iSpaceCnt=0;
		}
	}
	return str;
}

function effective_interest(nom_interest){
	return Math.pow((1+nom_interest),12)-1;
}

function PMT(interest,period,PV,FV,type){
        var monthcost = 0;
        var I = interest/100/12;
        var S = type;
        var N = period;
        try{
            monthcost =  -(((-PV)*Math.pow((1.0+I),N)-FV)/((1.0+I*S)*((Math.pow((1.0+I),N)-1.)/I)));
		}catch(e){
			monthcost=0;
		}
        return monthcost
}

function rate(nPerioder, fBetalning, fNuvarde, fSlutvarde, fTyp, fGissning){
	var x = new Number(0.0);
	var xNy = new Number(0.0);
	var fTerm1 = new Number(0.0);
	var fTerm2 = new Number(0.0);
	var t = new Number(1.0);
	var Epsilon = Number(1.0e-7);
	var maxAntalIterationer=150;
	var antalIterationer=0;
	//if (fNuvarde > 0) alert("Varning: fNuvarde brukar vara ett negativt tal");
	if(fGissning==0) x = Number(0.1);
	else x = fGissning;
	while((t > Epsilon) && (antalIterationer < maxAntalIterationer)){
	    if (x==0) xNy = x - (fNuvarde + fBetalning*nPerioder + fSlutvarde) / (fNuvarde*nPerioder + fBetalning*(nPerioder*(nPerioder-1.0) + 2*fTyp*nPerioder)/2.0);
	    else{
			fTerm1 = Math.pow(Number(1.0)+x, Number(nPerioder-1));
			fTerm2 = fTerm1*(Number(1.0)+x);
			xNy = x*(1.0 - (x*fNuvarde*fTerm2 + fBetalning*(1.0+x*fTyp)*(fTerm2-1.0) + x*fSlutvarde) / (x*x*nPerioder*fNuvarde*fTerm1 - fBetalning*(fTerm2-1.0) + x*fBetalning*(1.0+x+fTyp)*nPerioder*fTerm1));
		}
		antalIterationer++;
		t = Math.abs(xNy - x);
		x = xNy;
	}
	fGissning = x
	return x
}


function changeLL(bLoan){
	if(bLoan){
		document.getElementById('tblLoan').style.display='none';
		document.getElementById('tblLease').style.display='block';
	}else{
		document.getElementById('tblLoan').style.display='block';
		document.getElementById('tblLease').style.display='none';
	}
}

function checkRestValue(obj){
	//document.getElementById('ErrRest').innerHTML = '';
	obj.parentElement.nextSibling.innerText = '';
	if(obj.value.length==0) obj.value=0;
	else{
		var iMonths = Number(document.form1.selMonths.options[document.form1.selMonths.selectedIndex].value);
		if((obj.value>50 && iMonths==24) ||
		(obj.value>40 && iMonths==36) ||
		(obj.value>30 && iMonths==48) ||
		(obj.value>10 && iMonths==60)
		){
			//document.getElementById('ErrRest').innerHTML = 'Restvärdet är högre än rekommenderat.';
			obj.parentElement.nextSibling.innerText = 'Restv&auml;rdet &auml;r h&ouml;gre &auml;n rekommenderat.';
		}
	}
}

function setRestValue(id){
	var iRV = 0;
	switch(id){
		case 24:
			iRV = 50;
		break;
		case 36:
			iRV = 40;
		break;
		case 48:
			iRV = 30;
		break;
		case 60:
			iRV = 10;
		break;
		default:
			iRV = 10;
	}
	document.form1.restValue.value = iRV;
}

//-->
