
/********************************** REUTILISABLE *******************************************************/

// jusqu'à 15 chiffres après la virgule
var TAB_ARRONDI = new Array(1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000,100000000000,1000000000000,10000000000000,100000000000000,1000000000000000);

function ARRONDI(n,d) { return Math.round( n * TAB_ARRONDI[d] ) / TAB_ARRONDI[d] ; }
function ARRONDI_INF(n,d) { return Math.floor( n * TAB_ARRONDI[d] ) / TAB_ARRONDI[d] ; }
function ARRONDI_SUP(n,d) { return Math.ceil( n * TAB_ARRONDI[d] ) / TAB_ARRONDI[d] ; }

/************************************* SECHILIENNE ****************************************************/

// si reload de la page, on vérifie ls PFL

if(document.FORMULAIRE.TYPE[0].checked) document.FORMULAIRE.HASPFL.checked = false;

function NBR()          { return document.FORMULAIRE.NBR.value; }                      // D24
function HASPFL()       { return document.FORMULAIRE.HASPFL.checked; }                 // L12
function TYPE()         {                                                              // B53
	if(document.FORMULAIRE.TYPE[0].checked) return 1;
	if(document.FORMULAIRE.TYPE[1].checked) return 2;
	return 0;
	}
function TAUX()         { return document.FORMULAIRE.TAUX.value.replace('%',''); }                     // H15
function FRANCAIS()     {                                                              // L37(true/false) venant de B55(1/2)
	if(document.FORMULAIRE.FRANCAIS[0].checked) return 1;
	if(document.FORMULAIRE.FRANCAIS[1].checked) return 0;
	return 0;
	}
function DIVIDENDE()    { return document.FORMULAIRE.DIVIDENDE.value; }                // I34
function SOUSCRIPTION() { return document.FORMULAIRE.SOUSCRIPTION.value; }             // I35
function PROMO() { return document.FORMULAIRE.PROMO.value; }

function BRUT()    { return DIVIDENDE() * NBR() }     // I36 = I34 * D24

function SOCIAL()      {                                                              // I37 = SI(L37=VRAI;H50;ARRONDI.INF(I36*(SI(H15;25;H15)/100);2))
	if(FRANCAIS()) { return TOTAL(); }
	return Math.floor( BRUT() * TAUX() ) / 100 ;
	}
function REINVESTIR() {                                                           // SI(B53<>2;"";SI(I37<>"";I36-I37;""))
	if (TYPE()==2) return  BRUT()-SOCIAL()
	return 0;
	}

function taux_CSG()   { return (FRANCAIS() ? 8.2 : 0); } // G44
function taux_CAPS()  { return (FRANCAIS() ? 0.3 : 0); } // G45
function taux_PS()    { return (FRANCAIS() ? 2 : 0); }   // G46
function taux_RDS()   { return (FRANCAIS() ? 0.5 : 0); } // G47
function taux_RSA()   { return (FRANCAIS() ? 1.1 : 0); } // G48
function taux_PFL()   { return (HASPFL() ? 18 : 0); }    // G49

function taux_TOTAL() { return Math.floor( (taux_CSG()+taux_CAPS()+taux_PS()+taux_RDS()+taux_RSA()+taux_PFL()) *1000) /1000; }

function CSG()   { return BRUT() * taux_CSG()    / 100 ; }        // H44 = I36 * (G44 / 100)
function CAPS()  { return BRUT() * taux_CAPS()   / 100 ; }        // H45 = I36 * (G45 / 100)
function PS()    { return BRUT() * taux_PS()     / 100 ; }        // H46 = I36 * (G46 / 100)
function RDS()   { return BRUT() * taux_RDS()    / 100 ; }        // H47 = I36 * (G47 / 100)
function RSA()   { return BRUT() * taux_RSA()    / 100 ; }        // H48 = I36 * (G48 / 100)
function PFL()   { return BRUT() * taux_PFL()    / 100 ; }        // H49 = I36 * (G49 / 100)

