/*==================================================================================
  mmd_simul401.js 28/04/1999
  par Serge Juillerat
  Fonctions specifiques a la simuation epargne
  Modifier par CGI juillet 2002 BCV
  Modifier par CGI novembre 2002 BCV
  ---------------------------------------------------------------
===================================================================================*/

/*===================================================================================*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Show the details in the result frame
//
function Details_epargne_capital()
{
  details_calcul_final = '<html> \n' + '<title>R&eacute;sultat du calcul d\'&eacute;pargne de la BCV</title> \n' +
                         '<link rel="stylesheet" href="http://www.bcv.ch/static/style/site/bcv.css" type="text/css"> \n'+
                         '<body bgcolor="#FFFFFF"> \n'+
                         '<img src="http://www.bcv.ch/static/images/commun/bcv_logo.gif" width="181" height="79"> \n'+
                         '<p><b>R&eacute;sultat</b></p> \n' +
                         '<p> \n' + 
                         '<table border="0" width="400"> \n' +
                         '<th width="40"></th> \n' +
                         '<th width="15"></th> \n' +
                         '<th width="305"></th> \n' +
                         '<th width="40"></th> \n' +
                         '<tr> \n' +
                         '<td>&nbsp;</td> \n' +
                         '<td colspan="2" class="text"> \n' +
                         'Des questions? Besoin de pr&eacute;cisions? Un conseiller BCV ' +
                         'se tient volontiers &agrave; votre disposition pour envisager des solutions en fonction de votre situation propre.' +
                         '</td> \n' +
                         '<td></td> \n' +
                         '</tr> \n' +
                         '<tr> \n' +
                         '<td>&nbsp;</td> \n' +
                         '<td colspan="2"> \n' +
                         '<b>R&eacute;sultat d&eacute;taill&eacute; du calcul</b> \n' +
                         '</td> \n' +
                         '<td></td> \n' +
                         '</tr> \n' +
                         '<tr> \n' +
                         '<td colspan="2">&nbsp;</td> \n' +
                         '<td> \n' +
                         '<table border="0" width="305"> \n' +
                         '<th width="240"></th> \n' +
                         '<th width="65"></th> \n' +
                         ' \n' +
                         details_calcul +
                         ' \n ' +
                         '</table> \n' +
                         '</td> \n' +
                         '<td></td> \n' +
                         '</table> \n' +
                         '<table width="98%" border=0> \n <tr> \n <td ALIGN=RIGHT> \n' +
                         '<A HREF="javascript:window.close();"> \n' +
                         'Fermer</a> \n </td> \n </tr> \n' +
                         '</table> \n' + 
                         '</body> \n' +
                         '</html> \n';
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Function that calculate the result depending on the user's data fields
//
function Epargne_capital(formID,type_calcul)
{
  errfound = false;
  // Check the fields that exists depending on the user's calculation choice
 if (document.getElementById("choisi1").checked==true)
  {
    if (!ValidLength(formID.ANS.value,0))
    {
      error(formID.ANS, "Indiquez un nombre d annee");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.MOIS.value,0))
    {
      formID.MOIS.value = 0;
    }
    if (!ValidMonth(formID.MOIS,12))
    {
      error(formID.MOIS, "Le nombre de mois ne peut exceder 12");
      printable = 1;
      return;
    }
    
    if (!ValidLength(formID.MONTANT.value,0))
    {
      error(formID.MONTANT, "Indiquez un montant");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.TAUX.value,0))
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }
    if (formID.TAUX.value == 0)
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }    
    if (!ValidLength(formID.SOLDE.value,0))
    {
      error(formID.SOLDE, "Aucun solde initial, valeur par defaut 0");
      formID.SOLDE.value = 0;
    }
  }
if (document.getElementById("choisi2").checked==true)
  {
    if (!ValidLength(formID.BUT.value,0))
    {
      error(formID.BUT, "Indiquez un capital");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.MONTANT.value,0))
    {
      error(formID.MONTANT, "Indiquez un montant");
      printable = 1;
      return;
    }
    if (parseInt(formID.SOLDE.value) > parseInt(formID.BUT.value))
    {
      error(formID.SOLDE, "Votre compte dispose de la somme voulue!");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.TAUX.value,0))
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }
    if (formID.TAUX.value == 0)
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }   
    if (!ValidLength(formID.SOLDE.value,0))
    {
      error(formID.SOLDE, "Aucun solde initial, valeur par defaut 0");
      formID.SOLDE.value = 0;
    }
  }
if (document.getElementById("choisi3").checked==true)
  {
    if (!ValidLength(formID.ANS.value,0))
    {
      error(formID.ANS, "Indiquez un nombre d annee");
      printable = 1;
      return;
    }

    if (!ValidLength(formID.MOIS.value,0))
    {
      formID.MOIS.value = 0;
    }
    if (!ValidMonth(formID.MOIS,12))
    {
      error(formID.MOIS, "Le nombre de mois ne peut exceder 12");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.BUT.value,0))
    {
      error(formID.BUT, "Indiquez un capital");
      printable = 1;
      return;
    }
    if (parseInt(formID.SOLDE.value) > parseInt(formID.BUT.value))
    {
      error(formID.SOLDE, "Votre compte contient la somme voulue!");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.TAUX.value,0))
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }
if (document.getElementById("choisi1").checked==true)
    {
      error(formID.TAUX, "Indiquez un taux");
      printable = 1;
      return;
    }
    if (!ValidLength(formID.SOLDE.value,0))
    {
      error(formID.SOLDE, "Aucun solde initial, valeur par defaut 0");
      formID.SOLDE.value = 0;
    }
  }

  var Taux_Mensuel=Math.pow((parseFloat(formID.TAUX.value)/100)+1,1/12) -1;

  // Calculation of the number of month to spend
  if ((type_calcul == 0)||(type_calcul == 2))
    var Nb_mois = ((12*parseInt(formID.ANS.value))+parseInt(formID.MOIS.value));


    var indexS = formID.VERSEMENT.options.selectedIndex;
    var valeur = formID.VERSEMENT.options[indexS].text;
 

/*  if (is.nav4up) { 
    var indexS = document.Capital.document.dataformC.VERSEMENT.options.selectedIndex;
    var valeur = document.Capital.document.dataformC.VERSEMENT.options[indexS].text;
  }
  else if (is.ie4up) {
    var indexS = document.dataformC.VERSEMENT.options.selectedIndex;
    var valeur = document.dataformC.VERSEMENT.options[indexS].text;
  }*/


  var periodicite = 0;

  if (valeur == "Mensuel") periodicite = 12;
  if (valeur == "Bimestriel") periodicite = 6;
  if (valeur == "Trimestriel") periodicite = 4;
  if (valeur == "Semestriel") periodicite = 2;
  if (valeur == "Annuel") periodicite = 1;
  
  var Somme_Versement = 0;
  var DejaEpargne = parseFloat(formID.SOLDE.value); 
  var Total = 0;

  printable = 0;

  Nb_mois = parseInt(Nb_mois);

  // Depending on the user's entering choice, the calculation and the result is different
