MINTAUX=3;

MAXTAUX=20;

MINCAP=15000;

MAXCAP=5000000;

MINMENS=150;

MAXMENS=4000;

NumChars = "0123456789";

DecChars = "0123456789.,";


function IsNumeric(Data) {

var It = true;
var c;

	for (var x = 0; x < Data.length; x++)

		if (It) {
			c = Data.charAt(x);
			It = ( NumChars.indexOf(c) != -1);
		}

		return It;
}



function IsDecimal(Data) {

var It = true;
var c;

	for (var x = 0; x < Data.length; x++)

		if (It) {
			c = Data.charAt(x);
			It = ( DecChars.indexOf(c) != -1);
		}

		return It;
}

function checkNumber(str)
{
    var str2=""

    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if (ch==",") {

                ch="."
		}
        str2=str2+ch;
    }

    return str2;
}

function checkTaux(chaine)
{
	if(chaine!="")
	{
	    if (IsDecimal(chaine) == false)
	    {
		alert("Saisissez un taux numérique");
		document.formcal.taux.focus();
	    
		var chaine2="";

		for (var i = 0; i < chaine.length; i++) 
		{
	        	var car = chaine.substring(i, i + 1);
						
			if (IsDecimal(car) == false)
			{
				car="";
			}
	        chaine2=chaine2+car;
	    	}
	    document.formcal.taux.value=chaine2;
	    return chaine2;
	    }
	}
}

function checkComma(chaine)
{
	var car = chaine.charAt(chaine.length-1);
	if ( car == ',' || car == '.' ) 
	{
		for (var i = 0; i < chaine.length-1; i++) 
		{
	        	var car2 = chaine.substring(i, i + 1);
			if (car2 == ',' || car2 == '.' )
			{
			    document.formcal.taux.value=chaine.substring(0, chaine.length-1);
			    return;
			}
		}
	}
}

function verifieTaux (i)
{
	if (IsDecimal(i) == false)
	{
		alert("Saisissez un taux numérique.");
		document.formcal.taux.focus();
		return "";
	}

	if (i<MINTAUX)
	{
		alert("Saisissez un taux supérieur à " + MINTAUX +".");
		document.formcal.taux.focus();
		return "";
	}

	if (i>MAXTAUX)
	{
		alert("Saisissez un taux inférieur à " + MAXTAUX+".");
		document.formcal.taux.focus();
		return "";
	}

	return i;
}

function checkMensualite(chaine)
{
	if(chaine!="")
	{
	    if (IsNumeric(chaine) == false)
	    {
		alert("Saisissez un taux numérique.");
		document.formcal.mens.focus();
	    
		var chaine2="";

		for (var i = 0; i < chaine.length; i++) 
		{
	        	var car = chaine.substring(i, i + 1)
			if (IsNumeric(car) == false)
			{
				car="";
			}
	        chaine2=chaine2+car;
	    	}
	    document.formcal.mens.value=chaine2;
	    return chaine2;
	    }
	}
}

function verifieMensualite (m)
{
	if (IsNumeric(m) == false)
	{
		alert("Saisissez une mensualité numérique.");
		document.formcal.mens.focus();
		return "";
	}

	if (m < MINMENS)
	{
		alert("La mensualité ne doit pas être inférieure à "+MINMENS+".");
		document.formcal.mens.focus();
		return "";
	}

	if (m > MAXMENS)
	{
		alert("La mensualité ne doit pas être supérieure à " + MAXMENS+".");
		document.formcal.mens.focus();
		return "";
	}

	return m;
}

function checkMontant(chaine)
{
	if(chaine!="")
	{
	    if (IsNumeric(chaine) == false)
	    {
		alert("Saisissez un taux numérique.");
		document.formcal.mont.focus();
	    
		var chaine2="";

		for (var i = 0; i < chaine.length; i++) 
		{
	        	var car = chaine.substring(i, i + 1)
			if (IsNumeric(car) == false)
			{
				car="";
			}
	        chaine2=chaine2+car;
	    	}
	    document.formcal.mont.value=chaine2;
	    return chaine2;
	    }
	}
}

function verifieMontant (cap)
{
	if (IsNumeric(cap) == false)
	{
		alert("Saisissez un montant numérique.");
		document.formcal.mont.focus();
		return "";
	}

	if (cap < MINCAP)
	{
		alert("Le montant du capital emprunté doit être supérieur à "+MINCAP +".");
		document.formcal.mont.focus();
		return "";

	}

	if (cap > MAXCAP)
	{
		alert("Le montant du capital emprunté doit être inférieur à "+MAXCAP +".");
		document.formcal.mont.focus();
		return "";
	}

	return cap;
}



function calcul (){

var n;
var cap;
var i;

	document.formcal.dure.value="";


	if (document.formcal.taux.value==""){stop();return;}
	if (document.formcal.mont.value==""){stop();return;}
	if (document.formcal.mens.value==""){stop();return;}

	n=document.formcal.taux.value;
	if (verifieTaux(n) =="")
		return;

	i=checkNumber(n);
	i /= 1200;

	cap = document.formcal.mont.value;
	if (verifieMontant(cap)  == "") 
		return;

	var m=document.formcal.mens.value;
	if (verifieMensualite(m) == "")
		return;

	n=calculn(i,cap,m);
	if (n=="")
		return;

	n=Math.ceil(calculn(i,cap,m));
	if (n=="")
		return;

	document.formcal.dure.value=n + " ans";
}



function calculn(i,cap,m){

		for(var n = 0; cap > 0; n++){
			cap = ( cap * ( 1 + i)) - m;
			if(n > 300)break;
		}

		n /= 12;

		if (n < 5){
			alert(" Cette solution n'est pas réaliste .\r Modifiez l'un des paramètres.")
			return "";
		}

		if (n > 25){
			alert(" Cette solution n'est pas réaliste .\r Modifiez l'un des paramètres.")
			return "";
		}

		n *= 100;
		n = parseInt(n);
		n /= 100;

		return n;

}

function stop(){
	alert("Il manque des données\r Veuillez saisir tous les champs s'il vous plait.")
}



function annuler() {

	document.formcal.dure.value="";
	document.formcal.taux.value="";
	document.formcal.mens.value="";
	document.formcal.mont.value="";
}