var fieldstyle = '';

/*if(!document.getElementById){
  if(document.all){
    document.getElementById=function(){
if(typeof document.all[arguments[0]]!="undefined"){return document.all[arguments[0]]}else{return null}
    }
  }else if(document.layers){
    document.getElementById=function(){
if(typeof document[arguments[0]]!="undefined"){return document[arguments[0]]}else{return null}
    }
  }
}*/

if(window.RegExp){
  var regexAlpha = /^[A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\'\.]+$/;
  var regexNum = /^[0-9]+$/;
  var regexAlphaNum = /^[0-9A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\'\.]+$/;
  //var regexVille = /^[A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\.]+$/;
  var regexAddress = /^[0-9]+(\,)? [0-9A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\.\']+$/;
  var regexPC = /^[A-Za-z][0-9][A-Za-z]( )?[0-9][A-Za-z][0-9]$/;
  var regexPhone = /^[0-9]{10}$/;
  var regexEmailNo = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
  var regexEmailYes = /^.+\@(\[?)[A-Za-z0-9\-\.]+\.([A-Za-z]{2,4}|[0-9]{1,3})(\]?)$/;
  var regexVIN = /^[0-9A-Za-z]{17}$/;
  var regexYear = /^[1-2][0-9]{3}$/;
  var regexKM = /^[0-9 \,\.]+$/;
  var regexDate = /^[0-9]{4}\/((0[1-9])|(1[0-2]))\/((0[1-9])|((1|2)[0-9])|(3(0|1)))$/;
  /*var regexHour = /^(((0|1)[0-9])|(2[0-3]))$/;*/
  var regexMoney = /^((([0-9]+)?([\.\,])?)|([0-9]+))[0-9]+$/;
  
  var regexNotEmpty = /^.+$/;
  var regexOnlySpace = /^ +$/;
}

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

function errorField(field) {  
  if (document.layers) {
    fieldstyle = document.layers[field].className;
    document.layers[field].className = fieldstyle + ' field-err';
  }
  /*else if (document.all) {
    fieldstyle = document.all[field].className;
    document.all[field].className = fieldstyle + ' field-err';
  }*/
  else if(document.getElementById){
    fieldstyle = document.getElementById(field).className;
    document.getElementById(field).className = fieldstyle + ' field-err';
  }
}
function okField(field){
  if (document.layers) {
    classname = document.layers[field].className;
    if (classname.search('long') != '-1')
      document.layers[field].className = 'long';
    else if (classname.search('short') != '-1')
      document.layers[field].className = 'short';
    else
      document.layers[field].className = '';
  }
  /*else if (document.all) {
    classname = document.all[field].className;
    if (classname.search('long') != '-1')
      document.all[field].className = 'long';
    else if (classname.search('short') != '-1')
      document.all[field].className = 'short';
    else
      document.all[field].className = '';
  }*/
  else if(document.getElementById){
    classname = document.getElementById(field).className;
    if (classname.search('long') != '-1')
      classname = document.getElementById(field).className = 'long';
    else if (classname.search('short') != '-1')
      classname = document.getElementById(field).className = 'short';
    else
      classname = 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 msgerreur = "<ul>";
  
  
  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');
    msgerreur += "<li><a href=\"#a-price\">'Vehicle price' : Please write the vehicle's price</a></li>";
    erreur = true;
    nb_err++;
  }
  else
    okField('price');
  
  if(document.getElementById('tradein').value != ''){
    if (!validateField('tradein', regexMoney)){
      errorField('tradein');
      msgerreur += "<li><a href=\"#a-tradein\">'Trade-in value' : Please write a valid amount</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('tradein');
  }
  
  if(document.getElementById('cashdown').value != ''){
    if (!validateField('cashdown', regexMoney)){
      errorField('cashdown');
      msgerreur += "<li><a href=\"#a-cashdown\">'Cash down' : Please write a valid amount</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('cashdown');
  }
  
  if (!validateField('months', regexNum)){
    errorField('months');
    msgerreur += "<li><a href=\"#a-months\">'Term (months)' : Please write a valid quantity of months</a></li>";
    erreur = true;
    nb_err++;
  }
  else
    okField('months');
  
  if (!validateField('rate', regexMoney)){
    errorField('rate');
    msgerreur += "<li><a href=\"#a-rate\">'Interest rate' : Please write a valid number</a></li>";
    erreur = true;
    nb_err++;
  }
  else
    okField('rate');
    
  
  msgerreur += "</ul>";
  
  if (nb_err > 1)
    title_err = "The following fields require your attention:";
  else
    title_err = "The following field requires your attention:";

  if(erreur == true) {
		if (document.layers) {
      document.layers.error.document.write(title_err + msgerreur);
      document.layers.error.document.close();
      document.layers['err-msg'].className = 'visible';
    }
    else if (document.all) {
      error.innerHTML = title_err + msgerreur;
      document.all['err-msg'].className = 'visible';
    }
    else if(document.getElementById){
      document.getElementById("err-msg").innerHTML = title_err + msgerreur;
      document.getElementById('err-msg').className = 'visible';
    }
    else
      alert(msgerreur);
		return false;
  }
  else {
    if (document.layers)
      document.layers['err-msg'].className = 'hidden';
    else if (document.all)
      document.all['err-msg'].className = 'hidden';
    else if(document.getElementById)
      document.getElementById('err-msg').className = 'hidden';
    
    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(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);
  
  if (document.layers) {
    document.layers.payments.document.write(paymentvalue);
    document.layers.payments.document.close();
    //document.layers['err-msg'].className = 'visible';
  }
  else if (document.all) {
    payments.innerHTML = paymentvalue;
    //document.all['err-msg'].className = 'visible';
  }
  else if(document.getElementById){
    document.getElementById("payments").innerHTML = paymentvalue;
    //document.getElementById('err-msg').className = 'visible';
  }
  //document.getElementById('payments') = new String(paymentvalue);
}
