function Decimales (entree,decim) {
        entree += "";                         
        var original_entree = entree;          
        var montant = parseFloat(entree);      
		var valpos = "";
		var valdec = "";
        if (isNaN (montant))                  
                return original_entree;
		if (decim == 2) {
	        montant = Math.round (100 * montant);  
	        var chaine;

	        if (montant < 10) {
	                chaine = "00" + montant;      
	        } else if (montant < 100) {
	                chaine = "0" + montant;
			} else {
	                chaine = "" + montant;
			}
			valpos = chaine.substring(0,chaine.length - 2);
			valdec = chaine.substring(chaine.length - 2,chaine.length);
    	} else {
			valpos  = "" + Math.round (montant);  // Exprime le montant
		}

		var chiffresavant = "";
		var chiffresmilieu   = "";

		if (valpos.length > 6) {
			chiffresavant = valpos.substring(0,(valpos.length - (parseInt(valpos.length / 3) * 3) ))+",";
		}
		if (valpos.length > 3){
			chiffresmilieu   = valpos.substring(valpos.length - 6,valpos.length - 3)+",";
		}

		chiffresfin   = valpos.substring(valpos.length - 3, valpos.length);

		nouvalpos = "$ "+chiffresavant+chiffresmilieu+chiffresfin;
		if (decim == 2) {nouvalpos = nouvalpos+"."+valdec;}
        return nouvalpos;                      
}

