
var run="";var loaded=false;var g2_erros="";var calcul_ok;var N;var Emprunt;var Interet;var ValeurRachat=new Array();var ValeurRachat2=new Array();var LoyerNet=new Array();var LoyerNet2=new Array();var AssuranceVie=new Array();var Comptant=new Array();var Comptant2=new Array();var Immobilier=new Array();var Differentiel;var Differentiel2;var valCapitalDepart=0;var valHorizon=0;var valRepartMon=0;var valRepartAct=0;var valRepartObl=0;var valRentMon=0;var valRentAct=0;var valRentObl=0;var valFraisAV=0;var valRentImmo=0;var valImpLoyer=0;var valChargeLoyer=0;var valTxEmprunt=0;var valRendLoyer=0;var intGraphHeight=0;function monav(idname,pic)
{if(document.images&&loaded)
{document.images[idname].src=pic;}}
var curhelp="";function showhelp(formno,qty,helpid)
{if(document.getElementById(formno)&&loaded)
{helpid="help"+formno+"-"+helpid;if(curhelp=="")
{for(n=1;n<=qty;n++)
{document.getElementById("help"+formno+"-"+n).style.display="none";}}
else
{document.getElementById(curhelp).style.display="none";}
if(document.getElementById(helpid))
{document.getElementById(helpid).style.display="";curhelp=helpid;document.getElementById("showall"+formno).style.display="";}}}
function showall(formno,qty)
{for(n=1;n<=qty;n++)
{document.getElementById("help"+formno+"-"+n).style.display="";}
window.focus();curhelp="";document.getElementById("showall"+formno).style.display="none";}
function jump(pageFrom,pageTo,helpqty)
{g2_erros="";if(ValidatePage(pageFrom))
{if(pageFrom!=pageTo)
{eval("document.immo"+pageFrom+".style.visibility='hidden';");eval("document.immo"+pageTo+".style.visibility='visible';");eval("document.immo"+pageFrom+".style.position='absolute';");eval("document.immo"+pageTo+".style.position='static';");}
if(helpqty>0)
{eval("showall("+pageTo+","+helpqty+")");}
if(pageTo==2)
{}
if(pageTo==3)
{formatAndSum('RepartMon');formatAndSum('RepartAct');formatAndSum('RepartObl');formatAndSum('RentMon');formatAndSum('RentAct');formatAndSum('RentObl');}
if(pageTo==4)
{format('FraisAV');format('RentImmo');format('TxEmprunt');format('RendLoyer');format('ImpLoyer');format('ChargeLoyer');}
if(pageTo==5)
{calcul_ok=false;if(pageFrom!=2)
ValidatePage(2);if(pageFrom!=3)
ValidatePage(3);if(pageFrom!=4)
ValidatePage(4);CalculateResults();DisplayResults();}
if(pageTo==6)
{calcul_ok=false;if(pageFrom!=2)ValidatePage(2);if(pageFrom!=3)ValidatePage(3);if(pageFrom!=4)ValidatePage(4);CalculateResults();addGraph();DisplayGraph();}}
else
{alert("Certaines donn\u00E9es sont erron\u00E9es.\nV\u00E9rifiez ces champs: "+g2_erros)}}
function DisplayGraph()
{document.getElementById("Res1").innerHTML="<font color=green>"+numToFloatbis(AssuranceVie[N].toString())+"&nbsp;&euro;</font>";document.getElementById("Res2").innerHTML="<font color=blue>"+numToFloatbis(Immobilier[N].toString())+"&nbsp;&euro;</font>";document.getElementById("Res3").innerHTML="<font color=red>"+numToFloatbis(Immobilier[N].toString())+"&nbsp;&euro;</font>";document.getElementById("Res4").innerHTML="<font color=blue>"+numToFloatbis(ValeurRachat[N].toString())+"&nbsp;&euro;</font>";document.getElementById("Res5").innerHTML="<font color=red>"+numToFloatbis(ValeurRachat2[N].toString())+"&nbsp;&euro;</font>";document.getElementById("Res6").innerHTML="<font color=red>"+numToFloatbis(Emprunt.toString())+"&nbsp;&euro;</font>";document.getElementById("Res7").innerHTML="<font color=green><b>"+numToFloatbis(AssuranceVie[N].toString())+"&nbsp;&euro;</b></font>";document.getElementById("Res8").innerHTML="<font color=blue><b>"+numToFloatbis(Comptant[N].toString())+"&nbsp;&euro;</b></font>";document.getElementById("Res9").innerHTML="<font color=red><b>"+numToFloatbis(Comptant2[N].toString())+"&nbsp;&euro;</b></font>";}
function CalculateResults()
{var Coef;var Frais;var Repartition=new Array();var Rentabilite=new Array();var RendLoyer;var RentImmo;var ImpotLoyer;var ChargeLoyer;var DeducLoyer;var TxEmprunt;Coef=0;N=valHorizon;Repartition[1]=valRepartMon/100;Repartition[2]=valRepartAct/100;Repartition[3]=valRepartObl/100;Rentabilite[1]=valRentMon/100;Rentabilite[2]=valRentAct/100;Rentabilite[3]=valRentObl/100;RentImmo=valRentImmo/100;ImpotLoyer=valImpLoyer/100;ChargeLoyer=valChargeLoyer/100;DeducLoyer=86/100;RendLoyer=valRendLoyer/100;TxEmprunt=valTxEmprunt/100;Frais=valFraisAV/100;for(j=1;j<=3;j++)
{Coef=Coef+Repartition[j]*Rentabilite[j];}
LoyerNet[1]=valCapitalDepart*RendLoyer*(1-ChargeLoyer-ImpotLoyer*(DeducLoyer-ChargeLoyer));Immobilier[1]=valCapitalDepart*(1+RentImmo);ValeurRachat[1]=LoyerNet[1]*(1+Coef)*(1-Frais);Comptant[1]=Immobilier[1]+ValeurRachat[1];AssuranceVie[1]=valCapitalDepart*(1+Coef)*(1-Frais);for(i=2;i<=N;i++)
{LoyerNet[i]=LoyerNet[1];Immobilier[i]=Immobilier[i-1]*(1+RentImmo);ValeurRachat[i]=(ValeurRachat[i-1]+LoyerNet[i])*(1+Coef)*(1-Frais);AssuranceVie[i]=AssuranceVie[i-1]*(1+Coef)*(1-Frais);Comptant[i]=Immobilier[i]+ValeurRachat[i];}
Differentiel=AssuranceVie[N]-Comptant[N];Emprunt=((valCapitalDepart*RendLoyer)/TxEmprunt)*(DeducLoyer-ChargeLoyer);Interet=TxEmprunt*Emprunt;LoyerNet2[1]=valCapitalDepart*RendLoyer*(1-ChargeLoyer)-Interet;ValeurRachat2[1]=(Emprunt+LoyerNet2[1]*(1+Coef))*(1-Frais);Comptant2[1]=Immobilier[1]+ValeurRachat2[1];for(i=2;i<=N;i++)
{LoyerNet2[i]=LoyerNet2[1];ValeurRachat2[i]=(ValeurRachat2[i-1]+LoyerNet2[i])*(1+Coef)*(1-Frais);Comptant2[i]=Immobilier[i]+ValeurRachat2[i]-Emprunt;}
Differentiel2=AssuranceVie[N]-Comptant2[N];calcul_ok=true;}
function DisplayResults()
{var strResults="";strResults=strResults+"<table width='100%' border='0' class='smallprompt'>";strResults=strResults+" <tr>";strResults=strResults+"  <td width=200>Capital de d&eacute;part</td>";strResults=strResults+"  <td width=20>&nbsp;</td>";strResults=strResults+"  <td width=100 id=CapitalDepart>"+valCapitalDepart+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td>Horizon d'investissement</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td id=Horizon>"+valHorizon+"&nbsp;ans</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3><br></td>";strResults=strResults+" </tr>";if(calcul_ok)
{strResults=strResults+" <tr class='heading4black'>";strResults=strResults+"  <td colspan=3>1/ Assurance vie :</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>vous placez votre capital dans un contrat d'assurance vie.</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td align=right>Total</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td >"+numToFloatbis(AssuranceVie[N].toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>&nbsp;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td colspan=3>2/ Assurance vie & immobilier locatif : </td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>vous achetez un bien immobilier que vous payez au comptant. Vous le louez et le loyer net re&ccedil;u est investit dans un contrat d'assurance-vie.</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>votre investissement immobilier &agrave; terme</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Immobilier[N].toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>valeur de rachat de votre assurance-vie</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(ValeurRachat[N].toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td align=right>Total</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Comptant[N].toString())+"&nbsp;&euro;<td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>&nbsp</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>Diff&eacute;rentiel avec le premier sc&eacute;nario</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Differentiel.toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>&nbsp;</td>";strResults=strResults+" </tr>";strResults=strResults+" <!--hypothesis 3-->";strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td colspan=3>3/ Assurance vie & immobilier avec cr&eacute;dit <i>in fine</i> : </td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>vous achetez un bien immobilier que vous payez au comptant. Vous faites ensuite un emprunt destin&eacute; &agrave; alimenter un contrat d'assurance vie, les int&eacute;r&ecirc;ts de cet emprunt &eacute;tant financ&eacute;s par une partie du loyer per&ccedil;u. Le solde du loyer est, pour sa part, investit dans un contrat d'assurance vie.</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>votre investissement immobilier &agrave; terme</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Immobilier[N].toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>valeur de rachat de votre assurance-vie</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(ValeurRachat2[N].toString())+"&nbsp;&euro;</td>";strReults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>montant &agrave; rembourser</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Emprunt.toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td align=right>Total</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Comptant2[N].toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>&nbsp;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td align=right>Diff&eacute;rentiel avec le premier sc&eacute;nario</td>";strResults=strResults+"  <td>&nbsp;</td>";strResults=strResults+"  <td>"+numToFloatbis(Differentiel2.toString())+"&nbsp;&euro;</td>";strResults=strResults+" </tr>";}
else
{strResults=strResults+" <tr class=heading4black>";strResults=strResults+"  <td colspan=3>Probl&egrave;me dans les valeurs initiales.</td>";strResults=strResults+" </tr>";}
strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>&nbsp;</td>";strResults=strResults+" </tr>";strResults=strResults+" <tr>";strResults=strResults+"  <td colspan=3>Ces valeurs sont brutes (avant imp&ocirc;ts).</td>";strResults=strResults+" </tr>";strResults=strResults+"</table>";document.getElementById("divResults").innerHTML=strResults;}
function addError(name)
{g2_erros=g2_erros+"\n"+name;}
function ValidatePage(tmp_current)
{if(tmp_current==2)
{if(!checkInput(2,"CapitalDepart","N"))
{addError("Capital de d\u00E9part");}
if(!checkInput(2,"Horizon","N"))
{addError("Horizon d'investissement");}}
if(tmp_current==3)
{if(!checkInput(3,"RepartMon","P0"))
{addError("R\u00E9partition Mon\u00E9taire");}
if(!checkInput(3,"RepartAct","P0"))
{addError("R\u00E9partition Actions");}
if(!checkInput(3,"RepartObl","P0"))
{addError("R\u00E9partition Obligations");}
if(!checkInput(3,"RentMon","P0"))
{addError("Rentabilit\u00E9 Mon\u00E9taire");}
if(!checkInput(3,"RentAct","P0"))
{addError("Rentabilit\u00E9 Actions");}
if(!checkInput(3,"RentObl","P0"))
{addError("Rentabilit\u00E9 Obligations");}
if(!checkTotalRepart(3,"RepartTot"))
{addError("R\u00E9partition Total");}}
if(tmp_current==4)
{if(!checkInput(4,"FraisAV","P"))
{addError("Taux de frais de gestion");}
if(!checkInput(4,"RentImmo","P0"))
{addError("Valorisation de l'investissement immo.");}
if(!checkInput(4,"ImpLoyer","P0"))
{addError("Imp\u00F4t sur les loyers");}
if(!checkInput(4,"ChargeLoyer","P0"))
{addError("Charges sur les loyers");}
if(!checkInput(4,"TxEmprunt","P"))
{addError("Taux d'emprunt");}
if(!checkInput(4,"RendLoyer","P0"))
{addError("Apport des loyers");}}
if(g2_erros!="")
return false;return true;}
function checkInput(formno,myInput,myType)
{var str,arg;var myInputName=myInput;var str=eval("document.immo"+formno+"."+myInput+".value");if(str!="")
{arg=str;arg=arg.replace(/ /g,"");myInput=arg;myInput=myInput.replace(/,/g,".");if(IsNumeric(arg))
{switch(myType)
{case"P":if((parseFloat(myInput)>0)&&(parseFloat(myInput)<=100))
{eval("val"+myInputName+"="+parseFloat(myInput));return true;}
else
{return false;}
break;case"P0":if((parseFloat(myInput)>=0)&&(parseFloat(myInput)<=100))
{eval("val"+myInputName+"="+parseFloat(myInput));return true;}
else
{return false;}
break;case"N":if(parseFloat(myInput)>0)
{eval("val"+myInputName+"="+parseFloat(myInput));return true;}
else
{return false;}
break;case"N0":if(parseFloat(myInput)>=0)
{eval("val"+myInputName+"="+parseFloat(myInput));return true;}
else
{return false;}
break;case"N0M":if((parseFloat(myInput)>=0)&&(parseFloat(myInput)<=10000000000))
{eval("val"+myInputName+"="+parseFloat(myInput));return true;}
else
{return false;}
break;}}
else
{return false;}}
else
{return false;}}
function checkTotalRepart(formno,myInput)
{myInput=eval("document.immo"+formno+"."+myInput+".value");if(isNumeric(myInput))
{if(parseFloat(myInput)==100)
{return true;}
else
{return false;}}
else
{return false;}}
function _numToUnits(n,units_prefix,decimal_places,units_suffix)
{if(isOverflow(n))
return'<i>numeric overflow</i>'
var s=''
var d=strToInt(decimal_places)
var x=Math.abs(Math.round(n*Math.pow(10,decimal_places)))
if(x==0)
{var defaultStr='0'
if(d>0)
{defaultStr+=','
for(var i=0;i<d;i++)defaultStr+='0'}
defaultStr=units_prefix+defaultStr+units_suffix
return defaultStr}
if(d==0)
{var tmp=''+x
s=addCommas(tmp)}
else
{var leftTmp=''+x
var rightTmp=''+x
var len=leftTmp.length
for(var i=0;i<d+1-len;i++)
{leftTmp='0'+leftTmp
rightTmp='0'+rightTmp}
len=leftTmp.length
var decimalSplit=len-d
var leftStr=addCommas(leftTmp.substring(0,decimalSplit))
var rightStr=rightTmp.substring(decimalSplit,len)
s=leftStr+','+rightStr}
s=units_prefix+s+units_suffix
return s}
function numToFloatbis(n)
{n=n.replace(/ /g,"");if(n.length>0)
{return _numToUnits(n,"",0,"")}
return"";}
function IsNumeric(sText)
{var ValidChars="0123456789.,";var IsNumber=true;var Char;for(i=0;i<sText.length&&IsNumber==true;i++)
{Char=sText.charAt(i);if(ValidChars.indexOf(Char)==-1)
{IsNumber=false;}}
return IsNumber;}
function start()
{loaded=true;if(run!=''){setTimeout(run,0);}}
start();function formatAndSum(myParam){var f=document.immo3;if(myParam!=null){f.RepartTot.value=numToFloat(strToFloat(strToFloat(f.RepartMon.value)+strToFloat(f.RepartAct.value)+strToFloat(f.RepartObl.value)));f.RendTot.value=numToFloat((strToFloat(f.RepartMon.value)*strToFloat(f.RentMon.value)+strToFloat(f.RepartAct.value)*strToFloat(f.RentAct.value)+strToFloat(f.RepartObl.value)*strToFloat(f.RentObl.value))/100);if(strToFloat(f.elements[myParam].value)!=0){f.elements[myParam].value=numToFloat(strToFloat(f.elements[myParam].value));}}
else{f.RepartTot.value=numToFloat(strToFloat(strToFloat(f.RepartMon.value)+strToFloat(f.RepartAct.value)+strToFloat(f.RepartObl.value)));f.RendTot.value=numToFloat((strToFloat(f.RepartMon.value)*strToFloat(f.RentMon.value)+strToFloat(f.RepartAct.value)*strToFloat(f.RentAct.value)+strToFloat(f.RepartObl.value)*strToFloat(f.RentObl.value))/100);}}
function TypeGestion_onchange()
{var f=document.immo3;if(f.TypeGestion.options[1].selected){f.RepartMon.value=numToFloat(strToFloat(5));f.RepartAct.value=numToFloat(strToFloat(70));f.RepartObl.value=numToFloat(strToFloat(25));}
else if(f.TypeGestion.options[3].selected){f.RepartMon.value=numToFloat(strToFloat(0));f.RepartAct.value=numToFloat(strToFloat(100));f.RepartObl.value=numToFloat(strToFloat(0));}
else if(f.TypeGestion.options[2].selected){f.RepartMon.value=numToFloat(strToFloat(10));f.RepartAct.value=numToFloat(strToFloat(20));f.RepartObl.value=numToFloat(strToFloat(70));}
else{f.RepartMon.value=numToFloat(strToFloat(8));f.RepartAct.value=numToFloat(strToFloat(40));f.RepartObl.value=numToFloat(strToFloat(52));}
formatAndSum();}
function format(myParam){var f=document.immo4;f.elements[myParam].value=numToFloat(strToFloat(f.elements[myParam].value));}
function addGraph()
{var table_comptant=new Array();table_comptant[0]=Math.round(AssuranceVie[N]);table_comptant[1]=Comptant[N];table_comptant[2]=Comptant2[N];var table_labels=new Array();table_labels[0]="Assurance vie";table_labels[1]="Assurance vie & immobilier locatif";table_labels[2]="Assurance vie & immobilier avec cr&eacute;dit in fine";var os=navigator.userAgent;var browserName=navigator.appName;var strTemp="";var strTempGraph="";if(browserName=="Netscape"||os.indexOf("WIN95")!=-1||os.indexOf("Windows 95")!=-1)
{}
else
{strTempGraph=myVMLGraphBar(250,150,table_comptant,table_labels);strTemp=strTemp+"<table width='100%' celpadding=1 cellspacing=1 border=0>";strTemp=strTemp+"<tbody><tr><td align=center height='"+intGraphHeight+"'>";strTemp=strTemp+strTempGraph;strTemp=strTemp+"</td></tr></tbody></table>";document.getElementById("graphe").innerHTML=strTemp;}}