
		function findNreplace(str,str_match,str_rep){
			if( (str.indexOf(str_match)>0)&&(str.indexOf(str_match)<str.length-1) ){
				str_result=str.substring(0,str.indexOf(str_match));
				str_result=str_result+str_rep;
				str_result=str_result+str.substring(str.indexOf(str_match)+1,str.length);
				str=str_result;
			}	
			return str;		
		}
		function setBlank(){
			document.calculator.textfield.value="";
			document.calculator.textfield2.value="";
			document.calculator.textfield3.value="";
			document.calculator.textfield4.value="";
		}
		function cutFloat(nbr,nbchiffres){
			pos=(nbr=""+nbr).indexOf(".");
			if( (pos > 0)&&((nbr.length-pos)>=parseInt(nbchiffres)) ){
				nbr=nbr.substring(0,pos+1+parseInt(nbchiffres));
			}
			return nbr;
		}
		function jtrim(text){
			nbSpaces=0
			for(cpt=0;cpt<text.length;cpt++){
				if( text.charAt(cpt)==' ' )nbSpaces++;
			}
			if(nbSpaces==text.length)text="";
			return text;
		}
		function DoEval() {
			missing=0;
			mensualite=findNreplace(jtrim(document.calculator.textfield.value),",",".");
			taux=findNreplace(jtrim(document.calculator.textfield2.value),",",".");
			montant=findNreplace(jtrim(document.calculator.textfield3.value),",",".");
			duree=findNreplace(jtrim(document.calculator.textfield4.value),",",".");
			d= parseFloat(duree) / 12;
			
			if( ((mensualite.length > 0)&&((""+parseInt(mensualite)).indexOf("les valeurs saisies ne sont pas toutes numeriques!") >=0))||
				((taux.length > 0)&&((""+parseInt(taux)).indexOf("les valeurs saisies ne sont pas toutes numeriques!") >=0))||
				((montant.length > 0)&&((""+parseInt(montant)).indexOf("les valeurs saisies ne sont pas toutes numeriques!") >=0))||
				((duree.length > 0)&&((""+parseInt(duree)).indexOf("les valeurs saisies ne sont pas toutes numeriques!") >=0)) ){
					window.alert("les valeurs saisies ne sont pas toutes numeriques!");
					return;
			}
			
			n = d * 12;			
			
			if( (mensualite.length < 1) )missing=1;
			if( (taux.length < 1) )missing=2;
			if( (montant.length < 1) )missing=3;
			if( (duree.length < 1) )missing=4;
			switch(missing){
				case 0:
						window.alert("Le champ à calculer doit etre laissé vide!");
					break;
				case 1:
					if( (duree.length < 1)||(taux.length < 1)||(montant.length < 1) ){
						window.alert("Vous devez remplir trois champs dont le taux pour que le calcul se fasse !");
					}else{
						//mensualite=(parseFloat(montant)+parseFloat((parseFloat(montant)*parseFloat(taux))/100))/parseFloat(duree);
						tempo=parseFloat(taux)/ 1200;
						mensualite=(tempo * parseFloat(montant)) / (1 - ( Math.pow((1 + tempo),-n) ));
						mensualite=cutFloat(mensualite,2);
						document.calculator.textfield.value=findNreplace(mensualite,".",",");
					}
					break;
				case 2:
					if( (mensualite.length < 1)||(duree.length < 1)||(montant.length < 1) ){
						window.alert("Vous devez remplir trois champs dont le taux pour que le calcul se fasse !");
					}else{
						//taux=(parseFloat(mensualite)*parseFloat(duree)-parseFloat(montant))*100/parseFloat(montant);
	
							t1 = 100; t2 = 0; marge =parseFloat(montant)/ 10000; k = 0; nbf = 0;
						      	do{
									nbf = nbf + 1;
						    		if (nbf > 500){ k = 1; continue;}
						    		taux = (t1 + t2) / 2;
						    		tempo = taux / 1200;
						    		if (tempo == 0){ k = 1; continue;}
						    		c = (parseFloat(mensualite) * ((1 - (  Math.pow( (1 + tempo), (n * (-1)) ) )) / tempo));
						    		resid = Math.abs(parseFloat(montant) - c);
						    		if (resid > marge){
						       			if (t1 == t2){ k = 1; continue;}
						       			if (c >parseFloat(montant)) t2 = taux; else t1 = taux;
						    		}
						      	}while( (resid > marge) && (k != 1) );
								
						      	if ( k == 0 )
						     	 	document.calculator.textfield2.value=findNreplace(cutFloat(taux,2),".",",");
						      	else
									window.alert("Le calcul du taux n'est pas possible avec les valeurs saisies");
									
					}
					break;
				case 3:
					if( (mensualite.length < 1)||(taux.length < 1)||(duree.length < 1) ){
						window.alert("Vous devez remplir trois champs dont le taux pour que le calcul se fasse!");
					}else{
						//montant=(parseFloat(mensualite)*parseFloat(duree))/(1+parseFloat(taux)/100);
						tempo=parseFloat(taux)/ 1200;
						montant=(parseFloat(mensualite) * ((1 - (  Math.pow((1 + tempo),(n * (-1))) )) / tempo));
						montant=cutFloat(montant,2);
						document.calculator.textfield3.value=findNreplace(montant,".",",");
					}
					break;
				case 4:
					if( (mensualite.length < 1)||(taux.length < 1)||(montant.length < 1) ){
						window.alert("Vous devez remplir trois champs dont le taux pour que le calcul se fasse !");
					}else{
						//duree=(parseFloat(montant)+parseFloat((parseFloat(montant)*parseFloat(taux))/100))/parseFloat(mensualite);
						tempo=parseFloat(taux)/ 1200;
						r = parseFloat(montant) * tempo;
		        		if (parseFloat(mensualite) < r )
        					window.alert("Le calcul de la durée n'est pas possible avec les valeurs saisies");
        				else{
            				a = parseFloat(mensualite) / tempo;
            				n = -1 * Math.log((a - parseFloat(montant)) / a) * (1 / Math.log(1 + tempo));
            				duree=cutFloat(n,1);
							document.calculator.textfield4.value=findNreplace(""+Math.ceil(duree),".",",");
        				}
				
					}
					break;
			}
		}
