var vIndex = false;
var vIndexF1 = false;
var vIndexF2 = false;
var vExpress = false;

var vCaptcha = false;

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

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\.\,]+$/;
  
  var regexVisa = /^4([0-9]{12}|[0-9]{15})$/;
  var regexMc = /^5[1-5][0-9]{14}$/;
  var regexAmex = /^3(4|7)[0-9]{13}$/;
  var regexAutre = /^[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 = '';
  }
}

function removeSpaces(string) {
	var tstring = "";
	//string = '' + string;
	splitstring = string.split(" ");
	
  for(i = 0; i < splitstring.length; i++)
	  tstring += splitstring[i];
  
	return tstring;
}

// 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(vExpress){
      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){
        if (!validateField('captcha', regexAlpha)){
          errorField('captcha');
          msgerreur += "<li><a href=\"#a-captcha\">'Mot' : Veuillez entrer les caractères figurant dans l'image</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('captcha');
      }
    }
    else{
      if(vIndex || vIndexF1 || vIndexF2){
        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(vIndex || vIndexF2){
        if (!validateField('licence', regexNotEmpty) || validateField('licence', regexOnlySpace)){
          errorField('licence');
          msgerreur += "<li><a href=\"#a-licence\">'Numéro du permis de conduire' : Veuillez entrer un numéro</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('licence');
        
        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(vIndexF2){
        if(document.getElementById('conjoint').checked){
          if (!validateField('first_name_conjoint', regexAlpha)){
            errorField('first_name_conjoint');
            msgerreur += "<li><a href=\"#a-fnameconjoint\">'Prénom (conjoint(e))' : Veuillez entrer le prénom de votre conjoint(e)</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('first_name_conjoint');
          
          if (!validateField('last_name_conjoint', regexAlpha)){
            errorField('last_name_conjoint');
            msgerreur += "<li><a href=\"#a-lnameconjoint\">'Nom (conjoint(e))' : Veuillez entrer le nom de famille de votre conjoint(e)</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('last_name_conjoint');
          
          if (!(!validateField('email_conjoint', regexEmailNo) && validateField('email_conjoint', regexEmailYes))){
            errorField('email_conjoint');
            msgerreur += "<li><a href=\"#a-emailconjoint\">'Courriel (conjoint(e))' : Veuillez entrer une adresse de courriel valide</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('email_conjoint');
        }
      }
      if(vIndexF1) {
        if(!validateField('home2', regexMoney)){
          errorField('home2');
          msgerreur += "<li><a href=\"#a-home2\">'Paiements / Loyer' : Veuillez entrer un montant</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('home2');
            
      }
      if(vIndex || vIndexF1 || vIndexF2){
        if(!validateField('newmake', regexAlpha)){
          errorField('newmake');
          msgerreur += "<li><a href=\"#a-newmake\">'Marque' : Veuillez entrer la marque du véhicule recherché</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('newmake');
        
        if(!validateField('newmodel', regexAlphaNum)){
          errorField('newmodel');
          msgerreur += "<li><a href=\"#a-newmodel\">'Modèle' : Veuillez entrer le modèle du véhicule recherché</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('newmodel');
        
        if(!validateField('newyear', regexYear)){
          errorField('newyear');
          msgerreur += "<li><a href=\"#a-newyear\">'Année' : Veuillez entrer l'année du véhicule recherché</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('newyear');
        
        if(!validateField('cash', regexMoney)){
          errorField('cash');
          msgerreur += "<li><a href=\"#a-cash\">'Argent comptant à votre disposition' : Veuillez entrer un montant</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('cash');
        
        if(!validateField('budget', regexMoney)){
          errorField('budget');
          msgerreur += "<li><a href=\"#a-budget\">'Budget disponible' : Veuillez entrer un montant</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('budget');
          
        if(vIndexF1){
          if (vCaptcha){  
            if (!validateField('captcha', regexAlpha)){
              errorField('captcha');
              msgerreur += "<li><a href=\"#a-captcha\">'Mot' : Veuillez entrer les caractères figurant dans l'image</a></li>";
              erreur = true;
              nb_err++;
            }
            else
              okField('captcha');
          }
        }
          
      }
      if(vIndex || vIndexF2){
        if(!validateField('bank1name', regexAlphaNum)){
          errorField('bank1name');
          msgerreur += "<li><a href=\"#a-bank1name\">'Nom de l'institution financière' : Veuillez entrer un nom</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('bank1name');
        
        if(!validateField('bank1address', regexAddress)){
          errorField('bank1address');
          msgerreur += "<li><a href=\"#a-bank1address\">'Adresse' : Veuillez entrer l'adresse de votre institution financière</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('bank1address');
        
        var bankPhone = document.getElementById('area_bank1phone').value + document.getElementById('bank1phone2').value + document.getElementById('bank1phone3').value;
        if (!regexPhone.test(bankPhone)){
          errorField('area_bank1phone');
          errorField('bank1phone2');
          errorField('bank1phone3');
          msgerreur += "<li><a href=\"#a-bank1phone\">'Téléphone' : Veuillez entrer le numéro de téléphone de votre institution financière</a></li>";
          erreur = true;
          nb_err++;
        }
        else {
          okField('area_bank1phone');
          okField('bank1phone2');
          okField('bank1phone3');
        }
        
        if(vIndex){
          if(document.getElementById('creditcardy').checked){
            ccNum = removeSpaces(document.getElementById('creditcardnumber').value);
            
            if(document.getElementById('cct-visa').checked){      
              if(!regexVisa.test(ccNum)){
                errorField('creditcardnumber');
                msgerreur += "<li><a href=\"#a-creditcardnumber\">'Numéro de carte de crédit' : Veuillez entrer le numéro de votre carte de crédit</a></li>";
                erreur = true;
                nb_err++;
              }
              else
                okField('creditcardnumber');
            }
            else if(document.getElementById('cct-mc').checked){
              if(!regexMc.test(ccNum)){
                errorField('creditcardnumber');
                msgerreur += "<li><a href=\"#a-creditcardnumber\">'Numéro de carte de crédit' : Veuillez entrer le numéro de votre carte de crédit</a></li>";
                erreur = true;
                nb_err++;
              }
              else
                okField('creditcardnumber');
            }
            else if(document.getElementById('cct-amex').checked){
              if(!regexAmex.test(ccNum)){
                errorField('creditcardnumber');
                msgerreur += "<li><a href=\"#a-creditcardnumber\">'Numéro de carte de crédit' : Veuillez entrer le numéro de votre carte de crédit</a></li>";
                erreur = true;
                nb_err++;
              }
              else
                okField('creditcardnumber');
            }
            else if(document.getElementById('cct-autre').checked){
              if(!regexAutre.test(ccNum)){
                errorField('creditcardnumber');
                msgerreur += "<li><a href=\"#a-creditcardnumber\">'Numéro de carte de crédit' : Veuillez entrer le numéro de votre carte de crédit</a></li>";
                erreur = true;
                nb_err++;
              }
              else
                okField('creditcardnumber');
            }
          }
          if (vCaptcha){
            if (!validateField('captcha', regexAlpha)){
              errorField('captcha');
              msgerreur += "<li><a href=\"#a-captcha\">'Mot' : Veuillez entrer les caractères figurant dans l'image</a></li>";
              erreur = true;
              nb_err++;
            }
            else
              okField('captcha');
          }
        }
        else if(vIndexF2){
          if(!validateField('bank_compte', regexNotEmpty) || validateField('bank_compte', regexOnlySpace)){
            errorField('bank_compte');
            msgerreur += "<li><a href=\"#a-bankcompte\">'Numéro de compte' : Veuillez entrer votre numéro de compte</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('bank_compte');
        }
      }
      
      if(vIndexF2){
        if(document.getElementById('faillitey').checked){
          var libDate = document.getElementById('lib_annee').value + '/' + document.getElementById('lib_mois').value + '/' + document.getElementById('lib_jour').value;      
          if (!regexDate.test(libDate)){
            errorField('lib_annee');
            errorField('lib_mois');
            errorField('lib_jour');
            msgerreur += "<li><a href=\"#a-lib\">'Date de libération' : Veuillez indiquer la date</a></li>";
            erreur = true;
            nb_err++;
          }
          else {
            okField('lib_annee');
            okField('lib_mois');
            okField('lib_jour');
          }
          
          if(!validateField('credit_montant', regexMoney)){
            errorField('credit_montant');
            msgerreur += "<li><a href=\"#a-creditmontant\">'Montant de votre faillite' : Veuillez entrer un montant</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('credit_montant');
          
          if(document.getElementById('credit_nombre').selectedIndex == 0){
            errorField('credit_nombre');
            msgerreur += "<li><a href=\"#a-creditnombre\">'Nombre de faillites à ce jour' : Veuillez faire une sélection</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('credit_nombre');
        }
        if(vCaptcha){
          if (!validateField('captcha', regexAlpha)){
            errorField('captcha');
            msgerreur += "<li><a href=\"#a-captcha\">'Mot' : Veuillez entrer les caractères figurant dans l'image</a></li>";
            erreur = true;
            nb_err++;
          }
          else
            okField('captcha');
        
        }
      }
    }
    
    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('first_name').value == '' && document.getElementById('last_name').value == ''){
      //document.getElementById(f.id).action = "<spy=spy.uri/>"; <-- can't do because we're in a .js file
      document.getElementById(f.id).submit();
    }
  }
}
