function GetDataForm(){var A=new Object();CastChpNum(A,"ApportAutof",80,null);CastChpNum(A,"LoyerMensuel",50,null);CastChpNum(A,"ChargeProp",50,null);CastChpNum(A,"TaxeHabProp",50,null);CastChpNum(A,"TaxeHabLoc",50,null);CastChpNum(A,"TaxeHabProp",50,null);CastChpNum(A,"TaxeFonciere",50,null);CastChpNum(A,"TypeAchat",10,null);CastChpNum(A,"CoutLogement",80,null);CastChpNum(A,"CoutTravaux",80,null);CastChpNum(A,"CoutNotaire",80,null);CastChpNum(A,"NbAnPret",20,null);CastChpNum(A,"TauxPret",22,null);CastChpNum(A,"TauxAdi",13,null);CastChpNum(A,"TauxInflation",22,null);CastChpNum(A,"TauxValImmo",22,null);CastChpNum(A,"TauxRevLoyer",22,null);CastChpNum(A,"TauxPlacement",22,null);CastChpNum(A,"NbAnEtude",20,null);return(A)}function CastChpNum(D,C,B,A){var E=document.ffff[C].value;D[C]=(E!=null&&(""+E).length>0&&TestNum(E,B)>0)?_tn:A}function GetResultAL(V){var P=new Object();P.ERR_F_DATA_NR=1;P.ERR_F_DATA_BAD=2;P.ERR_F_CALC_PROJ=4;P.ERR_F_CALC_MENS=8;P.FlagErreur=0;P.ChoixAL=0;P.CoutProjet=null;P.VcapImmo=null;P.MontantPret=null;P.MensualAdi=null;P.CrdIra=null;P.CumulMensualAdi=null;P.CumulLoyerMensuel=null;P.CumulTaxeHabLoc=null;P.CumulTaxeHabProp=null;P.CumulTaxeFonciere=null;P.CumulChargeProp=null;P.CumulLoc=null;P.CumulProp=null;P.SoldeLoc=null;P.SoldeProp=null;P.SoldeGain=null;P.DeboursProp=null;P.DeboursLoc=null;P.DeboursGain=null;if(P.FlagErreur==0){if(!(V.TypeAchat>0)||!(V.NbAnEtude>0)||!(V.ApportAutof>=0)||!(V.LoyerMensuel>0)||!(V.TauxPlacement>=0)||!(V.CoutLogement>0)){P.FlagErreur|=P.ERR_F_DATA_NR}}if(P.FlagErreur==0){if(!(V.CoutLogement>0)){P.FlagErreur|=P.ERR_F_CALC_PROJ}else{P.CoutProjet=V.CoutLogement;if(V.CoutNotaire>0){P.CoutProjet+=V.CoutNotaire}if(V.CoutTravaux>0){P.CoutProjet+=V.CoutTravaux}}}if(P.FlagErreur==0){P.MontantPret=P.CoutProjet-V.ApportAutof;if(P.MontantPret>0){if(!(V.NbAnPret>0)||!(V.TauxPret>=0)){P.FlagErreur|=P.ERR_F_DATA_NR}}else{P.MontantPret=0}}if(P.FlagErreur==0){P.VcapImmo=V.CoutLogement;if(V.CoutTravaux>0){P.VcapImmo+=V.CoutTravaux}var N=(V.TauxValImmo>0)?(V.TauxValImmo/100):0;P.VcapImmo*=Math.pow(1+N,V.NbAnEtude)}if(P.FlagErreur==0){if(P.MontantPret==0){P.MensualAdi=0}else{if(P.MontantPret>0&&V.NbAnPret>0&&V.TauxPret>=0){var A=V.NbAnPret*12;var N=(V.TauxPret/100)/12;if(N>0){N=N/(1-Math.pow(1+N,-A))}else{N=1/A}if(V.TauxAdi>0){N+=(V.TauxAdi/100)/12}P.MensualAdi=P.MontantPret*N}else{P.FlagErreur|=P.ERR_F_CALC_MENS}}}if(P.FlagErreur==0){if(P.MontantPret>0&&V.NbAnEtude<V.NbAnPret){if(V.TauxPret==0){P.CrdIra=P.MontantPret*(V.NbAnEtude/V.NbAnPret)}else{var N=(V.TauxPret/100);var S=V.NbAnPret*12;var U=V.NbAnEtude*12;var B=(1-Math.pow(1+N,-(S-U)))/(1-Math.pow(1+N,-S));P.CrdIra=P.MontantPret*B;N=(N>0.06)?0.03:N/2;P.CrdIra*=(1+N)}}else{P.CrdIra=0}}if(P.FlagErreur==0){var R;var E=(V.TauxRevLoyer>0)?V.TauxRevLoyer/100:0;var O=(V.TauxInflation>0)?V.TauxInflation/100:0;var T=(V.TauxPlacement>0)?V.TauxPlacement/100:0;var G=P.MensualAdi;var D=V.LoyerMensuel;var I=(V.TaxeHabLoc>0)?V.TaxeHabLoc:0;var H=(V.TaxeHabProp>0)?V.TaxeHabProp:0;var M=(V.TaxeFonciere>0)?V.TaxeFonciere:0;var L=(V.ChargeProp>0)?V.ChargeProp:0;P.CumulLoyerMensuel=0;P.CumulTaxeHabLoc=0;P.CumulMensualAdi=0;P.CumulTaxeHabProp=0;P.CumulTaxeFonciere=0;P.CumulChargeProp=0;P.CumulCoutTresor=0;P.CumulLoc=0;P.CumulProp=0;var F=0;var C=(V.ApportAutof<P.CoutProjet)?V.ApportAutof:P.CoutProjet;var Q=C;for(R=0;R<V.NbAnEtude;R++){if(R>0){D*=(1+E);H*=(1+O);I*=(1+O);M*=(1+O);L*=(1+O)}var K=(D*12)+I;var J=H+L;if(R<V.NbAnPret){J+=(G*12);P.CumulMensualAdi+=(G*12)}else{F+=(G*12)}if(V.TypeAchat==3||R>=2){J+=M;P.CumulTaxeFonciere+=M}P.CumulLoyerMensuel+=(D*12);P.CumulTaxeHabLoc+=I;P.CumulTaxeHabProp+=H;P.CumulChargeProp+=L;P.CumulLoc+=K;P.CumulProp+=J;P.CumulCoutTresor=(Q*T);Q*=(1+T);Q+=(J-K)}P.CumulCoutTresor=Q-((P.CumulProp-P.CumulLoc)+C);P.SoldeLoc=P.CumulLoc;P.SoldeProp=P.CumulLoc+Q;P.SoldeProp+=P.CrdIra-P.VcapImmo;P.SoldeGain=P.SoldeLoc-P.SoldeProp;if(P.SoldeGain<0){P.ChoixAL=1;P.SoldeGain=-P.SoldeGain}else{if(P.SoldeGain>0){P.ChoixAL=2}else{P.ChoixAL=0}}if(P.SoldeGain<P.CumulLoc*0.01){P.ChoixAL=0}P.DeboursLoc=P.CumulLoc/(V.NbAnEtude*12);P.DeboursProp=(P.CumulProp+F)/(V.NbAnEtude*12);P.DeboursGain=P.DeboursLoc-P.DeboursProp;if(P.DeboursGain<0){P.DeboursGain=-P.DeboursGain}}return(P)}function GetPivotAL(E,K){var C=new Object();C.NbTauxPivot=0;C.TauxPlacement=null;C.TauxInflation=null;C.TauxRevLoyer=null;C.TauxValImmo=null;if(E.FlagErreur||K.FlagErreur||K.ChoixAL==0){return(C)}for(var J=0;;J++){var A,F,D,B;B=(J==0)?"TauxPlacement":(J==1)?"TauxValImmo":(J==2)?"TauxRevLoyer":null;if(B==null){break}F=E[B];if(F==0||F>=10){continue}E[B]=0;A=GetResultAL(E);if(A.ChoixAL==K.ChoixAL){E[B]=10;A=GetResultAL(E)}if(A.ChoixAL!=K.ChoixAL){var G=F;var H=K.ChoixAL;for(;;){var D=E[B];var I=(D-G)/2;if(A.ChoixAL==0||(I<0.001&&I>-0.001)){C[B]=D;C.NbTauxPivot++;break}if(A.ChoixAL!=H){I=-I}H=A.ChoixAL;G=D;E[B]+=I;A=GetResultAL(E)}}E[B]=F}return(C)}function SetAfficheAL(B,A){A.S_DeboursGain=(A.FlagErreur)?"&nbsp;":(FormateVal(A.DeboursGain,0,1)+"&nbsp;€");A.S_DeboursProp=(A.FlagErreur)?"&nbsp;":(FormateVal(A.DeboursProp,0,1)+"&nbsp;€");A.S_DeboursLoc=(A.FlagErreur)?"&nbsp;":(FormateVal(A.DeboursLoc,0,1)+"&nbsp;€");A.S_SoldeProp=(A.FlagErreur)?"&nbsp;":(FormateVal(A.SoldeProp,0,1)+"&nbsp;€");A.S_SoldeLoc=(A.FlagErreur)?"&nbsp;":(FormateVal(A.SoldeLoc,0,1)+"&nbsp;€");A.S_SoldeGain=(A.FlagErreur)?"&nbsp;":(FormateVal(A.SoldeGain,0,1)+"&nbsp;€");A.S_MontantPret=(A.FlagErreur)?"&nbsp;":(FormateVal(A.MontantPret,0,1)+"&nbsp;€");A.S_MensualAdi=(A.FlagErreur)?"&nbsp;":(FormateVal(A.MensualAdi,0,1)+"&nbsp;€");A.S_CrdIra=(A.FlagErreur)?"&nbsp;":(FormateVal(A.CrdIra,0,1)+"&nbsp;€");A.S_VcapImmo=(A.FlagErreur)?"&nbsp;":(FormateVal(A.VcapImmo,0,1)+"&nbsp;€")}var gIsChanged=0;function ffff_OC(C){gIsChanged=1;var E=document.ffff;if(C=="CoutLogement"||C=="TypeAchat"){var F=null;var B=GetNum(E.CoutLogement.value,80);var A=E.TypeAchat.options[E.TypeAchat.selectedIndex].value;if(B>0&&A>0){if(A==2){F=B*0.035}else{if(A==3){F=B*0.075}else{F=0}}}if(F!=null){E.CoutNotaire.value=Math.floor(F)}}else{if(C=="TaxeHabLoc"){var D=GetNum(E.TaxeHabLoc.value,60);if(D>0&&!(E.TaxeHabProp.value>"")){E.TaxeHabProp.value=E.TaxeHabLoc.value}}}}function BeforeSubmit(B,C){var A=0;if(!A){A=TestForm(0,"N50;min=1;*!",B.LoyerMensuel,"Indiquez votre loyer mensuel charges comprises.","Loyer : saisie incorrecte.","N50!",B.TaxeHabLoc,"","Taxe d'habitation : saisie incorrecte.")}if(!A){A=TestForm(0,"S*!",B.NbAnEtude,"Choisissez le nombre d'années sur lequel porte l'étude.","","N22;min=0;max=10;*!",B.TauxPlacement,"Indiquez le taux de rendement net d'impot des sommes épargnées.","","N22;min=0;max=10;*!",B.TauxInflation,"Indiquez le taux d'inflation prévu.","","N22;min=0;max=10;*!",B.TauxRevLoyer,"Indiquez le taux annuel d'augmentation du loyer.","","N22;min=0;max=10;*!",B.TauxValImmo,"Indiquez le taux annuel d'augmentation de l'immobilier.","")}if(!A){A=TestForm(0,"S*!",B.TypeAchat,"Indiquez le type d'acquisition envisagée.","","N80;min=1;*!",B.CoutLogement,"Indiquez le coût du logement.","Coût du logement : saisie incorrecte.","N80!",B.CoutTravaux,"","Coût des travaux : saisie incorrecte.","N80!",B.CoutNotaire,"","Frais de notaire : saisie incorrecte.","N80*!",B.ApportAutof,"Indiquez votre apport personnel.","Apport personnel : saisie incorrecte.","S*!",B.NbAnPret,"Choisissez la durée de votre prêt.","","N22;min=0;max=15;*!",B.TauxPret,"Indiquez le taux de votre prêt.","","N12;min=0;max=1;*!",B.TauxAdi,"Indiquez le taux de l'assurance-décès, par exemple 0,40%.","","N50!",B.TaxeFonciere,"","Taxe foncière : saisie incorrecte.","N50!",B.TaxeHabProp,"","Taxe d'habitation : saisie incorrecte.","N50!",B.ChargeProp,"","Charge d'entretien : saisie incorrecte.")}if(!A&&!gIsChanged){if(DataAL.TypeAchat){self.alert("Veuillez complétez ou modifier les données !")}else{self.alert("Complétez le questionnaire !")}A=-1}return((A)?false:true)}function OnBtnSubmit(E){if(BeforeSubmit(E,1)==true){var B=GetDataForm();var C=GetResultAL(B);SetAfficheAL(B,C);var G=GetPivotAL(B,C);var A=document.getElementById("ZoneResult");if(C.FlagErreur&C.ERR_F_DATA_NR){A.innerHTML="Saisie insuffisante pour effectuer les calculs."}else{if(C.FlagErreur!=0){A.innerHTML="Saisie insuffisante ou incorrecte pour effectuer les calculs."}else{var D="";D+='<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>'+C.S_DeboursLoc+'</td></tr><tr><td class="td1" nowrap>Dépenses totales sur '+B.NbAnEtude+' ans (loyers, taxe d&#146;habitation) :</td><td class="td1" nowrap>'+C.S_SoldeLoc+'</td></tr><tr><td class="td1t" nowrap bgcolor="#8080FF" colspan="2">Si vous achetez'+((C.MontantPret>0)?" (prêt = "+C.S_MontantPret+". Mensualité = "+C.S_MensualAdi+").":"")+'</td></tr><tr><td class="td1" nowrap>Dépense mensuelle moyenne (mensualité, taxes, charges) :</td><td class="td1" nowrap>'+C.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>'+C.S_SoldeProp+'</td></tr><tr><td class="td1t" nowrap bgcolor="#8080FF" colspan="2">Conclusion</td></tr><tr><td class="td1" colspan="2">';if(C.ChoixAL==1){D+="Vous avez intérêt à LOUER. Sur "+B.NbAnEtude+" ans, vous économiserez globalement "+C.S_SoldeGain+" par rapport à une acquisition.";if(C.DeboursLoc<C.DeboursProp){D+="En moyenne, vous économiserez "+C.S_DeboursGain+" par mois."}else{if(C.DeboursLoc>C.DeboursProp){D+="Cependant vous devrez débourser en moyenne "+C.S_DeboursGain+" de plus par mois."}}}else{if(C.ChoixAL==2){D+="Vous avez intérêt à ACHETER. Sur "+B.NbAnEtude+" ans, vous économiserez globalement "+C.S_SoldeGain+" par rapport à la location.";if(C.DeboursLoc>C.DeboursProp){D+=" En moyenne, vous économiserez "+C.S_DeboursGain+" par mois."}else{if(C.DeboursLoc<C.DeboursProp){D+=" Cependant vous devrez débourser en moyenne "+C.S_DeboursGain+" de plus par mois."}}}else{if(C.ChoixAL==0){D+=" Compte tenu du coût de la trésorerie, les deux solutions, acheter ou louer, sont globalement équivalentes. Toutefois";if(C.DeboursLoc>C.DeboursProp){D+=" si vous achetez, vous économiserez en moyenne "+C.S_DeboursGain+" par mois."}else{if(C.DeboursLoc<C.DeboursProp){D+=" si vous louez, vous économiserez en moyenne "+C.S_DeboursGain+" par mois."}}}}}D+="<br/>&nbsp;<br/>En cas d&#146;achat, la valeur du logement au bout de "+B.NbAnEtude+" ans serait de "+C.S_VcapImmo+" (compte tenu du taux de valorisation saisi : "+B.TauxValImmo+"% par an).";if(C.CrdIra>0){D+=" Toutefois, il vous resterait "+C.S_CrdIra+" à rembourser sur le prêt, indemnité de remboursement anticipé comprise."}D+=" Ceci est pris en compte dans les calculs.";if(G.NbTauxPivot>0){var F=0;var H="<br/>&nbsp;<br/>ATTENTION : le résultat s'inverse ";if(G.TauxPlacement!=null){var I=(G.TauxPlacement>B.TauxPlacement)?"monte à ":"descend à ";H+="si le taux de rendement net d'impot de l'épargne "+I+FormateVal(G.TauxPlacement,2)+"% par an";F++}if(G.TauxRevLoyer!=null){var I=(G.TauxRevLoyer>B.TauxRevLoyer)?"monte à ":"descend à ";if(F>0){H+=", ";if(F+1==G.NbTauxPivot){H+="ou encore "}}H+="si le taux de progression des loyers "+I+FormateVal(G.TauxRevLoyer,2)+"% par an";F++}if(G.TauxValImmo!=null){var I=(G.TauxValImmo>B.TauxValImmo)?"monte à ":"descend à ";if(F>0){H+=", ";if(F+1==G.NbTauxPivot){H+="ou encore "}}H+="si le taux de plus-value sur le logement "+I+FormateVal(G.TauxValImmo,2)+"% par an";F++}H+=".";D+=H}D+="</td></tr></table>";A.innerHTML=D}}}}function BodyOnLoad(){var A=document.ffff;var B;B="20";SetIndex(A.NbAnPret,B);B="20";SetIndex(A.NbAnEtude,B);B="5,20";A.TauxPret.value=B;B="0,35";A.TauxAdi.value=B;B="2,50";A.TauxInflation.value=B;B="3,00";A.TauxPlacement.value=B;B="2,50";A.TauxValImmo.value=B;B="2,50";A.TauxRevLoyer.value=B;gIsChange1=0};