var fieldstyle = '';

if(window.RegExp){
  var regexNum = /^[0-9]+$/;
  var regexMoney = /^((([0-9]+)?([\.\,])?)|([0-9]+))[0-9]+$/;
}

function validateField(field, regex){
  return regex.test(document.getElementById(field).value);
}

function errorField(field) {  
  fieldstyle = document.getElementById(field).className;
  document.getElementById(field).className = fieldstyle + ' field-err';
  document.getElementById('msg-err').className = 'msg-err';
}
function okField(field){
  document.getElementById(field).className = '';
}

// Fonction checkprofil: Vérifie les champs nom, courriel et comments
function validate(f) {
  var fn = f.name;
  var ofn = document.forms[fn];
	var erreur = false;
  var nb_err = 0;
  
  var title_err = '';  
  
  var price = document.getElementById('price').value;
  price = price.replace(/ /,'');
  price = price.replace(/,/g,'.');
  if(price.charAt(price.length - 1) == '.')
    price = price.substring(0, price.length - 1);
  document.getElementById('price').value = price;
  
  var tradein = document.getElementById('tradein').value;
  tradein = tradein.replace(/ /,'');
  tradein = tradein.replace(/,/g,'.');
  if(tradein.charAt(tradein.length - 1) == '.')
    tradein = tradein.substring(0, tradein.length - 1);
  document.getElementById('tradein').value = tradein;
  
  var cashdown = document.getElementById('cashdown').value;
  cashdown = cashdown.replace(/ /,'');
  cashdown = cashdown.replace(/,/g,'.');
  if(cashdown.charAt(cashdown.length - 1) == '.')
    cashdown = cashdown.substring(0, cashdown.length - 1);
  document.getElementById('cashdown').value = cashdown;
  
  var rate = document.getElementById('rate').value;
  rate = rate.replace(/ /,'');
  rate = rate.replace(/,/g,'.');
  if(rate.charAt(rate.length - 1) == '.')
    rate = rate.substring(0, rate.length - 1);
  document.getElementById('rate').value = rate;
  
  if(!validateField('price', regexMoney)){
    errorField('price');
    erreur = true;
    nb_err++;
  }
  else{
    okField('price');
  }
  
  if (!validateField('months', regexNum)){
    errorField('months');
    erreur = true;
    nb_err++;
  }
  else{
    okField('months');
  }
  
  if (!validateField('rate', regexMoney)){
    errorField('rate');
    erreur = true;
    nb_err++;
  }
  else{
    okField('rate');
  }

  if(erreur == true){
    document.getElementById("payments").innerHTML = '--';
		return false;
  }
  else{
    calc();
  }
}

function calc(){
  var v = document.getElementById('price').value;
  var tradein = parseFloat(document.getElementById('tradein').value,10);
  var cashdown = parseFloat(document.getElementById('cashdown').value,10);
  var financemonths = parseFloat(document.getElementById('months').value,10);
  var rate = parseFloat(document.getElementById('rate').value,10);
  var adjrate = 0;
  var fincalc = 0;
  
  if(isNaN(tradein)){
    tradein = 0;
  }
  if(isNaN(cashdown)){
    cashdown = 0;
  }
  
  if(financemonths < 1){
    financemonths = 1;
    document.getElementById('months').value = financemonths;
  }
  
  if(rate > 0)
    adjrate = rate / 1200;
  
  fincalc = Math.pow(1 + adjrate,financemonths);
  
  v = v - (tradein + cashdown);
  
  if(adjrate > 0)
    v = v * adjrate * fincalc / (fincalc - 1);
  else
    v = v / financemonths;
  
  paymentvalue = ((Math.round(v * 100,0)) / 100).toFixed(2);
  document.getElementById("payments").innerHTML = paymentvalue;
}