if (document.getElementById("choisi1").checked==true)
  {
    var coul = 0;
    var cellbg = "";
    details_calcul = "";
    for (i=0; i<Nb_mois ; i++)
    {      
      DejaEpargne += DejaEpargne * Taux_Mensuel;

      if (periodicite == 12)
        Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
      else if (periodicite == 6)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 4)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 2)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 1)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
             
      Total = Somme_Versement + DejaEpargne;

      if (coul == 0)
      {  
        cellbg = "#63C974";
        coul = 1;
      } else
      {
        cellbg = "#BEECA5";
        coul = 0;
      }      
      
      details_calcul += "<tr>" +
                  "<td bgcolor=" + cellbg + ">Apr&egrave;s le paiement No : " + i +
                  ", votre solde sera de: </td>" + 
                  "<td bgcolor=" + cellbg + " align='right'>" +
                  Format(parseInt(Total)) + ".-" + "</td>" +
                  "</tr>\n";
    }

    if (valeur == "Bimestriel") Nb_mois /= 2;
    if (valeur == "Trimestriel") Nb_mois /= 3;
    if (valeur == "Semestriel") Nb_mois /= 6;
    if (valeur == "Annuel") Nb_mois /= 12;

    var total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.MONTANT.value * Nb_mois));
    var total_interet = parseFloat(Total - total_versement);  

    resultat_calcul = "Si vous versez " + periodicite + " fois par ann&eacute;e pendant " + formID.ANS.value +
                      " ans et " + formID.MOIS.value + " mois la somme de " + Format(formID.MONTANT.value) +
                      ".- sur votre plan d'&eacute;pargne en fonds, initialement aliment&eacute; par un apport de " +
                      Format(formID.SOLDE.value) + ".- et en supposant un rendement de " +
                      formID.TAUX.value + "%, vous obtiendrez un capital de <p align='center'><br /><b>" +
                      Format(parseInt(Total)) +
                      ".-</b><br /><br /></p>Y compris l'apport initial, vous aurez vers&eacute; " + Format(parseInt(total_versement)) +
                      ".- qui vous auront rapport&eacute; "+ Format(parseInt(total_interet)) + ".-.<br /><br />";
  }
