//---------------------------------------------------------------------
//---Auteur: ALTO Informatique - www.alto-informatique.com-------------
//---1998 - 2008 - Tous droits déposés---------------------------------
//---------------------------------------------------------------------

function FormateVal(A,H,G){var I="";if(!isNaN(A)){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=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}}return(I)};
function TestForm(E){var J=TestForm.arguments;var K=J.length;if(K<5||K%4!=1){return(0)}var L;var I=null;for(L=1;L<K;){var T;var S=0;var D=""+J[L++];var U=J[L++];var M=J[L++];var R=J[L++];var F=D.charAt(0);T=D.indexOf("*",0);if(T>=0){D=D.substr(0,T)+D.substr(T+1);S|=1}T=D.indexOf("!",0);if(T>=0){D=D.substr(0,T)+D.substr(T+1);S|=2}if(F=="N"){var H;var G;T=D.indexOf(";",0);if(T>=0){D=D.substr(0,T)+D.substr(T+1);T=D.indexOf("min=",0);if(T>=0){var B=T+4;var A=D.indexOf(";",B);if(A<0){A=D.length}H=D.substr(B,A-B);H=parseFloat(H);S|=16;D=D.substr(0,T)+D.substr(A+1)}T=D.indexOf("max=",0);if(T>=0){var B=T+4;var A=D.indexOf(";",B);if(A<0){A=D.length}G=D.substr(B,A-B);G=parseFloat(G);S|=32;D=D.substr(0,T)+D.substr(A+1)}}var Y=parseInt(D.substr(1),10);var N=TestNum(U.value,Y);if(N<0){I=(R>"")?R:M}else{if(N==0){if(S&1){I=(M>"")?M:R}}else{if(N>0){if(S&16){if(_tn<H){I=(M>"")?M:R}}if(S&32){if(_tn>G){I=(M>"")?M:R}}}}}}else{if(F=="D"){var Q=U.value;if(Q.length>0&&(T=D.indexOf("f=",0))>=0){var B=T+2;var A=D.indexOf(";",B);if(A<0){A=D.length}var P=D.substr(B,A-B);if(P=="ma"){Q="01/"+Q}}var N=TestDate(Q);if(N<0){I=(R>"")?R:M}else{if(N==0&&(S&1)){I=(M>"")?M:R}}}else{if(F=="T"){var O=""+U.value;if(O.length==0){if(S&1){I=(M>"")?M:R}}else{var X=parseInt(D.substr(1),10);if(!isNaN(X)&&O.length>X){I=(R>"")?R:M}}}else{if(F=="S"){if(S&1){T=D.indexOf("nr=",0);if(T>=0){var B=T+3;var A=D.indexOf(";",B);if(A<0){A=D.length}var C=D.substr(B,A-B);if(U.selectedIndex<0||U.options[U.selectedIndex].value==C){I=(M>"")?M:R}}else{if(U.selectedIndex<0||U.options[U.selectedIndex].value==0||U.options[U.selectedIndex].value==""){I=(M>"")?M:R}}}}else{if(F=="R"){if(S&1){for(T=0;T<U.length;T++){if(U[T].checked==1){break}}if(T==U.length){I=(M>"")?M:R}}}else{if(F=="E"){var O=""+U.value;if(O.length==0){if(S&1){I=(M>"")?M:R}}else{if(O.length<6||(T=O.indexOf("@",1))==-1||(T=O.indexOf(".",T+2))==-1||T+1>=O.length){I=(R>"")?R:M}}}else{if(F=="H"){var O=""+U.value;if(O.length==0){if(S&1){I=(M>"")?M:R}}else{var V=0;if(O.length==10||O.length==14){for(T=0;T<O.length;T++){var W=O.charAt(T);if(W>="0"&&W<="9"){V++}else{if((W=="."||W==" ")&&(T%3)==2){continue}else{V=0;break}}}}if(V!=10){I=(R>"")?R:M}}}else{continue}}}}}}}if(I>""){self.alert(I);if((S&2)&&(F=="N"||F=="D"||F=="T"||F=="E"||F=="H"||F=="S")){U.focus();if(F!="S"){U.select()}}break}}return((I!=null)?-1:0)};
var _tn=0;var _ttn=0;
function GetNum(C,B,A){_ttn=TestNum(C,B,A);return(_tn)}
function TestNum(J,D,L){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)};
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)};


