// JavaScript Document

/*---------------Programmes et formulaires contenus dans cette page sont la
propriété d'ALTO Informatique, 5 rue Guilleminot, 75014 Paris.
Tous droits réservés.----------------------------------------*/

var gIsChange1=0;

function ffff_OC(sName)
{

gIsChange1=1;

var f=document.ffff;

if(sName=="TypeAchat")
    {
      var TypeAchat=parseInt(f.TypeAchat.options[f.TypeAchat.selectedIndex].value);

      var c=f.terrain;
      if(TypeAchat==1)  // 1=terrain+construct
          {
            c.disabled=false;
            c.style.backgroundColor="#FFFFFF";
          }
      else{ c.value="";
            c.disabled=true;
            c.style.backgroundColor="#CCCCCC";
          }

      var c=f.logement;
      if(TypeAchat>1)
          {
            c.disabled=false;
            c.style.backgroundColor="#FFFFFF";
          }
      else{ c.value="";
            c.disabled=true;
            c.style.backgroundColor="#CCCCCC";
          }

      // var c=f.NbLogement;
      // if(TypeAchat==2 || TypeAchat==3) // NEUF
      //     {
      //       c.disabled=false;
      //       c.style.backgroundColor="#FFFFFF";
      //       if(c.selectedIndex<0)
      //            { c.selectedIndex=0;
      //            }
      //     }
      // else{ c.value="";
      //       c.disabled=true;
      //       c.style.backgroundColor="#CCCCCC";
      //     }

    }

}



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

var TypeAchat=parseInt(f.TypeAchat.options[f.TypeAchat.selectedIndex].value);
var terrain  =GetNum(f.terrain.value ,80); var t_terrain =_ttn;
var logement =GetNum(f.logement.value,80); var t_logement=_ttn;

if(TypeAchat<1 || TypeAchat>4)
    { ers="Précisez le type d'acquisition !";
    }
else
if(t_terrain <0) { ers="Cout du terrain : saisie invalide" ; } else
if(t_logement<0) { ers="Cout du logement : saisie invalide"; }
else
if(TypeAchat==1 && terrain<=0)
    { ers="Précisez le coût du terrain !";
    }
else
if((TypeAchat==2 || TypeAchat==3 || TypeAchat==4) && logement<=0)
    { ers="Précisez le coût du logement !";
    }
else
if(!gIsChange1)
    { ers="Résultats déjà calculés !";
    }
if(ers!="")
    { self.alert(ers);
    }

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


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


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

var f=document.ffff;
fd.TypeAchat  =parseInt(f.TypeAchat.options[f.TypeAchat.selectedIndex].value);
fd.terrain    =GetNum(f.terrain.value , 80);
fd.logement   =GetNum(f.logement.value, 80);
fd.IsNegocie  =(f.IsNegocie.checked) ? 1:0;

fd.NbLogement=1;

//if(f.NbLogement.selectedIndex>=0)
//    { fd.NbLogement=parseInt(f.NbLogement.options[f.NbLogement.selectedIndex].value);
//    }

return(fd);
}



function MainGetBareme()
{
var brm=
{ ModeCalculHypo: 2,
  TauxTva:        19.6,
  ProportMini:    65.60,
  EmolFixeAncien: 470.00,
  EmolFixeNeufT:  370.00,
  EmolFixePret:   180.00,
  EmolFixePpd:    130.00,
  DeboursAchat:   430.00,
  DeboursPret:    40.00,
  EnregFixe125:   125.00,
  EnregFixe25:    25.00,

  NegociePlafond: 45735.00,
  NegocieTaux1:   5,
  NegocieTaux2:   2.5,

  SalaireMini1:   15.00,
  SalaireMini2:   8.00,
  SalaireTaux1:   0.10,
  SalaireTaux2:   0.05,
  TauxTD:         3.60,
  TauxTC:         1.20,
  TauxPF:         0.60,
  TauxFA:         2.50,
  TauxTE20:       0.20,
  TauxTE10:       0.10,

  s1:[ { plafond:  6500.00, taux: 4.000 },
       { plafond: 17000.00, taux: 1.650 },
       { plafond: 30000.00, taux: 1.100 },
       { plafond:     0.00, taux: 0.825 }
     ],
  s2:[ { plafond:  6500.00, taux: 2.000 },
       { plafond: 17000.00, taux: 1.100 },
       { plafond: 30000.00, taux: 1.750 },
       { plafond:     0.00, taux: 0.550 }
     ]
};

return(brm);
}