if (document.getElementById("choisi2").checked==true)
  {
    var increment = 0;
    var coul = 0;
    var cellbg = "";
    details_calcul = "";
    
    while (true)
    {
      if ((Total <= (parseFloat(formID.BUT.value) + parseFloat(formID.MONTANT.value)))&&(Total >= parseFloat(formID.BUT.value) - parseFloat(formID.MONTANT.value)))
      {
        break
      }

      increment ++;

      DejaEpargne += DejaEpargne * Taux_Mensuel;
  
      if (periodicite == 12)
      {
        Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
      }
      else if (periodicite == 6)
      {
        if (rest(increment,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 4)
      {
        if (rest(increment,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 2)
      {
        if (rest(increment,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 1)
      {
        if (rest(increment,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(formID.MONTANT.value)) * Taux_Mensuel + parseFloat(formID.MONTANT.value);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }

      Total = Somme_Versement + DejaEpargne;

      if (coul == 0)
      {  
        cellbg = "#63C974"
        coul = 1;
      } else
      {
        cellbg = "#BEECA5"
        coul = 0;
      }      

      details_calcul += "<tr>" +
                  "<td bgcolor=" + cellbg + ">Apr&egrave;s le paiement No : " + increment +
                  ", votre solde sera de: </td>" + 
                  "<td bgcolor=" + cellbg + " align='right'>" + Format(parseInt(Total)) + ".-" + "</font></td>" +
                  "</tr>\n";
    }
        
    if (valeur == "Bimestriel")
    {
      total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.SOLDE.value * increment/2));
    }
    else if (valeur == "Trimestriel")
    {
      total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.MONTANT.value * increment/3));
    }
    else if (valeur == "Semestriel")
    {
      total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.MONTANT.value * increment/6));
    }
    else if (valeur == "Annuel")
    {
      total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.MONTANT.value * increment/12));
    }
    else
    {
      total_versement = parseFloat(formID.SOLDE.value) + parseFloat((formID.MONTANT.value * increment));
    }

    var total_interet = parseFloat(Total - total_versement);  

    var ans = 0;
    var mois = 0;

    if (increment < 12)
    {
      ans = 0;
      mois = increment;
    }
    else
    {
      while (true)
      {
        ans += 1;
        increment -= 12;

        if (increment < 12)
        {
          mois = increment;
          break
        }
      }
    }

    resultat_calcul = "Si vous voulez disposer d&#8217;un capital de " + Format(formID.BUT.value) +
                      ".- &agrave; l&#8217;&eacute;ch&eacute;ance, en versant " + periodicite + " fois par ann&eacute;e la somme de " +
                      Format(formID.MONTANT.value) + ".- sur votre plan d'&eacute;pargne en fonds, initialement aliment&eacute; par un apport de " +
                      Format(formID.SOLDE.value) + ".- et en supposant un rendement de " +
                      formID.TAUX.value + "%, vous atteindrez votre objectif d&#8217;&eacute;pargne dans " +
                      " <p align='center'><br /><b>";
    if ((ans < 1)&&(mois > 0))
      resultat_calcul += parseInt(mois) + " mois.";
    else if (ans == 1)
    {
      if (mois > 0)
        resultat_calcul += parseInt(ans) + " an et " + parseInt(mois) + " mois.";
      else
        resultat_calcul += parseInt(ans) + " an. ";
    }
    else
    {
      if (mois > 0)
        resultat_calcul += parseInt(ans) + " ans et " + mois + " mois.";
      else
        resultat_calcul += parseInt(ans) + " ans. ";
    }

    resultat_calcul += "</b><br /><br /></p>Y compris l'apport initial, vous aurez vers&eacute; " + Format(parseInt(total_versement)) +
                           ".- qui vous auront rapport&eacute; "+ Format(parseInt(total_interet)) + ".-.<br /><br />";
  }      