function GetDataForm()
{
var d=new Object();

CastChpNum(d, "ApportAutof"  , 80, null);
CastChpNum(d, "LoyerMensuel" , 50, null);
CastChpNum(d, "ChargeProp"   , 50, null);
CastChpNum(d, "TaxeHabProp"  , 50, null);
CastChpNum(d, "TaxeHabLoc"   , 50, null);
CastChpNum(d, "TaxeHabProp"  , 50, null);
CastChpNum(d, "TaxeFonciere" , 50, null);
CastChpNum(d, "TypeAchat"    , 10, null);
CastChpNum(d, "CoutLogement" , 80, null);
CastChpNum(d, "CoutTravaux"  , 80, null);
CastChpNum(d, "CoutNotaire"  , 80, null);
///CastChpNum(d, "MontantPret"  , 80, null);
CastChpNum(d, "NbAnPret"     , 20, null);
CastChpNum(d, "TauxPret"     , 22, null);
CastChpNum(d, "TauxAdi"      , 13, null);
CastChpNum(d, "TauxInflation", 22, null);
CastChpNum(d, "TauxValImmo"  , 22, null);
CastChpNum(d, "TauxRevLoyer" , 22, null);
CastChpNum(d, "TauxPlacement", 22, null);
CastChpNum(d, "NbAnEtude"    , 20, null);

return(d);
}

function CastChpNum(obj, chp, fmt, ValIfNull)
{
var c=document.ffff[chp].value;
obj[chp]=(c!=null && (""+c).length>0 && TestNum(c,fmt)>0) ? _tn : ValIfNull;
}


