// JavaScript Document
<!--

function SetSelect(s, v)
{
var i;
for(i=0; i<s.options.length; i++)
    { if(s.options[i].value==v) { s.selectedIndex=i; break; }
    }
}

function GetSelect(s)
{
if(!(s.selectedIndex>=0)) return(null);
var v=s.options[s.selectedIndex].value;
if(v==null || v=="") return(null);
var v2=parseInt(v,10);
return((isNaN(v2)) ? v : v2);
}

function SetRadio(s, v)
{
var i;
for(i=0; i<s.length; i++)
    { if(s[i].value==v) { s[i].checked=1; break; }
    }
}

function GetRadio(s)
{
var i;
for(i=0; i<s.length; i++)
    { if(s[i].checked==1) return(s[i].value);
    }
return(0);
}

//desuet
function GetSelectedInt(s)
{ return(parseInt(s.options[s.selectedIndex].value,10));
}

//desuet
function SetIndex(s, v)
{ SetSelect(s, v);
}




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(val!=null && !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);
}



//------------------------------------------------------------------
//-------------SCRIPTS NON GENERIQUES-------------------------------
//------------------------------------------------------------------

var gIsChange1=0;

function ffff_OC(sName)
{
gIsChange1=1;

var f=document.ffff;
}



function BeforeSubmit(f,IsAlert)
{
var ers="";
var OData = MainGetForm();


if(OData.PretMontant<10000 || OData.PretMontant>1000000)    { ers="Veuillez saisir un montant du prêt compris entre 10000 € et 1000000€"; } else
if(OData.PretNbAn < 7 || OData.PretNbAn > 50)               { ers="Veuillez saisir une durée du prêt comprise entre 7 et 50 ans" ; } else
if(OData.PretTaux <=0 || OData.PretTaux > 20)               { ers="Veuillez saisir un taux d'intérêt compris entre 0,1% et 20%"; } else
if(OData.PretDebAn < 2007 || OData.PretDebAn > 2080)        { ers="Début des remboursements : le dispositif débute en mai 2007"; } else
if(OData.PretDebAn==2007 && OData.PretDebMois < 5)          { ers="Début des remboursements : le dispositif débute en mai 2007" ; }
if(ers!="")
    { self.alert(ers);
    }

return((ers!="") ? false : true);
}


function OnBtnSubmit(f)
{
if(BeforeSubmit(f,1)==true)
    { ///f.submit();
      BodyOnLoad(1);
    }
}


function MainGetForm()
{
var fd=new Object();

var f=document.ffff;
fd.PretMontant  =GetNum(f.PretMontant.value , 80);
fd.PretNbAn     =GetNum(f.PretNbAn.value, 20);
fd.PretTaux     =GetNum(f.PretTaux.value, 22);
fd.PretDebMois  =parseInt(f.PretDebMois.options[f.PretDebMois.selectedIndex].value);
fd.PretDebAn    =GetNum(f.PretDebAn.value, 40);
fd.NbEmprunteur =parseInt(f.NbEmprunteur.options[f.NbEmprunteur.selectedIndex].value);
fd.NbCharge     =parseInt(f.NbCharge.options[f.NbCharge.selectedIndex].value);
fd.IsHandicap   =parseInt(f.IsHandicap.options[f.IsHandicap.selectedIndex].value);

return(fd);
}


function getMensualite(montant, duree, taux)
{
var mens;
var prw;

duree*=12;
taux/=1200;
prw = Math.pow(1+taux, duree);
mens = montant*(prw*taux/(prw-1));

return(mens);
}