if (document.getElementById("choisi3").checked==true)
  {
    if (valeur == "Bimestriel")
    {
      Numerateur = (parseFloat(formID.BUT.value)-(DejaEpargne*(Math.pow(1+Taux_Mensuel,Nb_mois/2))));
      Denominateur = ((Math.pow(1+Taux_Mensuel,(Nb_mois/2)+1)-(1+Taux_Mensuel)) * (1/Taux_Mensuel));
    }
    else if (valeur == "Trimestriel")
    {
      Numerateur = (parseFloat(formID.BUT.value)-(DejaEpargne*(Math.pow(1+Taux_Mensuel,Nb_mois/3))));
      Denominateur = ((Math.pow(1+Taux_Mensuel,(Nb_mois/3)+1)-(1+Taux_Mensuel)) * (1/Taux_Mensuel));
    }
    else if (valeur == "Semestriel")
    {
      Numerateur = (parseFloat(formID.BUT.value)-(DejaEpargne*(Math.pow(1+Taux_Mensuel,Nb_mois/6))));
      Denominateur = ((Math.pow(1+Taux_Mensuel,(Nb_mois/6)+1)-(1+Taux_Mensuel)) * (1/Taux_Mensuel));
    }
    else if (valeur == "Annuel")
    {
      Numerateur = (parseFloat(formID.BUT.value)-(DejaEpargne*(Math.pow(1+Taux_Mensuel,Nb_mois/12))));
      Denominateur = ((Math.pow(1+Taux_Mensuel,(Nb_mois/12)+1)-(1+Taux_Mensuel)) * (1/Taux_Mensuel));
    }
    else
    {
      Numerateur = (parseFloat(formID.BUT.value)-(DejaEpargne*(Math.pow(1+Taux_Mensuel,Nb_mois))));
      Denominateur = ((Math.pow(1+Taux_Mensuel,(Nb_mois)+1)-(1+Taux_Mensuel)) * (1/Taux_Mensuel));
    }

    Versement = parseFloat(Numerateur / Denominateur);

    var coul = 0;
    var cellbg = "";
    details_calcul = "";
    for (i=1; i<=Nb_mois ; i++)
    {
      DejaEpargne += DejaEpargne * Taux_Mensuel;

      if (periodicite == 12)
        Somme_Versement += (Somme_Versement + parseFloat(Versement)) * Taux_Mensuel + parseFloat(Versement);
      else if (periodicite == 6)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(Versement)) * Taux_Mensuel + parseFloat(Versement);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 4)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(Versement)) * Taux_Mensuel + parseFloat(Versement);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 2)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(Versement)) * Taux_Mensuel + parseFloat(Versement);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }
      else if (periodicite == 1)
      {
        if (rest(i,12/periodicite))
        {
          Somme_Versement += (Somme_Versement + parseFloat(Versement)) * Taux_Mensuel + parseFloat(Versement);
        }
        else 
          Somme_Versement += Somme_Versement * Taux_Mensuel;
      }

      Total = Somme_Versement + DejaEpargne;

      if (coul == 0)
      {  
        cellbg = "#63C974";
        coul = 1;
      } else
      {
        cellbg = "#BEECA5";
        coul = 0;
      }      
      details_calcul += "<tr>" +
                  "<td bgcolor=" + cellbg + ">Apr&egrave;s le paiement No : " + i +
                  ", votre solde sera de: </td>" + 
                  "<td bgcolor=" + cellbg + " align='right'>" + Format(parseInt(Total)) + ".-" + "</font></td>" +
                  "</tr>\n";
    }

    if (valeur == "Bimestriel") Nb_mois /= 2;
    if (valeur == "Trimestriel") Nb_mois /= 3;
    if (valeur == "Semestriel") Nb_mois /= 6;
    if (valeur == "Annuel") Nb_mois /= 12;

    var total_versement = parseFloat(formID.SOLDE.value) + parseFloat((Versement * Nb_mois));
    var total_interet = parseFloat(Total - total_versement);  

    resultat_calcul = "Si vous voulez disposer d&#8217;un capital de " + Format(formID.BUT.value) +
                      ".- dans " + formID.ANS.value + " ans et " + formID.MOIS.value +
                      " mois, en effectuant " + periodicite + 
                      " versements par ann&eacute;e sur votre plan d'&eacute;pargne en fonds, initialement aliment&eacute; par un apport de " +
                      Format(formID.SOLDE.value) + ".- et en supposant un rendement de " +
                      formID.TAUX.value + "%, vous devrez verser une somme de <p align='center'><br /><b>" + Format(parseInt(Versement)) +
                      ".-</b><br /><br /></p>Y compris l'apport initial, vous aurez vers&eacute; " + Format(parseInt(total_versement)) +
                      ".- qui vous auront rapport&eacute; "+ Format(parseInt(total_interet)) + ".-.<br /><br />";
  }
}