function calcMoDetails(calculateOption) {     
    if(document.calForm.pricipal.value.length==0) {document.getElementById("error").innerHTML="Please enter the principal amount";return;}
	    if(document.calForm.rate.value.length==0 || parseFloat(document.calForm.rate.value)>20) {document.getElementById("error").innerHTML="Please enter a rate under 20%"; return;}
	   if(document.calForm.term.value.length==0) {document.getElementById("error").innerHTML="Enter the term";return;}              
	var paymentsPerYear = document.calForm.payType.value;
	var loanYears    = parseFloat(document.calForm.term.value);
	var totalNumberOfLoanPayments    = loanYears * parseInt(paymentsPerYear);
	var loanPrincipal   = document.calForm.pricipal.value;
	var periodicPayment = "";
	var interestRate        = parseFloat(document.calForm.rate.value);

    while (periodicPayment.indexOf("$") ==0 || periodicPayment.indexOf(" ") ==0) {periodicPayment = periodicPayment.substring(1,periodicPayment.length);}

	while (periodicPayment.indexOf(",") != -1)  {
		var periodicPayment = ""+periodicPayment.substring(0,periodicPayment.indexOf(","))+periodicPayment.substring(periodicPayment.indexOf(",")+1,periodicPayment.length)
	}


    while (loanPrincipal.indexOf("$") ==0 || loanPrincipal.indexOf(" ") ==0) {loanPrincipal = loanPrincipal.substring(1,loanPrincipal.length);}
	while (loanPrincipal.indexOf(",") != -1)  {
		var loanPrincipal = ""+loanPrincipal.substring(0,loanPrincipal.indexOf(","))+loanPrincipal.substring(loanPrincipal.indexOf(",")+1,loanPrincipal.length)
	}

	var parsedPeriodicPayment   = parseFloat(periodicPayment);
	if (parsedPeriodicPayment  != periodicPayment && periodicPayment > 0 ) {
		alert(1);
		return;
	}


	
	diffcalc = 99999;
	nouvpaym = 0;
	tauxcalc = 0.09;
	if (calculateOption == "i" && periodicPayment > 0 ) {
		while (Math.abs(diffcalc) > 0.1 ) {
			nouvpaym = (parseFloat(loanPrincipal) * tauxcalc) / ( 1 - ( 1/ Math.pow((1+tauxcalc),totalNumberOfLoanPayments)));
			diffcalc = (periodicPayment - nouvpaym);
			var signe = (diffcalc) / Math.abs(diffcalc)
			tauxcalc =  (0.01 * signe) * ( Math.abs(diffcalc) > 500 ) + (0.0001 * signe) * ( Math.abs(diffcalc) > 20 ) +  (0.00001 * signe) * ( Math.abs(diffcalc) > 10 ) + (0.000001 * signe) * ( Math.abs(diffcalc) > 1 ) +(0.0000001 * signe)  + tauxcalc;
		}
		interestRate =  2 * ( Math.pow((1+tauxcalc),parseInt(paymentsPerYear)/2) - 1);  
		interestRate = parseInt(interestRate * 1000000)/10000;
	}

    if (isNaN (interestRate))  {                
		alert('The Interest rate ('+interestRate+') is causing an error!  Please re-enter values ...');
		return;
	}
    if (interestRate < 0.3) {
        interestRate = interestRate * 100.0;   
	}

    document.calForm.rate.value = interestRate+" %";
    interestRate = interestRate / 100.0;   

	var intcan = Math.pow((1+interestRate/2),(2/parseInt(paymentsPerYear))) - 1;  
	var intcandebase = Math.pow((1+interestRate/2),(2/12)) - 1;  
	var intus  = interestRate / parseInt(paymentsPerYear);
	var intusdebase  = interestRate / 12;
 
	if (calculateOption == "p" && intcan != 0 ) {
		

		calcpaymdebase = periodicPayment;
		calcperiodes = parseInt(paymentsPerYear);

		if ((paymentsPerYear == '52a' ||paymentsPerYear == '26a') && intcan != 0 ) {
			var calcpaymdebase = periodicPayment * (parseInt(paymentsPerYear)/13) ;
			var loanPrincipal  = (calcpaymdebase/intusdebase) * ( 1 - (1/(Math.pow((1+intusdebase),(loanYears*12))) ) ) ;
		} else {
			var loanPrincipal  = (periodicPayment/intus) * ( 1 - (1/(Math.pow((1+intus),(totalNumberOfLoanPayments))) ) ) ;
		}
		document.calForm.pricipal.value = Decimales(loanPrincipal,0);

	} 
	
	if (calculateOption == "p" && intcan == 0 ) {
		var loanPrincipal  = (periodicPayment*totalNumberOfLoanPayments) ;
		document.calForm.pricipal.value = Decimales(loanPrincipal,0);
	} 

	var montantprin   = parseFloat(loanPrincipal);
	if (montantprin  != loanPrincipal) {
		document.calForm.pricipal.value = " ERROR ";
		return;
	}

	if ( intcan == 0 ) {
		var paymbasecana  = montantprin/ (loanYears * 12) ;
		var paymbaseusa   = paymbasecana;
	} else {
		var paymbasecana  = (montantprin * intcandebase) / ( 1 - ( 1/ Math.pow((1+intcandebase),(loanYears*12))));
		var paymbaseusa   = (montantprin * intusdebase ) / ( 1 - ( 1/ Math.pow((1+ intusdebase),(loanYears*12))));
	}		

	var paymcana = paymbasecana;
	var paymusa  = paymbaseusa;

	if ((paymentsPerYear == '52' || paymentsPerYear == '26'|| paymentsPerYear == '2'|| paymentsPerYear == '1' ) && intcan != 0 ) {
		var paymcana = (montantprin * intcan) / ( 1 - ( 1/ Math.pow((1+intcan),totalNumberOfLoanPayments)));
		var paymusa  = (montantprin * intus ) / ( 1 - ( 1/ Math.pow((1+ intus),totalNumberOfLoanPayments)));
	} 
 
	document.getElementById("periodicP").innerHTML=""+Decimales(paymusa,2); 

	var balcana = loanPrincipal;
	var balusa  = balcana;
	var intcana = 0;
	var intusa = 0;
	var inttotcana = 0;
	var inttotusa = 0;
	

	var kk = jj;
    for (var jj = 0; jj < totalNumberOfLoanPayments; jj++) {
	 	intcana    = intcan * balcana;
		inttotcana = inttotcana + intcana;
		balcana    = balcana - (paymcana - intcana); 

	 	intusa    = intus * balusa
		inttotusa = inttotusa + intusa
		balusa    = balusa - (paymusa - intusa); 
		kk = jj;	
		if (balusa < 0  ) { 
			balusa = 0;
			break;
		}
		if (balcana < 0 ) { 
			balcana = 0 
			break;
		}
	}
	
	vraiterme = Decimales((kk+1)/parseInt(paymentsPerYear),2);
	if (intcan == 0 ) {
		vraiterme = loanYears ;
	} else {
		vraiterme = vraiterme.substring(1,vraiterme.length);
	}
	document.getElementById("totalI").innerHTML=""+Decimales(parseInt(inttotusa),0);
	document.getElementById("totalP").innerHTML=""+Decimales(montantprin + parseInt(inttotusa), 0);
}
