var vCaptcha = false;

var formSubmit = true; // variable pour empecher les clicks abusifs sous IE

function findFormId(){
  for(var f = 0; f < document.forms.length; f++){
    if(document.forms[f].className == 'form2007'){
      properFormId = document.forms[f];
    }
  }
}

var fieldstyle = '';

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\.\,]+$/;
  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) {
  findFormId();
  if(f.id == undefined){
    f = properFormId;
  }
  //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 (!document.getElementById('q1neuf').checked && !document.getElementById('q1used').checked){
      msgerreur += "<li><a href=\"#a-q1\">'Acquisition d'un véhicule' : Veuillez indiquer s'il s'agit d'un véhicule neuf ou usagé</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q2high').checked && !document.getElementById('q2med').checked && !document.getElementById('q2low').checked){
      msgerreur += "<li><a href=\"#a-q2\">'Accueil, courtoisie et disponibilité' : Veuillez indiquer votre niveau de satisfaction</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q3high').checked && !document.getElementById('q3med').checked && !document.getElementById('q3low').checked){
      msgerreur += "<li><a href=\"#a-q3\">'Présentation du véhicule et informations fournies par notre conseiller' : Veuillez indiquer votre niveau de satisfaction</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q4high').checked && !document.getElementById('q4med').checked && !document.getElementById('q4low').checked){
      msgerreur += "<li><a href=\"#a-q4\">'Appréciation de l'essai routier' : Veuillez indiquer votre niveau de satisfaction</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q5n').checked && !document.getElementById('q5y').checked){
      msgerreur += "<li><a href=\"#a-q5\">'A-t-on respecté l'heure de livraison' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q6n').checked && !document.getElementById('q6y').checked){
      msgerreur += "<li><a href=\"#a-q6\">'Documents relatifs à l'achat/location' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q7n').checked && !document.getElementById('q7y').checked){
      msgerreur += "<li><a href=\"#a-q7\">'Vous a-t-on fait visiter nos installations de service après-vente' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q8n').checked && !document.getElementById('q8y').checked){
      msgerreur += "<li><a href=\"#a-q8\">'Documents pour l'entretien de votre véhicule' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q9n').checked && !document.getElementById('q9y').checked){
      msgerreur += "<li><a href=\"#a-q9\">'Commandes de votre véhicule' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q10n').checked && !document.getElementById('q10y').checked){
      msgerreur += "<li><a href=\"#a-q10\">'Équipements et accessoires choisis' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (document.getElementById('q10n').checked){
      if (!document.getElementById('q11n').checked && !document.getElementById('q11y').checked){
        msgerreur += "<li><a href=\"#a-q11\">'Sinon, aviez-vous été prévenu' : Veuillez indiquer une réponse</a></li>";
        erreur = true;
        nb_err++;
      }
      
      if (!document.getElementById('q12n').checked && !document.getElementById('q12y').checked){
        msgerreur += "<li><a href=\"#a-q12\">'Rendez-vous pour installer les éléments manquants' : Veuillez indiquer une réponse</a></li>";
        erreur = true;
        nb_err++;
      }
    }
    
    if (!document.getElementById('q13n').checked && !document.getElementById('q13y').checked){
      msgerreur += "<li><a href=\"#a-q13\">'Propre à l'intérieur et à l'extérieur' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q14n').checked && !document.getElementById('q14y').checked){
      msgerreur += "<li><a href=\"#a-q14\">'Le plein d'essence était-il fait' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (document.getElementById('refer12b').value != '')
      document.getElementById('refer12').checked = true;
    if (!document.getElementById('refer1').checked && !document.getElementById('refer2').checked && !document.getElementById('refer3').checked && !document.getElementById('refer4').checked && !document.getElementById('refer5').checked && !document.getElementById('refer6').checked && !document.getElementById('refer7').checked && !document.getElementById('refer8').checked && !document.getElementById('refer9').checked && !document.getElementById('refer10').checked && !document.getElementById('refer11').checked && !document.getElementById('refer12').checked){
      msgerreur += "<li><a href=\"#a-q15\">'Qui vous a dirigé chez nous' : Veuillez cocher au moins une case</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q16high').checked && !document.getElementById('q16med').checked && !document.getElementById('q16low').checked){
      msgerreur += "<li><a href=\"#a-q16\">'Avons-nous respecté nos engagements' : Veuillez indiquer votre niveau de satisfaction</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q17high').checked && !document.getElementById('q17med').checked && !document.getElementById('q17low').checked){
      msgerreur += "<li><a href=\"#a-q17\">'Niveau de satisfaction' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!document.getElementById('q18n').checked && !document.getElementById('q18y').checked){
      msgerreur += "<li><a href=\"#a-q18\">'Recommanderiez-vous le Groupe Vincent' : Veuillez indiquer une réponse</a></li>";
      erreur = true;
      nb_err++;
    }
    
    if (!validateField('qwe', regexAlpha)){
      errorField('qwe');
      msgerreur += "<li><a href=\"#a-fname\">'Prénom' : Veuillez entrer votre prénom</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('qwe');
    
    if (!validateField('rty', regexAlpha)){
      errorField('rty');
      msgerreur += "<li><a href=\"#a-lname\">'Nom' : Veuillez entrer votre nom de famille</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('rty');
    
    if (!validateField('address', regexAddress)){
      errorField('address');
      msgerreur += "<li><a href=\"#a-address\">'Adresse' : Veuillez entrer votre adresse</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('address');
    
    if (!validateField('city', regexAlpha)){
      errorField('city');
      msgerreur += "<li><a href=\"#a-city\">'Ville' : Veuillez entrer votre ville</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('city');
    
    if (document.getElementById('province').selectedIndex == 0){
      errorField('province');
      msgerreur += "<li><a href=\"#a-province\">'Province' : Veuillez sélectionner votre province</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('province');
    
    if (!validateField('postalcode', regexPC)){
      errorField('postalcode');
      msgerreur += "<li><a href=\"#a-postalcode\">'Code postal' : Veuillez entrer votre code postal correctement</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;
    }
    
    var phoneDay = document.getElementById('area_j').value + document.getElementById('phone2').value + document.getElementById('phone3').value;
    var phoneNight = document.getElementById('area_s').value + document.getElementById('phone2s').value + document.getElementById('phone3s').value;
    if (!regexPhone.test(phoneDay) && !regexPhone.test(phoneNight)){
      errorField('area_j');
      errorField('phone2');
      errorField('phone3');
      errorField('area_s');
      errorField('phone2s');
      errorField('phone3s');
      msgerreur += "<li><a href=\"#a-phone\">'Téléphone' : Veuillez entrer votre numéro de téléphone</a></li>";
      erreur = true;
      nb_err++;
    }
    else {
      okField('area_j');
      okField('phone2');
      okField('phone3');
      okField('area_s');
      okField('phone2s');
      okField('phone3s');
    }
    
    if (!(!validateField('email', regexEmailNo) && validateField('email', regexEmailYes))){
      errorField('email');
      msgerreur += "<li><a href=\"#a-email\">'Courriel' : Veuillez entrer une adresse de courriel valide</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('email');
    
  
    if(vCaptcha && f.captcha.value=="") {
      errorField('captcha');
      msgerreur += "<li><a href=\"#a-captcha\">'Mot' : Veuillez entrer les caractères figurant dans l'image</a></li>";
		  erreur = true;
	  }
      
    msgerreur += "</ul>";
    
    if (nb_err > 1)
      title_err = "Il y a un problème avec les champs suivants :";
    else
      title_err = "Il y a un problème avec le champ suivant :";
  }

  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')) {
      document.getElementById('phone_j').value = document.getElementById('phone2').value+'-'+document.getElementById('phone3').value;
    }
    
    if (document.getElementById('phone_s')) {
      document.getElementById('phone_s').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();
    }
  }
}

formsOverride = {

  formId: '',
  
  findFormId: function(){
    for(var f = 0; f < document.forms.length; f++){
      if(document.forms[f].className == 'form2007'){
        formsOverride.formId = document.forms[f].id;
        //formsOverride.setFields();
      }
    }
  },
  
  addLoadListener: function(ev, fn){
    if(typeof window.addEventListener != 'undefined'){
      window.addEventListener(ev, fn, false);
    }
    else if(typeof document.addEventListener != 'undefined'){
      document.addEventListener(ev, fn, false);
    }
    else if(typeof window.attachEvent != 'undefined'){
      window.attachEvent('on' + ev, fn);
    }
    else{
      var oldfn = window.onload;
      if(typeof window.onload != 'function'){
        window.onload = fn;
      }
      else{
        window.onload = function(){
        oldfn();
        fn();
        }
      }
    }
  }
}
formsOverride.addLoadListener('load', formsOverride.findFormId);