function calcul1(){
	var capital = document.choix1.capital.value;
	var nombre  = 12 * parseInt(document.choix1.nombre.value);
	var taux    = document.choix1.taux.value;
	// Calcul echeance
	i = taux / 1200.0;
	m = capital*i*Math.pow(1+i,nombre)/(Math.pow(1+i,nombre)-1);
	// Affichage résultat
	document.choix1.ech.value = Math.round(m*100.0) / 100.0;
	return;
}

var _tn=0;
function TestNum(champ, fmt)
{
var ret=0;
var s=""+champ;
var i1,i2,c;

_tn=0;
i1=0;
i2=s.length;
//for(; i1<i2; i1++) { c=s.charAt(i1); if(c!=' ' && c!='\t') { break; } }
//for(; i2>i1; i2--) { c=s.charAt(i2-1); if(c!=' ' && c!='\t') { break; } }

if(i1<i2)
  {
    var MaxEntier,MaxDeci,NegOK=0,NbEntier=0,NbDeci=0,iVirg=0,i,s2="";

    if(fmt<0)
	{ NegOK=1;
	  fmt=-fmt;
	}
    MaxEntier=fmt/10;
    MaxDeci  =fmt%10;

    for(i=i1; i<i2; i++)
	{ c=s.charAt(i);
	  if(c>='0' && c<='9')
	      { if(iVirg) { NbDeci++; if(NbDeci>MaxDeci) { ret=-3; break; } }
		else { NbEntier++; if(NbEntier>MaxEntier) { ret=-2; break; } }
	      }
	  else
	  if(c=='.' || c==',')
	      { if(iVirg) { ret=-1; break; }
		iVirg=i+1;
		c='.';
	      }
	  else
	  if(c=='-')
	      { if(!NegOK || i>i1) { ret=-4; break; }
	      }
	  else{ ret=-1;
		break;
	      }
	  s2+=c;
	}
    if(!ret)
	{ _tn=(iVirg) ? parseFloat(s2) : parseInt(s2);
	  ret=1;
	}
  }
return(ret);
}

function GetNum(champ, fmt)
{ TestNum(champ,fmt); return(_tn);
}


var gIsChange1=0;

function ffff_OC(r)
{ gIsChange1=1;
}

function BeforeSubmit(f,TypeCalc)
{
var err=0;
var ers="";
var erc=null;
var s="";

var tc=TypeCalc;
var v_pret, v_NbAn, v_taux, v_mens, v_rev;

if(tc==2)
    { v_rev=GetNum(f.RevMens.value,60);
      v_mens=(v_rev>0) ? (v_rev*0.33) : 0;
      v_mens=Math.floor(v_mens);
      f.mensual.value=(v_mens>0) ? ""+v_mens : "";
    }
else{ v_rev=0;
    }

v_pret=GetNum(f.pret.value,80);
v_NbAn=GetNum(f.NbAn.value,20);
v_taux=GetNum(f.taux.value,22);
v_mens=GetNum(f.mensual.value,52);

if(v_pret<=0 && (tc==1 || tc==3))
    { err=2;
      erc=f.pret;
      ers="Précisez le montant que vous souhaitez emprunter !";
    }
else
if((v_NbAn<=0 || v_NbAn>35) && (tc==1 || tc==2))
    { err=3;
      erc=f.NbAn;
      ers="Précisez la durée de remboursement souhaitée (35 ans maximum) !";
    }
else if(v_mens<=0 && (tc==2 || tc==3))
    { err=4;
      if(tc==2)
	  { erc=f.RevMens;
	    ers="Indiquez votre revenu mensuel !";
	  }
      else{ erc=f.mensual;
	    ers="Indiquez le montant de la mensualité souhaitée !";
	  }
    }
else
if(v_taux<=0 || v_taux>20)
    { err=1;
      erc=f.taux;
      ers="Saisissez le taux du prêt !";
    }
else
if(!gIsChange1)
    { err=100;
      ers="Résultats déjà calculés !";
    }

if(ers!="")
    { self.alert(ers);
      if(erc!=null)
	  { erc.focus();
	    erc.select();
	  }
      tc=0;
    }

if(tc==1 || tc==2)
    {
      var t;
      var n=v_NbAn*12;

      if(v_taux!=0)
	  { t=v_taux/1200;
	    t=(t/(1-Math.pow(1+t, -n)));
	  }
      else{ t=1/n;
	  }
      if(tc==1)
	  { v_mens=Math.round((v_pret*t)*100)/100;
	    f.mensual.value=v_mens;
	  }
      else{ v_pret=Math.round(v_mens/t);
	    f.pret.value=v_pret;
	  }
    }
else
if(tc==3)
    { var n;
      var t=v_taux/1200;

      if(t==0)
	  { t=v_mens/v_pret;
	    n=Math.floor(t);
	    if(t-n>0.001) n++;
	  }
      else
      if(v_mens<=(v_pret*t))
	  { n=301;
	  }
      else{ //t=-(Math.log(1-(t*v_pret)/v_mens)/Math.log(1+t));
	    //n=Math.floor(t);
	    //if(t-n>0.001) n++;

	    for(crd=v_pret, n=1; n<301; n++)
		{ crd-=v_mens-(crd*t);
		  if(crd<v_mens/1000) break;
		}
	  }
      if(n>420)
	  { s="la durée de remboursement excède 35 ans !\n(votre mensualité est trop faible).";
	    self.alert(s);

	    f.NbAn.value="";
	    f.NbMois.value="";
	    f.mensual.focus();
	    f.mensual.select();
	  }
      else{ f.NbAn.value  =Math.floor(n/12);
	    f.NbMois.value=n-(12*f.NbAn.value);
	  }
    }

return(false);
}

function OnBtnSubmit(f,TypeCalc)
{ BeforeSubmit(f,TypeCalc);
}

function BodyOnLoad()
{ gIsChange1=0;
}