// JavaScript Document

<!--
var _tn=0;
var _ttn=0;

function GetNum(champ, fmt, flag)
{ _ttn=TestNum(champ,fmt, flag); return(_tn);
}

function TestNum(champ, fmt, flag)
{
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==' ' && flag!=null && (flag & 0x0001))
	      { continue;
	      }
	  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,10);
	  ret=1;
	}
  }
return(ret);
}


function FormateVal(val, NbDeci, flag)
{
var s="";

if(!isNaN(val))
    {
      var l,i,tmp,signe;

      var separe=" ";
      if(flag!=null)
	  { if(flag & 0x0001) separe="&nbsp;"; else
	    if(flag & 0x0002) separe="."; else
	    if(flag & 0x0004) separe="";
	  }

      if(NbDeci==2) { val=val*100.0; } else
      if(NbDeci>0) { for(i=0; i<NbDeci; i++) { val=val*10; } }
      else{ NbDeci=0; }

      val=Math.round(val);

      if(val<0) { val=-val; signe=1; } else{ signe=0; }
      s=val.toString();

      l=s.length;
      for(i=NbDeci+1-l; i>0; i--) s="0"+s;

      tmp=l-NbDeci;
      if(tmp>3 && separe.length>0)
	  { for(i=0; i<5; i++)
		{ if (tmp<4) break;
		  tmp-=3;
		  s=s.substring(0, tmp)+separe+s.substring(tmp, l);
		  l+=separe.length;
		}
	  }
      if(NbDeci>0)
	  { l=s.length;
	    s=s.substring(0, l-NbDeci)+","+s.substring(l-NbDeci, l);
	  }
      if(signe) s="-"+s;
    }

return(s);
}



var gIsChange1=0;

function ffff_OC(r)
{ gIsChange1=1;
}

function BeforeSubmit(f,TypeCalc)
{
var NbAnMax=40;

var err=0;
var ers="";
var erc=null;

var tc=TypeCalc;
var v_pret=GetNum(f.pret.value,80);
var v_NbAn=GetNum(f.NbAn.value,20);
var v_taux=GetNum(f.taux.value,22);
var v_mens=GetNum(f.mensual.value,52);

if((tc==1 || tc==3) && v_pret<=0)
    { err=2;
      erc=f.pret;
      ers="Précisez le montant que vous souhaitez emprunter !";
    }
else
if((tc==1 || tc==2) && (v_NbAn<=0 || v_NbAn>NbAnMax))
    { err=3;
      erc=f.NbAn;
      ers="Précisez la durée de remboursement souhaitée ("+NbAnMax+" ans maximum) !";
    }
else if((tc==2 || tc==3) && v_mens<=0)
    { err=4;
      erc=f.mensual;
      ers="Précisez 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=FormateVal(v_mens, 2, 0x0000);
	  }
      else{ v_pret=Math.round(v_mens/t);
	    f.pret.value=FormateVal(v_pret, 0, 0x0000);
	  }
    }
else
if(tc==3)
    { var n;
      var t=v_taux/1200;
      var nMax=NbAnMax*12;

      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=nMax+1;
	  }
      else{ for(crd=v_pret, n=1; n<=nMax; n++)
		{ crd-=v_mens-(crd*t);
		  if(crd<v_mens/1000) break;
		}
	  }
      if(n>nMax)
	  { var s;
	    s="la durée de remboursement excède "+NbAnMax+" ans !\n(votre mensualité est trop faible).";
	    self.alert(s);

	    f.NbAn.value="";
	    f.mensual.focus();
	    f.mensual.select();
	  }
      else{ var NbAn=Math.floor(n/12);

	    f.NbAn.value=NbAn+" ans";
	    n-=(12*NbAn);
	    if(n>0) f.NbAn.value+=" et "+n+" mois";
	  }
    }

return(false);
}

function OnBtnSubmit(f,TypeCalc)
{ BeforeSubmit(f,TypeCalc);
}

function BodyOnLoad()
{ gIsChange1=0;
}

//-->

