/* $Id: metier.js,v 1.3 2003/06/10 12:45:12 jcoste Exp $ */

EU = 6.55957;
FR = 1/EU;

// change les virgule en point et garde les zero
function toNbKeepZero(val) {
  return Number(String(val).replace(/,/gi,'.').replace(/-/gi,''));
}

// change les virgule en point et met '' à la place de 0
function toNb(val) {
  return toNbKeepZero(val) || '';
}

function toFix(val) {
  var res = String(Math.round(val*100)/100).replace(/\./gi,',');
  if (res.charAt(res.length-1)==',') res+='00';
  else if (res.charAt(res.length-2)==',') res+='0';
  return res;
}

/*
function toTaux(val) {
  if (val=='')
    return '';
  res = Number(String(val).replace(/,/gi,'.').replace(/-/gi,''))
  if ((res != 0) && !res)
    return '';
  if (res == 0)
    return '0';
  return toFix(res);
}
*/

function ccMs(mt,d,tx) {

  mt = Number(mt);
  d  =  Number(d);
  tx = Number(tx);

  if (tx == 0){
      return mt/d;
  }else if ( mt && d && tx ) {
    var txEch = tx/1200;
    var tmp = Math.pow(1+txEch,d);
    return mt*txEch*tmp/(tmp-1);
  } else
    return NaN;
}

function ccMt(ms,d,tx) {
  if ((mt=Number(ms)) && (d=Number(d)) && (tx=Number(tx))) {
    var txEch = tx/1200;
    return ms*(1-Math.pow(1+txEch,-d))/txEch;
  }
  else
    return NaN;
}

function ccD(mt,ms,tx) {
  if ((mt=Number(mt)) && (d=Number(ms)) && (tx=Number(tx))) {
    var dm=Math.floor(mt/ms);
    var dM=1200;
    while (dm<dM-1) {
      var d=Math.round((Number(dM)+Number(dm))/2);
      var msD=ccMs(mt,d,tx);
      if (msD<=ms)
        dM=d;
      else
        dm=d;
    }
    var m=ccMs(mt,dm,tx);
    if (m<0.5+Number(ms))
      return(dm)
    else
      return dM;
  }
  else
    return NaN;
}