function GetResult(fd)
{
var NbAnCredit = 5; // le crédit d'impôt se fait sur 5 ans
var MoisNum=0;
var MoisRes=fd.PretDebMois;
var AnneeRes=fd.PretDebAn;
var AnneeResMax=AnneeRes+((MoisRes!=1) ? 5 : 4);
var AssietteMaxi;
var Assiette1=0, Assiette2=0;
var CreditImpot=0;
var CreditImpotTotal=0;
var InteretAn=0;
var Mensualite;
var MensualiteAn=0;
var crd = fd.PretMontant;
var sHTMLMensualite;
var sHTMLInteret;
var sHTMLCreditImpot;
var sHTML = '<table id="TabResult" cellspacing=0 cellpadding=0>'
          +   '<tr>'
          +     '<td id="TabResultTitre" class="BordGauche" style="text-align:center;" colspan="7">'
          +        'Résultat de la simulation'
          +     '</td>'
          +   '</tr>'
          +   '<tr class="TabResLib">'
          +     '<td class="BordGauche" style="text-align:left">Année</td>'
          +     '<td style="text-align:center; width:55px">'+(AnneeRes)+'</td>'
          +     '<td style="text-align:center; width:55px">'+(AnneeRes+1)+'</td>'
          +     '<td style="text-align:center; width:55px">'+(AnneeRes+2)+'</td>'
          +     '<td style="text-align:center; width:55px">'+(AnneeRes+3)+'</td>'
          +     '<td style="text-align:center; width:55px">'+(AnneeRes+4)+'</td>'
          +     ((MoisRes!=1) ? '<td style="text-align:center; width:55px">'+(AnneeRes+5)+'</td>' : '')
          +   '</tr>';


sHTMLMensualite = '<tr>'
                 +   '<td class="TabResLib BordGauche" style="text-align:left">Total mensualités</td>';

sHTMLInteret= '<tr>'
            +   '<td class="TabResLib BordGauche" style="text-align:left">Dont intérêts</td>';

sHTMLCreditImpot = '<tr>'
                 +   '<td class="TabResLib BordGauche TabResCI" style="text-align:left">Crédit d\'impôt</td>';


Mensualite = getMensualite(crd, fd.PretNbAn, fd.PretTaux);


AssietteMaxi = (fd.NbEmprunteur==1) ? 3750 : 7500;

if(fd.IsHandicap==1)
    {
      AssietteMaxi *=2;
    }

AssietteMaxi    +=fd.NbCharge*500;


for( ; AnneeRes<=AnneeResMax; )
    {
      var InteretMens = crd * (fd.PretTaux / 100) / 12;

      crd -= Mensualite - InteretMens;
      MensualiteAn += Mensualite;
      InteretAn += InteretMens;


      if(MoisNum<NbAnCredit*12)
          {
            if(MoisNum<12)
                {
                  Assiette1+=InteretMens;
                }
            else{ Assiette2+=InteretMens;
                }
          }


      if(MoisRes % 12 == 0)
          {
            if(Assiette1 > AssietteMaxi)
                {
                  Assiette1 = AssietteMaxi;
                }
            if(Assiette2+Assiette1 > AssietteMaxi)
                {
                  Assiette2 = AssietteMaxi - Assiette1;
                }

            CreditImpot = Assiette1*0.4+Assiette2*0.2;
            CreditImpotTotal += CreditImpot;

            sHTMLMensualite +='<td>'+FormateVal(MensualiteAn, 0)+'&nbsp;€</td>';
            sHTMLInteret    +='<td>'+FormateVal(InteretAn, 0)+'&nbsp;€</td>';
            sHTMLCreditImpot+='<td class="TabResCI">'+FormateVal(CreditImpot, 0)+'&nbsp;€</td>';

            Assiette1   =0;
            Assiette2   =0;
            MensualiteAn=0;
            InteretAn   =0;
            InteretMens =0;

            AnneeRes++;
          }

      MoisNum++;
      MoisRes++;
    }

sHTML += sHTMLMensualite + sHTMLInteret + sHTMLCreditImpot + '</table>';

sHTML += '<div style="padding-top:15px; font-family:verdana; font-size:11pt; color:#000088; font-weight:bold; text-align:center">'
       + 'Crédit d\'impôt total : '+FormateVal(CreditImpotTotal, 0)+'&nbsp;€</div>';

document.getElementById("IdTDRes").innerHTML = sHTML;
}


function BodyOnLoad(IsLoaded)
{
var f=document.ffff;

gIsChange1=0;

if(IsLoaded!=1)
    {
      var now = new Date();
      ffff_OC(null);
      gIsChange1=0;

      f.PretMontant.value   = 100000;
      f.PretNbAn.value      = 20;
      f.PretTaux.value      = "4.60";
      f.PretDebMois.value   = now.getMonth()+1;
      f.PretDebAn.value     = now.getFullYear();
      f.NbEmprunteur.value  = 2;
    }

var fdata=MainGetForm();
GetResult(fdata);
}


//-->
