function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ' ' + '$2');
	}
	return x1 + x2;
}
function calc()
{
  if(calcTimeout!=undefined)
    window.clearTimeout(calcTimeout);
  calcTimeout = window.setTimeout('docalc()', 1000);
}
function docalc()
{
  var montant, duree, taux, taux2, mensualite, diviseur;
  // (1) calcul des mensualités
  if($('montant1').value && $('duree1').value && $('taux1').value)
  {
    // récupération du montant
    montant = parseInt($('montant1').value.replace(/ /gi,''));
    if(isNaN(montant))
      montant = 0;
      
    montant = Math.min(Math.max(0, montant), 10000000);
    $('montant1').value = addCommas(montant);
    
    // récupération de la durée
    duree = parseInt($('duree1').value);
    if(isNaN(duree))
      duree = 0;
      
    duree = Math.min(Math.max(1, duree), 30);
    $('duree1').value = duree;
    
    // récupération du taux
    taux = parseFloat($('taux1').value.replace(/,/gi, '.'));
    if(isNaN(taux))
      taux = 0;
      
    taux = Math.min(Math.max(0, taux), 10);
    taux = Math.round(taux*100)/100;
    $('taux1').value = taux.toFixed(2).replace(/\./gi, ',').replace(/\,00/gi, '');
    // calcul effectif
    taux2 = 1+taux/100;
    if(taux2!=0)
      diviseur = 1-Math.pow(taux2, -duree);
    else
      diviseur = 0;
    if(diviseur!=0)
      mensualite = Math.ceil(montant*(Math.pow(taux2, 1/12)-1)/diviseur);
    else
      mensualite = Math.ceil(montant/(duree*12));
    if(isNaN(mensualite))
      $('mensualite1').value = '';
    else
      $('mensualite1').value = addCommas(mensualite);
  }
  else
    $('mensualite1').value = '';
  // (2) calcul de la durée
  if($('montant2').value && $('mensualite2').value && $('taux2').value)
  {
    // récupération du montant
    montant = parseInt($('montant2').value.replace(/ /gi,''));
    if(isNaN(montant))
      montant = 0;
    montant = Math.min(Math.max(0, montant), 10000000);
    $('montant2').value = addCommas(montant);
    // récupération des mensualités
    mensualite = parseInt($('mensualite2').value.replace(/ /gi,''));
    if(isNaN(mensualite))
      mensualite = 0;
    mensualite = Math.min(Math.max(0, mensualite), 1000000);
    $('mensualite2').value = addCommas(mensualite);
    // récupération du taux
    taux = parseFloat($('taux2').value.replace(/,/gi, '.'));
    if(isNaN(taux))
      taux = 0;
    taux = Math.min(Math.max(0, taux), 10);
    taux = Math.round(taux*100)/100;
    $('taux2').value = taux.toFixed(2).replace(/\./gi, ',').replace(/\,00/gi, '');
    // calcul effectif
    taux2 = 1+taux/100;
    duree = 1-((montant/mensualite)*(Math.pow(taux2, 1/12)-1));
    duree = Math.ceil(-12*Math.log(duree)/Math.log(taux2));
    var ans = Math.floor(duree/12);
    if(mensualite>=montant)
      $('duree2').value = 'Immédiat';
    else if(isNaN(duree) || (duree>30*12))
      $('duree2').value = 'Plus de 30 ans';
    else
      if(ans>0)
        $('duree2').value = ans + ' ans et ' + (duree-ans*12) + ' mois';
      else
        $('duree2').value = duree + ' mois';
  }
  else
    $('duree2').value = '';
  // (3) calcul de la capacité d'emprunt
  if($('mensualite3').value && $('duree3').value && $('taux3').value)
  {
    // récupération du revenu mensuel
    mensualite = parseInt($('mensualite3').value.replace(/ /gi,''));
    if(isNaN(mensualite))
      mensualite = 0;
    mensualite = Math.min(Math.max(1000, mensualite), 1000000);
    $('mensualite3').value = addCommas(mensualite);
    // mensualités maximales
    mensualite = mensualite*0.33;
    // récupération de la durée (en années)
    duree = parseInt($('duree3').value);
    if(isNaN(duree))
      duree = 0;
    duree = Math.min(Math.max(1, duree), 30);
    $('duree3').value = duree;
    // récupération du taux
    taux = parseFloat($('taux3').value.replace(/,/gi, '.'));
    if(isNaN(taux))
      taux = 0;
    taux = Math.min(Math.max(0, taux), 10);
    taux = Math.round(taux*100)/100;
    $('taux3').value = taux.toFixed(2).replace(/\./gi, ',').replace(/\,00/gi, '');
    // calcul effectif
    taux2 = 1+taux/100;
    if(taux!=0)
      montant = Math.floor(mensualite*(1-Math.pow(taux2, -duree))/(Math.pow(taux2, 1/12)-1));
    else
      montant = Math.floor(mensualite*duree*12);
    if(isNaN(montant))
      $('montant3').value = '';
    else
      $('montant3').value = addCommas(montant);
  }
  else
    $('montant3').value = '';
}
calcTimeout = undefined;
Event.observe(window, 'load', docalc);