function TOTAL() { return (CSG() + CAPS() + PS() + RDS() + RSA() + PFL()) ; }

function e(n) { return document.getElementById(n); }

function validate()
	{
	if(TYPE()==1 && HASPFL())
		{
		alert("Le PFL est incompatible avec un PEA");
		document.FORMULAIRE.HASPFL.checked = false;
		}
	if(TYPE()==1 && !FRANCAIS())
		{
		alert("Un non résident français ne peut pas avoir un PEA");
		e("info1").innerHTML = "";
		e("info2").innerHTML = "";
		e("info3").innerHTML = "";
		return false;
		}

	if(TYPE()==1 && FRANCAIS())
		e("detail").style.display = "none";
	else
		e("detail").style.display = "block";
		
	document.FORMULAIRE.BRUT.value = Math.floor(BRUT()*100)/100;
	document.FORMULAIRE.SOCIAL.value = Math.floor(SOCIAL()*100)/100;
	document.FORMULAIRE.REINVESTIR.value = Math.floor(REINVESTIR()*100)/100;
	e("taux_CSG").innerHTML   = taux_CSG();
	e("taux_CAPS").innerHTML  = taux_CAPS();
	e("taux_PS").innerHTML    = taux_PS();
	e("taux_RDS").innerHTML   = taux_RDS();
	e("taux_RSA").innerHTML   = taux_RSA();
	e("taux_PFL").innerHTML   = taux_PFL();
	e("taux_TOTAL").innerHTML = taux_TOTAL();
	e("CSG").innerHTML        = ARRONDI(CSG(),2);
	e("CAPS").innerHTML       = ARRONDI(CAPS(),2);
	e("PS").innerHTML         = ARRONDI(PS(),2);
	e("RDS").innerHTML        = ARRONDI(RDS(),2);
	e("RSA").innerHTML        = ARRONDI(RSA(),2);
	e("PFL").innerHTML        = ARRONDI(PFL(),2);
	e("TOTAL").innerHTML      = ARRONDI(TOTAL(),2);
	e("hypothese").innerHTML = "* Hypoth&egrave;se : CSG &agrave; " + taux_CSG() + "%"
                                + ", CAPS &agrave; " + taux_CAPS() + "%"
                                + ", PS &agrave; " + taux_PS() + "%"
                                + ", CRDS &agrave; " + taux_RDS() + "%"
                                + ", CRSA &agrave; " + taux_RSA() + "%"
                                + ((HASPFL())?", PFL &agrave; " + taux_PFL() + "% " : "");

	e('label_BRUT').innerHTML = ((TYPE()==1)?"Montant du dividende global :":"Montant brut du dividende");

	e("line_SOCIAL").style.visibility = ((TYPE()==1 && SOCIAL())?"visible":"hidden");
	e("line_REINVESTIR").style.visibility = ((REINVESTIR())?"visible":"hidden");

	e("line_CSG").style.visibility = ((CSG())?"visible":"hidden");
	e("line_CAPS").style.visibility = ((CAPS())?"visible":"hidden");
	e("line_PS").style.visibility = ((PS())?"visible":"hidden");
	e("line_RDS").style.visibility = ((RDS())?"visible":"hidden");
	e("line_RSA").style.visibility = ((RSA())?"visible":"hidden");
	e("line_PFL").style.visibility = ((PFL())?"visible":"hidden");
	e("detail").style.visibility = ((TOTAL())?"visible":"hidden");

	var total     = (TYPE()==1)? BRUT() : (BRUT()-TOTAL()) ;

	var moitie    = ARRONDI(NBR()*0.605,2);
	if(FRANCAIS() && TYPE()==2) moitie = moitie - ARRONDI(TOTAL()/2,2);
	if(FRANCAIS()==false) moitie = moitie - ARRONDI(SOCIAL()/2,2);

	var inferieur = moitie  /  PROMO()  ;
	var actions   = Math.floor(inferieur);
	var soulte    = (inferieur - actions) * PROMO();
	soulte        = ARRONDI_INF(soulte,2); // arrondi a 2 chiffres, pour 5 chiffres mettre *100000/100000
	var global    = moitie + soulte;
	moitie = ARRONDI_INF(moitie,2);

	if(inferieur==0)
		{
		e("infos").innerHTML = "";
		return false;
		}
	

	e("info1").innerHTML = "<div class='remarque'>"
	+"<h2>Si vous choisissez le mode de r&eacute;mun&eacute;ration mixte (en num&eacute;raire et en actions) :</h2>"
	+"<ul>"
	+"<li><strong>Nombre d'actions et soulte = "+actions+" actions + "+soulte+" &euro;</strong>.</li>"
	+"<li><strong>Montant en num&eacute;raire = "+moitie+" &euro;</strong></li>"
	+"<li><strong>Dividende global actions et numéraire (<u>soulte éventuelle incluse</u>) : "+actions+" actions + "+ARRONDI_INF(global,2)+" &euro;</strong>.</li>"
	+"</ul>"
	+"</div>";


	if(FRANCAIS())
		{
		e("info2").innerHTML = "<div class='remarque'>"
		+"<h2>Si vous choisissez le mode de r&eacute;mun&eacute;ration intégralement en num&eacute;raire :</h2>"
		+"<ul>"
		+"<li>Vous ne profitez pas de l'offre d'option d'achat &agrave; tarif pr&eacute;f&eacute;rentiel</li>"
		+"<li>Vous recevrez un dividende d'un montant de <strong> "+moitie+" &euro; </strong> pour la partie en numéraire <br />"
		+"et de <strong> "+moitie+" &euro; </strong>  pour la partie optionnelle du dividende .</li>"
		+"</ul>"
		+"</div>";

		if(TYPE()==1)
			{
			e("info3").innerHTML = "<div class='remarque'>"
			+"<h2>Pr&eacute;l&eacute;vements sociaux :</h2>"
			+"Vous devrez vous acquitter des prélèvements sociaux au moment de la sortie de vos avoirs de votre compte PEA. Nous vous invitons à prendre contact avec votre établissement teneur de compte afin que vous soient expliquées les modalités."
			+"</div>";
			}
		else
			{
			e("info3").innerHTML = "<div class='remarque'>"
			+"<h2>Pr&eacute;l&eacute;vements sociaux :</h2>"
			+ ((SOCIAL()) ?
		 	"Des prélèvements sociaux s’élevant à un montant de <strong> "+ARRONDI(SOCIAL()/2,2)+" &euro; </strong>pour la partie en numéraire"
		 	+" et de <strong>"+ARRONDI(SOCIAL()/2,2)+" &euro;</strong> pour la partie optionnelle du dividende ont été déduits du montant de votre dividende net"
		 	+" ."
			:"")
			+"</div>";
			}
		}
	else
		{
		e("info2").innerHTML = "<div class='remarque'>"
		+"<h2>Si vous choisissez le mode de r&eacute;mun&eacute;ration intégralement en num&eacute;raire :</h2>"
		+"<ul>"
		+"<li>Vous ne profitez pas de l'offre d'option d'achat &agrave; tarif pr&eacute;f&eacute;rentiel</li>"
		+"<li>Vous recevrez un dividende <u>net</u> d'un montant de <strong> "+moitie+" &euro; </strong> pour la partie en numéraire "
		+"et de <strong> "+moitie+" &euro; </strong>  pour la partie optionnelle du dividende  "
		+ "après déduction de la taxe de retenue à la source que vous avez indiquée sous réserve de prélèvements supplémentaires de votre pays de résidence fiscale (Merci de vous renseigner auprès de votre établissement teneur de compte)."
		+"</li>"
		+"</ul>"
		+"</div>";

		e("info3").innerHTML = "<div>"
//		+"<h2>Pr&eacute;l&eacute;vements sociaux</h2>"
		+"</div>";
		}

	return false;
 	}