//---------------------------------------------------------------------
//---Auteur: ALTO Informatique-----------------------------------------
//---donnees sortantes-------------------------------------------------
//---------------------------------------------------------------------
function GetResultAL(data)
{
var r=new Object();

r.ERR_F_DATA_NR   =0x0001; // donnee manquante
r.ERR_F_DATA_BAD  =0x0002; // donnee invalide
r.ERR_F_CALC_PROJ =0x0004; // donnee invalide
r.ERR_F_CALC_MENS =0x0008; // donnee invalide

r.FlagErreur   =0;
r.ChoixAL      =0;     // 1=louer, 2=Acheter
r.CoutProjet   =null;  // logement+travaux+fn
r.VcapImmo     =null;  // valeur capitalisee du logement
r.MontantPret  =null;  // montant du pret : CoutProjet - apport
r.MensualAdi   =null;  // mensualite ADI comprise
r.CrdIra       =null;  // CRD du pret + IRA [si NbAnEtude<NbAnPret]

r.CumulMensualAdi  =null;
r.CumulLoyerMensuel=null;
r.CumulTaxeHabLoc  =null;
r.CumulTaxeHabProp =null;
r.CumulTaxeFonciere=null;
r.CumulChargeProp  =null;

r.CumulLoc  =null;
r.CumulProp =null;

r.SoldeLoc  =null;
r.SoldeProp =null;
r.SoldeGain =null;

r.DeboursProp =null;
r.DeboursLoc  =null;
r.DeboursGain =null;

if(r.FlagErreur==0)
    {
      if(!(data.TypeAchat    > 0) ||
	 !(data.NbAnEtude    > 0) ||
	 !(data.ApportAutof  >=0) ||
	 !(data.LoyerMensuel > 0) ||
	 !(data.TauxPlacement>=0) ||
	 !(data.CoutLogement > 0)) /// || !(data.MontantPret  >=0))
	  { r.FlagErreur|=r.ERR_F_DATA_NR;
	  }
    }

//----calcul r.CoutProjet---------------------------------------

if(r.FlagErreur==0)
    {
      if(!(data.CoutLogement>0))
	  { r.FlagErreur|=r.ERR_F_CALC_PROJ;
	  }
      else{ r.CoutProjet=data.CoutLogement;
	    if(data.CoutNotaire>0)
		{ r.CoutProjet+=data.CoutNotaire;
		}
	    if(data.CoutTravaux>0)
		{ r.CoutProjet+=data.CoutTravaux;
		}
	  }
    }

//----calcul r.MontantPret--------------------------------------

if(r.FlagErreur==0)
    { r.MontantPret=r.CoutProjet-data.ApportAutof;

      if(r.MontantPret>0)
	  { if(!(data.NbAnPret > 0) ||
	       !(data.TauxPret >=0))
		{ r.FlagErreur|=r.ERR_F_DATA_NR;
		}
	  }
      else{ r.MontantPret=0;
	  }
    }

//----calcul r.VcapImmo-----------------------------------------

if(r.FlagErreur==0)
    {
      r.VcapImmo=data.CoutLogement;
      if(data.CoutTravaux>0)
	  { r.VcapImmo+=data.CoutTravaux;
	  }

      var t=(data.TauxValImmo>0) ? (data.TauxValImmo/100) : 0;
      r.VcapImmo*=Math.pow(1+t, data.NbAnEtude);
    }


//----calcul r.MensualAdi---------------------------------------

if(r.FlagErreur==0)
    {
      if(r.MontantPret==0)
	  { r.MensualAdi=0;
	  }
      else
      if(r.MontantPret>0 &&
	 data.NbAnPret	 >0 &&
	 data.TauxPret	 >=0)
	  {
	    var NbMoisPret=data.NbAnPret*12;
	    var t=(data.TauxPret/100)/12;

	    if(t>0) t=t/(1-Math.pow(1+t, -NbMoisPret));
	    else    t=1/NbMoisPret;

	    if(data.TauxAdi>0)
		{ t+=(data.TauxAdi/100)/12;
		}
	    r.MensualAdi=r.MontantPret*t;
	  }
      else{ r.FlagErreur|=r.ERR_F_CALC_MENS;
	  }
    }

//----calcul r.CrdIra-------------------------------------------

if(r.FlagErreur==0)
    {
      if(r.MontantPret>0 &&
	 data.NbAnEtude<data.NbAnPret)
	  {
	    if(data.TauxPret==0)
		{ r.CrdIra=r.MontantPret*(data.NbAnEtude/data.NbAnPret);
		}
	    else{ var t=(data.TauxPret/100);
		  var n=data.NbAnPret*12;
		  var a=data.NbAnEtude*12;

		  var coeff=(1-Math.pow(1+t, -(n-a)))
			   /(1-Math.pow(1+t, -n));

		  r.CrdIra=r.MontantPret*coeff;
		  t=(t>0.06) ? 0.03 : t/2;
		  r.CrdIra*=(1+t);
		}
	  }
      else{ r.CrdIra=0;
	  }
    }

//----calcul general--------------------------------------------

if(r.FlagErreur==0)
    {
      var NumAn;
      var TpLoyer    =(data.TauxRevLoyer >0) ? data.TauxRevLoyer /100 : 0;
      var TpInflation=(data.TauxInflation>0) ? data.TauxInflation/100 : 0;
      var TpPlacement=(data.TauxPlacement>0) ? data.TauxPlacement/100 : 0;

      var mensual     =r.MensualAdi;
      var loyer       =data.LoyerMensuel;
      var TaxeHabLoc  =(data.TaxeHabLoc  >0) ? data.TaxeHabLoc	 : 0;
      var TaxeHabProp =(data.TaxeHabProp >0) ? data.TaxeHabProp  : 0;
      var TaxeFonciere=(data.TaxeFonciere>0) ? data.TaxeFonciere : 0;
      var ChargeProp  =(data.ChargeProp  >0) ? data.ChargeProp	 : 0;

      r.CumulLoyerMensuel=0;
      r.CumulTaxeHabLoc  =0;

      r.CumulMensualAdi  =0;
      r.CumulTaxeHabProp =0;
      r.CumulTaxeFonciere=0;
      r.CumulChargeProp  =0;
      r.CumulCoutTresor  =0;

      r.CumulLoc  =0;
      r.CumulProp =0;

      var PseudoMensualAdi=0;
      var ApportProjet=(data.ApportAutof<r.CoutProjet)
		      ? data.ApportAutof : r.CoutProjet;
      var tresor=ApportProjet;

      for(NumAn=0; NumAn<data.NbAnEtude; NumAn++)
	  {
	    if(NumAn>0)
		{ loyer       *=(1+TpLoyer);
		  TaxeHabProp *=(1+TpInflation);
		  TaxeHabLoc  *=(1+TpInflation);
		  TaxeFonciere*=(1+TpInflation);
		  ChargeProp  *=(1+TpInflation);
		}

	    var depense1=(loyer*12)+TaxeHabLoc;
	    var depense2=TaxeHabProp+ChargeProp;

	    if(NumAn<data.NbAnPret)
		{ depense2+=(mensual*12);
		  r.CumulMensualAdi+=(mensual*12);
		}
	    else{ PseudoMensualAdi+=(mensual*12);
		}
	    if(data.TypeAchat==3 || NumAn>=2) // exoneration si neuf<2ans
		{ depense2+=TaxeFonciere;
		  r.CumulTaxeFonciere+=TaxeFonciere;
		}

	    r.CumulLoyerMensuel+=(loyer*12);
	    r.CumulTaxeHabLoc  +=TaxeHabLoc;
	    r.CumulTaxeHabProp +=TaxeHabProp;
	    r.CumulChargeProp  +=ChargeProp;

	    r.CumulLoc +=depense1;
	    r.CumulProp+=depense2;

	    r.CumulCoutTresor=(tresor*TpPlacement);

	    tresor*=(1+TpPlacement);
	    tresor+=(depense2-depense1);
	  }

      //---perte d'interets d'epargne pour proprietaire----
      r.CumulCoutTresor=tresor-((r.CumulProp-r.CumulLoc)+ApportProjet);

      r.SoldeLoc  =r.CumulLoc;
      r.SoldeProp =r.CumulLoc+tresor; // OK (raccourci de calcul)
      r.SoldeProp+=r.CrdIra-r.VcapImmo;
      r.SoldeGain =r.SoldeLoc-r.SoldeProp;

      if(r.SoldeGain<0)
	  { r.ChoixAL=1; // louer
	    r.SoldeGain=-r.SoldeGain;
	  }
      else
      if(r.SoldeGain>0)
	  { r.ChoixAL=2; // acheter
	  }
      else{ r.ChoixAL=0;
	  }

      if(r.SoldeGain<r.CumulLoc*0.01)
	  { r.ChoixAL=0; // avantage negligeable
	  }

      r.DeboursLoc =r.CumulLoc /(data.NbAnEtude*12);
      r.DeboursProp=(r.CumulProp+PseudoMensualAdi)/(data.NbAnEtude*12);
      r.DeboursGain=r.DeboursLoc-r.DeboursProp;

      if(r.DeboursGain<0)
	  { r.DeboursGain=-r.DeboursGain;
	  }
    }

return(r);
}


