//---------------------------------------------------------------------
//---Auteur: ALTO Informatique - www.alto-informatique.com-------------
//---1998 - 2009 - Tous droits déposés---------------------------------
//---------------------------------------------------------------------

//FormVal
function FormateVal(A,H,G){var I="";if(A!=null&&!isNaN(A)&&(A!=0||(G&4096)==0)){var C,E,F,D;var B=" ";if(G!=null){if(G&1){B="&nbsp;"}else{if(G&2){B="."}else{if(G&4){B=""}}}}if(H==2){A=A*100}else{if(H>0){for(E=0;E<H;E++){A*=10}}else{H=0}}A=Math.round(A);if(A<0){A=-A;D=1}else{D=0}I=A.toString();C=I.length;for(E=H+1-C;E>0;E--){I="0"+I}F=C-H;if(F>3&&B.length>0){for(E=0;E<5;E++){if(F<4){break}F-=3;I=I.substring(0,F)+B+I.substring(F,C);C+=B.length}}if(H>0){C=I.length;I=I.substring(0,C-H)+","+I.substring(C-H,C)}if(D){I="-"+I}if(G!=null&&(G&3840)){if(G&256){I+=" €"}else{if(G&512){I+=" mois"}else{if(G&1024){I+=" M²"}else{if(G&2048){I+="%"}}}}}}else{if(G!=null&&(G&240)){if(G&16){I="-"}else{if(G&32){I="&nbsp;"}}}}return(I)} 
function UnFormateVal(A){var B=""+A;B=B.replace(/\,/,".");return(B.replace(/[\'\" €/mois%]/g,""))};
//TestNum "
var _tn=0;var _ttn=0;
function GetNum(C,B,A){_ttn=TestNum(C,B,A);return(_tn)}
function TestNum(J,D,L){J=UnFormateVal(J);var K=0;var P=""+J;var F,E,N;_tn=0;F=0;E=P.length;if(F<E){var A,G,I=0,C=0,M=0,B=0,H,O="";if(D<0){I=1;D=-D}A=D/10;G=D%10;for(H=F;H<E;H++){N=P.charAt(H);if(N==" "&&L!=null&&(L&1)){continue}if(N>="0"&&N<="9"){if(B){M++;if(M>G){K=-3;break}}else{C++;if(C>A){K=-2;break}}}else{if(N=="."||N==","){if(B){K=-1;break}B=H+1;N="."}else{if(N=="-"){if(!I||H>F){K=-4;break}}else{K=-1;break}}}O+=N}if(!K){_tn=(B)?parseFloat(O):parseInt(O,10);K=1}}return(K)};
//GetSet
function SetSelect(C,A){var B;for(B=0;B<C.options.length;B++){if(C.options[B].value==A){C.selectedIndex=B;break}}}
function GetSelect(B){if(!(B.selectedIndex>=0)){return(null)}var A=B.options[B.selectedIndex].value;if(A==null||A==""){return(null)}var C=parseInt(A,10);return((isNaN(C))?A:C)}
function SetRadio(C,A){var B;for(B=0;B<C.length;B++){if(C[B].value==A){C[B].checked=1;break}}}
function GetRadio(B){var A;for(A=0;A<B.length;A++){if(B[A].checked==1){return(B[A].value)}}return(0)}
function GetSelectedInt(A){return(parseInt(A.options[A.selectedIndex].value,10))}function SetIndex(B,A){SetSelect(B,A)};

//non generique
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);
    var fdata=MainGetForm();
    GetResult(fdata);

    }
}


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);
fd.IsBBC2005    =parseInt(f.IsBBC2005.options[f.IsBBC2005.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 tmp;
var NbAnCredit = (fd.IsBBC2005==1) ? 7 : 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) ? NbAnCredit : NbAnCredit-1);
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="'+((fd.IsBBC2005==1) ? 9 : 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>'
          ;

tmp = 5;
if(fd.IsBBC2005==1)
    {
      sHTML += '<td style="text-align:center; width:55px">'+(AnneeRes+tmp++)+'</td>';
      sHTML += '<td style="text-align:center; width:55px">'+(AnneeRes+tmp++)+'</td>';
    }

if(MoisRes!=1)
    {
      sHTML += '<td style="text-align:center; width:55px">'+(AnneeRes+tmp)+'</td>';
    }

sHTML += '</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 || fd.IsBBC2005==1)
                {
                  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 class="TabResMI">'+FormateVal(MensualiteAn, 0)+'&nbsp;€</td>';
            sHTMLInteret    +='<td class="TabResMI">'+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 id="IdResTotal" style="padding-top:15px; font-family:verdana; font-size:11pt; font-weight:bold; text-align:center">'
//       + 'Crédit d\'impôt total : '+FormateVal(CreditImpotTotal, 0)+'&nbsp;€</div>';
sHTML += '<p id="IdResTotal" >' + 'Crédit d\'impôt total : <span>'+FormateVal(CreditImpotTotal, 0)+'&nbsp;€</span></p>';

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   = '';
      f.PretNbAn.value      = '';
      f.PretTaux.value      = '';
      f.PretDebMois.value   = now.getMonth()+1;
      f.PretDebAn.value     = now.getFullYear();
      f.NbEmprunteur.value  = 2;
    }

//var fdata=MainGetForm();
//GetResult(fdata);
}
