
//Change le BG au survol
function changeBG(div){
div.style.background = "#979759";
}

//Remet le BG d'origine quand on sort de la div
function resetBG(div){
div.style.background = "#C5C483";
}

function nettoyage(champ) {
champ.value="";
}

function verifier_remplissage(formulaire)
	{
	if (formulaire.montant_emprunte.value == '')
	  {
	    alert('Veuillez preciser le montant emprunte, SVP.');
	    return(false);
	  }
	  var i;
	  var s;

	  for(var i = 0; i < formulaire.montant_emprunte.value.length; i++)
	  {
	    s = formulaire.montant_emprunte.value.charAt(i);
	    if( !((s >= 0) && (s <= 9)) && (s != ' ')  && (s != ',') && (s != '.'))
	    {
	      alert('Le montant emprunte ne peut comporter que des chiffres et une virgule');
	      return(false);
	    }
	  }
	if(formulaire.montant_emprunte.value >10000000 && formulaire.montant_emprunte.value <100)
	  {
	    alert('La valeur du montant emprunte doit etre compris entre 100 et 10000000. Veuillez corriger la valeur du montant emprunte, SVP.');
	    return(false);
	  }  

	  if(formulaire.taux_fixe.value == '')
	  {
	    alert('Veuillez preciser votre taux fixe, SVP.');
	    return(false);
	  }  
	  var i;
	  var s;

  for(var i = 0; i < formulaire.taux_fixe.value.length; i++)
  {
    s = formulaire.taux_fixe.value.charAt(i);
    if( !((s >= 0) && (s <= 9)) && (s != ',') && (s != '.'))
    {
      alert('Le taux fixe ne peut comporter que des chiffres et une virgule');
      return(false);
    }
  }
     if(formulaire.taux_fixe.value >99 && formulaire.taux_fixe.value <.1)
	  {
	    alert('La valeur du taux fixe (en %) est comprise entre 0.1 et 99. Veuillez corriger la valeur du taux fixe, SVP.');
	    return(false);
	  }
	  if(formulaire.duree_annee.value == '')
	  {
	    alert('Veuillez preciser la duree (en annee), SVP.');
	    return(false);
	  }  
	  var i;
	  var s;
	   for(var i = 0; i < formulaire.duree_annee.value.length; i++)
	  {
	    s = formulaire.duree_annee.value.charAt(i);
	    if( !((s >= 0) && (s <= 9)) )
	    {
	      alert('La duree en annee ne peut comporter que des chiffres');
	      return(false);
	    }
	  }
  
       if(formulaire.duree_annee.value >60 && formulaire.duree_annee.value <1)
		  {
		    alert('La valeur de la duree doit etre comprise entre 1 et 60. Veuillez corriger la valeur de la duree, SVP.');
		    return(false);
		  }  
	

	  if(formulaire.jour_debut.value == '' || formulaire.mois_debut.value == '' || formulaire.annee_debut.value == '')
	  {
	    alert('Veuillez la date de debut au format jj/mm/aaaa, SVP.');
	    return(false);
	  }  
	  
	  if(!formulaire.situation[0].checked && !formulaire.situation[1].checked)
	  {
	    alert('Veuillez preciser votre situation, SVP.');
	    return(false);
	  }  

return (true); 
}



function update_number(input)
{
  var temp;
 input.value=input.value.replace(',','.');
 input.value=(input.value.replace(/^\W+/,'')).replace(/\W+$/,'');
  if (input.value != null && input.value.length != 0)
    temp = "" + eval(input.value);
  else
    input.value = "0.00";
}

function binomial(a, n)
{
  var i;
  var sum, pow, term, cof;

  if(n < 0)
    return 1.0 / binomial(a, -n);

  sum = 1.0;
  pow = n;
  term = 1;
  cof = 1.0
  for(i = 1; i < 10; i++) {
    cof = cof * pow / i;
    pow = pow - 1.0;
    term = term * a;
    sum = sum + cof * term;
  }

  return sum;
}

function error(P, I, N, Y, M)
{
  var value;

  value = P - M * (1.0 - binomial(I / Y, -N)) / (I / Y);
  return value;
}

function compute_loan(form)
{
  var P, I, N, Y, M;

  if((form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.loan.value = "0.00";
  else {
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value*12);
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0.0)
      P = 0.0;
    else {
      P = M * (1.0 - binomial(I / Y, -N)) / (I / Y);
      P = P * 100;
      P = Math.round(P)
      P = P / 100;
    }
    form.loan.value = "" + (Math.round(P*100))/100;
  }
}

function compute_rate(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.rate.value = "0.00";
  else {
    P = eval(form.loan.value);
    N = eval(form.num.value*12);
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0) 
      I = 0.0;
    else {
      var low, high, mid, err_mid;
      var count;

      low  = 0.001;
      high = 10.0;

      count = 0;
      while(count < 30) {
        count = count + 1;
        mid = (high + low) / 2.0;
       err_mid = error(P, mid, N, Y, M);
        if(err_mid == 0.0)
          break;
        if(err_mid < 0.0) {
          low = mid;
          continue;
        }
        if(0.0 < err_mid) {
          high = mid;
          continue;
        }
      }
      mid = mid * 1000;
      mid = Math.round(mid);
      mid = mid / 1000;
      I = mid * 100.0;
    }

    form.rate.value = "" + (Math.round(I*100))/100;
  }
}

function compute_num(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.num.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0) 
      I = 0.0;
    else {
      var low, high, mid, err_mid;
      var count;

      low  = 0;
      high = 1024;

      count = 0;
      while(count < 10) {
        count = count + 1;
        mid = (high + low) / 2.0;
        err_mid = error(P, I, mid, Y, M);
        if(err_mid == 0.0)
          break;
        if(0.0 < err_mid) {
          low = mid;
          continue;
        }
        if(err_mid < 0.0) {
          high = mid;
          continue;
        }
      }
      N = mid;
    }

    form.num.value = "" + Math.round(N/12);
  }
}

function compute_numann(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.amount.value.length == 0))
    form.num_annum.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value*12);
    M = eval(form.amount.value);

    var low, high, mid, err_mid;
    var count;

    low  = 0;
    high = 1024;


    count = 0;
    while(count < 10) {
      count = count + 1;
      mid = (high + low) / 2.0;
      err_mid = error(P, I, N, mid, M);
      if(err_mid == 0.0)   break;
      if(0.0 < err_mid) {
        low = mid;
        continue;
      }
      if(err_mid < 0.0) {
        high = mid;
        continue;
      }
    }
    Y = mid;

    form.num_annum.value = "" + Y;
  }
}

function compute_amount(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0))
    form.amount.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value*12);
    Y = eval(form.num_annum.value);

    if(Y == 0.0)
      M = 0.0;
    else {
      M = P * I / Y / (1.0 - binomial(I / Y, -N));
      M = M * 100;
      M = Math.round(M);
      M = M / 100;
    }       

    form.amount.value = "" + (Math.round(M*100))/100;
  }
}

