var vCaptcha = false;
var formSubmit = true; // variable pour empecher les clicks abusifs sous IE

var fieldstyle = '';

if(window.RegExp){
  var regexAlpha = /^[A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\'\.]+$/;
  var regexNum = /^[0-9]+$/;
  var regexAlphaNum = /^[0-9A-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 regexMoney = /^[0-9\.\,]+$/;
  var regexLicence = /^[A-Za-z][0-9]{4}-[0-9]{6}-[0-9]{2}$/;
  var regexPlate = /^[A-Za-z0-9 -]{4,8}$/;
  
  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.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.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;
  
  if(!formSubmit) return false;
  formSubmit = false;
  
  if(document.getElementById('first_name').value == '' && document.getElementById('last_name').value == ''){  
    var title_err = '';
  	var msgerreur = "<ul>";
    
    if(!validateField('make', regexAlpha)){
      errorField('make');
      msgerreur += "<li><a href=\"#a-make\">'Make' : Please write the vehicle's make</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('make');
    
    if(!validateField('model', regexAlphaNum)){
      errorField('model');
      msgerreur += "<li><a href=\"#a-model\">'Model' : Please write the vehicle's model</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('model');
    
    if(!validateField('year', regexYear)){
      errorField('year');
      msgerreur += "<li><a href=\"#a-year\">'Year' : Please write the vehicle's year</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('year');
    
    if(!validateField('bodydoors', regexAlphaNum)){
      errorField('bodydoors');
      msgerreur += "<li><a href=\"#a-bodydoors\">'Doors' : Please write how many doors the vehicle has</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('bodydoors');
    
    if(!validateField('color', regexNotEmpty) || validateField('color', regexOnlySpace)){
      errorField('color');
      msgerreur += "<li><a href=\"#a-color\">'Color' : Please write the vehicle's color</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('color');
    
    if(!validateField('km', regexKM)){
      errorField('km');
      msgerreur += "<li><a href=\"#a-km\">'Kilometers' : Please write the vehicle's kilometers</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('km');
    
    if(!validateField('niv', regexVIN)){
      errorField('niv');
      msgerreur += "<li><a href=\"#a-niv\">'Vehicle identification number (VIN)' : Please write the vehicle's number</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('niv');
    
    if (document.getElementById('transtype').selectedIndex == 0){
      errorField('transtype');
      msgerreur += "<li><a href=\"#a-transtype\">'Transmission type' : Please select the vehicle's transmission type</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('transtype');
    
    if(!validateField('enginetype', regexNotEmpty) || validateField('enginetype', regexOnlySpace)){
      errorField('enginetype');
      msgerreur += "<li><a href=\"#a-enginetype\">'Cylinders' : Please write a number</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('enginetype');
    
    if(!validateField('enginecc', regexNotEmpty) || validateField('enginecc', regexOnlySpace)){
      errorField('enginecc');
      msgerreur += "<li><a href=\"#a-enginecc\">'Engine size' : Please write a number</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('enginecc');
  	
    if (!validateField('qwe', regexAlpha)){
      errorField('qwe');
      msgerreur += "<li><a href=\"#a-fname\">'First name' : Please write your first name</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('qwe');
    
    if (!validateField('rty', regexAlpha)){
      errorField('rty');
      msgerreur += "<li><a href=\"#a-lname\">'Last name' : Please write your last name</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('rty');
    
    if (!validateField('address', regexAddress)){
      errorField('address');
      msgerreur += "<li><a href=\"#a-address\">'Address' : Please write your address</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('address');
    
    if (!validateField('city', regexAlpha)){
      errorField('city');
      msgerreur += "<li><a href=\"#a-city\">'City' : Please write your city</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('city');
    
    if (document.getElementById('province').selectedIndex == 0){
      errorField('province');
      msgerreur += "<li><a href=\"#a-province\">'Province' : Please select your province</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('province');
    
    if (!validateField('postalcode', regexPC)){
      errorField('postalcode');
      msgerreur += "<li><a href=\"#a-postalcode\">'Postal code' : Please write your postal code</a></li>";
      erreur = true;
      nb_err++;
    }
    else{
      okField('postalcode');
      
      var pc = document.getElementById('postalcode').value;
      pc = pc.toUpperCase();
      if(pc.indexOf(' ') == -1)
        pc = pc.substring(0,3) + ' ' + pc.substring(3);
      document.getElementById('postalcode').value = pc;
    }
    
    if (!(!validateField('email', regexEmailNo) && validateField('email', regexEmailYes))){
      errorField('email');
      msgerreur += "<li><a href=\"#a-email\">'E-mail' : Please write a valid e-mail address</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('email');
    
    var phone = document.getElementById('area_j').value + document.getElementById('phone2').value + document.getElementById('phone3').value;
    if (!regexPhone.test(phone)){
      errorField('area_j');
      errorField('phone2');
      errorField('phone3');
      msgerreur += "<li><a href=\"#a-phone\">'Telephone' : Please write your phone number</a></li>";
      erreur = true;
      nb_err++;
    }
    else {
      okField('area_j');
      okField('phone2');
      okField('phone3');
    }
    
    var agreementok = true;
    for(var i = 1; i <= 5; i++){
      if(!document.getElementById('q' + i).checked)
        agreementok = false;
    }
    
    if(!agreementok){
      msgerreur += "<li><a href=\"#a-agreement\">'The consignor represents and warants that' : Please agree to all the terms</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if(vCaptcha){
      if (!validateField('captcha', regexAlpha)){
        errorField('captcha');
        msgerreur += "<li><a href=\"#a-captcha\">'Word' : Please type the characters you see in the picture</a></li>";
        erreur = true;
        nb_err++; 
      }
      else
        okField('captcha');
    }
    
    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);
    formSubmit = true;
		return false;
  }
  else {
    if (document.getElementById('phone_j')) { //some forms don't have phone number input fields
      if(document.getElementById('phone4'))
        document.getElementById('phone_j').value = document.getElementById('phone2').value+'-'+document.getElementById('phone3').value+' *'+document.getElementById('phone4').value;
      else
        document.getElementById('phone_j').value = document.getElementById('phone2').value+'-'+document.getElementById('phone3').value;
    }
    
    if (document.getElementById('phone_n')) { //some forms don't have phone number input fields
      if(document.getElementById('phone4s'))
        document.getElementById('phone_n').value = document.getElementById('phone2s').value+'-'+document.getElementById('phone3s').value+' *'+document.getElementById('phone4s').value;
      else
        document.getElementById('phone_n').value = document.getElementById('phone2s').value+'-'+document.getElementById('phone3s').value;
    }

    if(document.getElementById('first_name').value == '' && document.getElementById('last_name').value == ''){
      document.getElementById(f.id).submit();
    }
  }
}