//---------------------------------------------------------------------
//---Auteur: ALTO Informatique-----------------------------------------
//---calcul des points morts-------------------------------------------
//---------------------------------------------------------------------
function GetPivotAL(data, result)
{
var p=new Object();

p.NbTauxPivot  =0;
p.TauxPlacement=null;
p.TauxInflation=null;
p.TauxRevLoyer =null;
p.TauxValImmo  =null;

if(data.FlagErreur ||
   result.FlagErreur ||
   result.ChoixAL==0)
    { return(p);
    }

for(var NumTaux=0;; NumTaux++)
    {
      var r,SaveTaux,NewTaux,name;

      name=(NumTaux==0) ? "TauxPlacement"
	  :(NumTaux==1) ? "TauxValImmo"
	  :(NumTaux==2) ? "TauxRevLoyer" : null; ///"TauxInflation";

      if(name==null)
	  { break;
	  }

      SaveTaux=data[name];
      if(SaveTaux==0 || SaveTaux>=10)
	  { continue;
	  }

      data[name]=0;
      r=GetResultAL(data);

      if(r.ChoixAL==result.ChoixAL)
	  { data[name]=10;
	    r=GetResultAL(data);
	  }

      if(r.ChoixAL!=result.ChoixAL)
	  {
	    var OldTaux=SaveTaux;
	    var OldChoixAL=result.ChoixAL;
	    for(;;)
		{
		  var NewTaux=data[name];
		  var delta=(NewTaux-OldTaux)/2;

		  if(r.ChoixAL==0 ||
		     (delta<0.001 && delta>-0.001))
		      {
			p[name]=NewTaux;
			p.NbTauxPivot++;
			break;
		      }

		  if(r.ChoixAL!=OldChoixAL)
		      { delta=-delta;
		      }

		  OldChoixAL=r.ChoixAL;
		  OldTaux=NewTaux;
		  data[name]+=delta;
		  r=GetResultAL(data);
		}
	  }
      data[name]=SaveTaux;
    }

return(p);
}