function NotaireCalculFrais(brm, assiette, type, IsNegociation, NbHabitation)
{
var   CoeffSerie;  // appliqué à s1,s2 : 1/3, 2/3 ...
var   tempd;

var   FraisNotaire=0;

if(type!=1 && type!=2 && type!=3 && type!=4)
    { return(FraisNotaire);
    }

if(assiette<=0)
    { return(FraisNotaire);
    }

if(type==2 || type==3) // NEUF
    {
           if(NbHabitation<=10) CoeffSerie=1.0;
      else if(NbHabitation<25 ) CoeffSerie=4.0/5.0;
      else if(NbHabitation<100) CoeffSerie=2.0/3.0;
      else if(NbHabitation<250) CoeffSerie=1.0/2.0;
      else if(NbHabitation<500) CoeffSerie=2.0/5.0;
      else                      CoeffSerie=1.0/3.0;
    }
else{ CoeffSerie=1.0;
    }

var emolument=NotaireEmolFromSerie(brm, assiette, 1, CoeffSerie);

emolument+=(type==1 || type==2 || type==3)
          ? brm.EmolFixeNeufT
          : brm.EmolFixeAncien;

if(IsNegociation)
    {
      if(assiette<=brm.NegociePlafond)
          { tempd=assiette*(brm.NegocieTaux1/100);
          }
      else{ tempd=brm.NegociePlafond;
            tempd=(tempd*(brm.NegocieTaux1/100))
                 +((assiette-tempd)*(brm.NegocieTaux2/100));
          }
      emolument+=tempd;
    }

var debours=brm.DeboursAchat;

tempd=assiette*(brm.SalaireTaux1/100);
if(tempd<brm.SalaireMini1) tempd=brm.SalaireMini1;
debours+=tempd;

var tva1=emolument*(brm.TauxTva/100);
var enreg=0;

if(type==1 || type==4) // TERRAIN ou ANCIEN
    {
      var TauxTD=brm.TauxTD*(1+(brm.TauxFA/100));
      enreg=assiette*((TauxTD+brm.TauxTC+brm.TauxTE20)/100);
    }
else
if(type==2 || type==3)
    {
      var TauxPF=brm.TauxPF*(1+(brm.TauxFA/100));
      enreg=assiette*((TauxPF+brm.TauxTE10)/100);
    }

tempd=emolument+debours+enreg+tva1;

FraisNotaire=Math.floor(tempd/10)*10; // arrondi a 10 Euro

return(FraisNotaire);
}




function NotaireEmolFromSerie(brm, assiette, NumSerie, coeff)
{
var emolument=0;


if(assiette>0)
    {
      var serie=(NumSerie==2) ? brm.s2 : brm.s1;

      for(var num=0; ; num++)
          {
            var plafond=serie[num].plafond;
            var tempd=(plafond!=0 && assiette>plafond) ? plafond : assiette;

            if(num>0) tempd-=serie[num-1].plafond;
            emolument+=tempd*(serie[num].taux/100);
            if(plafond==0 || assiette<=plafond) break;
          }

      emolument*=coeff;

      if(emolument<brm.ProportMini)
          { emolument=brm.ProportMini;
          }
    }

return(emolument);
}







function GetResultFn(fdata)
{
var brm=MainGetBareme();
var r=new Object();

r.FnTotal  =0;
r.S_FnTotal="";

if(fdata.TypeAchat>0)
    {
      var CoutAchat=(fdata.TypeAchat==1) ? fdata.terrain : fdata.logement;

      if(CoutAchat>0)
          {
            r.FnTotal=NotaireCalculFrais(brm,
                                         CoutAchat,
                                         fdata.TypeAchat,
                                         fdata.IsNegocie,
                                         fdata.NbLogement);

            r.S_FnTotal=FormateVal(r.FnTotal, 0)+"&nbsp;€";
          }

    }

return(r);
}


function BodyOnLoad()
{
gIsChange1=0;

var f=document.ffff;
var fdata=MainGetForm();
var result=GetResultFn(fdata);

document.getElementById("result_FnTotal"     ).innerHTML=result.S_FnTotal   ;
}