//--------------------------------------------------------------
//---donnees affichees------------------------------------------
//--------------------------------------------------------------
function SetAfficheAL(d,r)
{
r.S_DeboursGain =(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.DeboursGain , 0, 0x01)+"&nbsp;€");
r.S_DeboursProp =(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.DeboursProp , 0, 0x01)+"&nbsp;€");
r.S_DeboursLoc	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.DeboursLoc  , 0, 0x01)+"&nbsp;€");

r.S_SoldeProp	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.SoldeProp   , 0, 0x01)+"&nbsp;€");
r.S_SoldeLoc	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.SoldeLoc    , 0, 0x01)+"&nbsp;€");
r.S_SoldeGain	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.SoldeGain   , 0, 0x01)+"&nbsp;€");

r.S_MontantPret =(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.MontantPret , 0, 0x01)+"&nbsp;€");
r.S_MensualAdi	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.MensualAdi  , 0, 0x01)+"&nbsp;€");
r.S_CrdIra	    =(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.CrdIra      , 0, 0x01)+"&nbsp;€");
r.S_VcapImmo	=(r.FlagErreur) ? "&nbsp;" : (FormateVal(r.VcapImmo    , 0, 0x01)+"&nbsp;€");
}



var g_IsChanged=0;

function ffff_OC(name)
{
g_IsChanged=1;
var COEFF_NOTAIRE_NEUF  =0.032;
var COEFF_NOTAIRE_ANCIEN=0.075;

var f=document.ffff;

if(name=="CoutLogement" ||
   name=="TypeAchat")
    {
      var frais=null;
      var cout=GetNum(f.CoutLogement.value, 80);
      var ta=f.TypeAchat.options[f.TypeAchat.selectedIndex].value;

      if(cout>0 && ta>0)
	  { if(ta==2) // 2=neuf
		{ frais=cout*COEFF_NOTAIRE_NEUF;
		}
	    else
	    if(ta==3) // 3=ancien
		{ frais=cout*COEFF_NOTAIRE_ANCIEN;
		}
	    else{ frais=0;
		}
	  }

      if(frais!=null)
	  { f.CoutNotaire.value=Math.floor(frais);
	  }
    }
else
if(name=="TaxeHabLoc")
    {
      var taxe=GetNum(f.TaxeHabLoc.value, 60);

      if(taxe>0 && !(f.TaxeHabProp.value>""))
	  { f.TaxeHabProp.value=f.TaxeHabLoc.value;
	  }
    }
}


function BeforeSubmit(f, IsAlert)
{
var err=0;

if(!err)
    { err=TestForm(0x0000,
      "N50;min=1;*!", f.LoyerMensuel, "Indiquez votre loyer mensuel charges comprises.", "Loyer : saisie incorrecte.",
      "N50!", f.TaxeHabLoc  , "", "Taxe d'habitation : saisie incorrecte.");
    }

if(!err)
    { err=TestForm(0x0000,
      "S*!", f.NbAnEtude, "Choisissez le nombre d'années sur lequel porte l'étude.", "",
      "N22;min=0;max=10;*!", f.TauxPlacement, "Indiquez le taux de rendement net d'impot des sommes épargnées.", "",
      "N22;min=0;max=10;*!", f.TauxInflation, "Indiquez le taux d'inflation prévu.", "",
      "N22;min=0;max=10;*!", f.TauxRevLoyer, "Indiquez le taux annuel d'augmentation du loyer.", "",
      "N22;min=0;max=10;*!", f.TauxValImmo, "Indiquez le taux annuel d'augmentation de l'immobilier.", "");
    }

if(!err)
    { err=TestForm(0x0000,
      "S*!", f.TypeAchat, "Indiquez le type d'acquisition envisagée.", "",
      "N80;min=1;*!", f.CoutLogement, "Indiquez le coût du logement.", "Coût du logement : saisie incorrecte.",
      "N80!", f.CoutTravaux , "", "Coût des travaux : saisie incorrecte.",
      "N80!", f.CoutNotaire , "", "Frais de notaire : saisie incorrecte.",
      "N80*!", f.ApportAutof, "Indiquez votre apport personnel.", "Apport personnel : saisie incorrecte.",
   ///"N80;min=0;*!", f.MontantPret , "Indiquez le montant du prêt.", "Montant du prêt : saisie incorrecte.",
      "S*!", f.NbAnPret, "Choisissez la durée de votre prêt.", "",
      "N22;min=0;max=15;*!", f.TauxPret, "Indiquez le taux de votre prêt.", "",
      "N12;min=0;max=1;*!", f.TauxAdi, "Indiquez le taux de l'assurance-décès, par exemple 0,35%.", "",
      "N50!", f.TaxeFonciere, "", "Taxe foncière : saisie incorrecte.",
      "N50!", f.TaxeHabProp , "", "Taxe d'habitation : saisie incorrecte.",
      "N50!", f.ChargeProp  , "", "Charge d'entretien : saisie incorrecte.");
    }

if(!err && !g_IsChanged)
    {
      if(DataAL.TypeAchat)
          {
            self.alert("Veuillez complétez ou modifier les données !");
          }
      else{ self.alert("Complétez le questionnaire !");
          }
      err=-1;
    }

return((err) ? false : true);
}


function OnBtnSubmit(f)
{
if(BeforeSubmit(f,1)==true)
    {
      var DataAL=GetDataForm();
      var ResultAL=GetResultAL(DataAL);
      SetAfficheAL(DataAL, ResultAL);
      var PivotAL=GetPivotAL(DataAL, ResultAL);
      var ZR = document.getElementById("ZoneResult");


      if(ResultAL.FlagErreur & ResultAL.ERR_F_DATA_NR)
          {
	        ZR.innerHTML = "Saisie insuffisante pour effectuer les calculs.";
	      }
	  else
	  if(ResultAL.FlagErreur!=0)
	      {
	        ZR.innerHTML = "Saisie insuffisante ou incorrecte pour effectuer les calculs.";
	      }
	  else{
            var sHTML="";

            sHTML+='<table border="0" cellspacing="0" cellpadding="3" width="100%">'
              	    +'<tr>'
              	      +'<td class="td1t" nowrap bgcolor="#8080FF" colspan="2">Si vous louez</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1" nowrap>Dépense mensuelle moyenne (loyer, 1/12 taxe d&#146;habitation) :</td>'
              	      +'<td class="td1" nowrap>'+ResultAL.S_DeboursLoc+'</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1" nowrap>Dépenses totales sur '+DataAL.NbAnEtude+' ans (loyers, taxe d&#146;habitation) :</td>'
              	      +'<td class="td1" nowrap>'+ResultAL.S_SoldeLoc+'</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1t" nowrap bgcolor="#8080FF" colspan="2">Si vous achetez'
              	      +((ResultAL.MontantPret>0) ? " (prêt = "+ResultAL.S_MontantPret+". Mensualité = "+ ResultAL.S_MensualAdi+")." : "")
              	      +'</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1" nowrap>Dépense mensuelle moyenne (mensualité, taxes, charges) :</td>'
              	      +'<td class="td1" nowrap>'+ResultAL.S_DeboursProp+'</b></td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1" nowrap>Dépenses totales + coût de la trésorerie - valeur de revente :</td>'
              	      +'<td class="td1" nowrap>'+ResultAL.S_SoldeProp+'</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1t" nowrap bgcolor="#8080FF" colspan="2">Conclusion</td>'
              	    +'</tr>'
              	    +'<tr>'
              	      +'<td class="td1" colspan="2">';


            if(ResultAL.ChoixAL==1)
                {
                  sHTML+="Vous avez intérêt à LOUER."
                        +" Sur "+DataAL.NbAnEtude+" ans, vous économiserez globalement "
                        +ResultAL.S_SoldeGain+" par rapport à une acquisition.";
                  if(ResultAL.DeboursLoc<ResultAL.DeboursProp)
                      {
                        sHTML+="En moyenne, vous économiserez "+ResultAL.S_DeboursGain+" par mois."
                      }
                  else
                  if(ResultAL.DeboursLoc>ResultAL.DeboursProp)
                      {
                        sHTML+="Cependant vous devrez débourser en moyenne "
                              +ResultAL.S_DeboursGain+" de plus par mois.";
                      }
                }
            else
            if(ResultAL.ChoixAL==2)
                {
                  sHTML+="<em>Vous avez intérêt à ACHETER.</em>"
                        +" Sur "+DataAL.NbAnEtude+" ans, vous économiserez globalement "
                        +ResultAL.S_SoldeGain+" par rapport à la location.";
                  if(ResultAL.DeboursLoc>ResultAL.DeboursProp)
                      {
                        sHTML+=" En moyenne, vous économiserez "+ResultAL.S_DeboursGain+" par mois.";
                      }
                  else
                  if(ResultAL.DeboursLoc<ResultAL.DeboursProp)
                      {
                        sHTML+=" Cependant vous devrez débourser en moyenne "
                              +ResultAL.S_DeboursGain+" de plus par mois.";
                      }
          	    }
            else
            if(ResultAL.ChoixAL==0)
                {
                  sHTML+=" Compte tenu du coût de la trésorerie,"
                        +" les deux solutions, acheter ou louer,"
                        +" sont globalement équivalentes. Toutefois";
                  if(ResultAL.DeboursLoc>ResultAL.DeboursProp)
                      {
                        sHTML+=" si vous achetez, vous économiserez en moyenne "
                              +ResultAL.S_DeboursGain+" par mois.";
                      }
                  else
                  if(ResultAL.DeboursLoc<ResultAL.DeboursProp)
                      {
                        sHTML+=" si vous louez, vous économiserez en moyenne "
                              +ResultAL.S_DeboursGain+" par mois.";
                      }
          	    }

            sHTML+='<br/>&nbsp;<br/>En cas d&#146;achat,'
          	    +' la valeur du logement au bout de '+DataAL.NbAnEtude+' ans'
          	    +' serait de '+ResultAL.S_VcapImmo+' (compte tenu du taux'
          	    +' de valorisation saisi : '+DataAL.TauxValImmo+'% par an).';

            if(ResultAL.CrdIra>0)
                {
          	      sHTML+=' Toutefois, il vous resterait '+ResultAL.S_CrdIra
                        +' à rembourser sur le prêt, indemnité de remboursement'
                        +' anticipé comprise.';
          	    }

            sHTML+=' Ceci est pris en compte dans les calculs.'

            if(PivotAL.NbTauxPivot>0)
                {
                  var NbTauxDeja=0;
                  var str="<br/>&nbsp;<br/>ATTENTION : le résultat s'inverse ";

                  if(PivotAL.TauxPlacement!=null)
                      {
                        var s2=(PivotAL.TauxPlacement>DataAL.TauxPlacement)
                      	    ? "monte à ":"descend à ";

                        str+="si le taux de rendement net d'impot de l'épargne "+s2
                           +FormateVal(PivotAL.TauxPlacement, 2)
                           +"% par an";

                        NbTauxDeja++;
                      }

                  if(PivotAL.TauxRevLoyer!=null)
                      {
                        var s2=(PivotAL.TauxRevLoyer>DataAL.TauxRevLoyer)
                      	    ? "monte à ":"descend à ";

                        if(NbTauxDeja>0)
                            { str+=", ";
                              if(NbTauxDeja+1==PivotAL.NbTauxPivot)
                                  { str+="ou encore ";
                                  }
                            }

                        str+="si le taux de progression des loyers "+s2
                           +FormateVal(PivotAL.TauxRevLoyer, 2)
                           +"% par an";

                        NbTauxDeja++;
                      }

                  if(PivotAL.TauxValImmo!=null)
                      {
                        var s2=(PivotAL.TauxValImmo>DataAL.TauxValImmo)
                      	    ? "monte à ":"descend à ";

                        if(NbTauxDeja>0)
                            { str+=", ";
                              if(NbTauxDeja+1==PivotAL.NbTauxPivot)
                                  { str+="ou encore ";
                                  }
                            }

                        str+="si le taux de plus-value sur le logement "+s2
                            +FormateVal(PivotAL.TauxValImmo, 2)
                            +"% par an";

                        NbTauxDeja++;
                      }
                   str+=".";
                   sHTML+=str;
                 }

          	sHTML+=    '</td>'
          	      +  '</tr>'
          	      +'</table>';

          	ZR.innerHTML = sHTML;
      	  }
    }
}


function BodyOnLoad()
{
var f=document.ffff;


var c;

c="20"; SetIndex(f.NbAnPret , c);
c="20"; SetIndex(f.NbAnEtude, c);

c="5,20"; f.TauxPret.value    = c;
c="0,35"; f.TauxAdi.value     = c;

c="2,50"; f.TauxInflation.value= c;
c="3,00"; f.TauxPlacement.value= c;
c="2,50"; f.TauxValImmo.value  = c;
c="2,50"; f.TauxRevLoyer.value = c;


gIsChange1=0;
}
