var vCaptcha = false;

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

var vExpress = false;
var vCity = true;
var vPostalCode = true;
var vPhone = true;
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 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;
  
  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('model')){//instock.spy does not have a dd menu for models
      if(document.getElementById('model').selectedIndex == 0) {
        errorField('model');
        msgerreur += "<li><a href=\"#a-model\">'Model' : Please make a selection</a></li>";
        erreur = true;
        nb_err++;
      }
      else
        okField('model');
    }
    
    if(document.getElementById('modelext')){//instock.spy does not have a dd menu for models
      if(document.getElementById('modelext').selectedIndex == 0) {
        errorField('modelext');
        msgerreur += "<li><a href=\"#a-ext\">'Trim' : Please make a selection</a></li>";
        erreur = true;
        nb_err++;
      }
      else
        okField('modelext');
    }
    
    if(vExpress){//express form
      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('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');
      }
      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');
      }
    }
    else{//back to regular form
      if(document.getElementById('transmission')){
        if(document.getElementById('transmission').selectedIndex == 0){
          errorField('transmission');
          msgerreur += "<li><a href=\"#a-trans\">'Transmission' : Please make a selection</a></li>";
          erreur = true;
          nb_err++;
        }
        else
          okField('transmission');
      }
      
      if(document.getElementById('leasequote')){
        if(document.getElementById('paycash').selectedIndex == 0 && document.getElementById('leasequote').selectedIndex == 0 && document.getElementById('purchasequote').selectedIndex == 0) {
          errorField('paycash');
          errorField('leasequote');
          errorField('purchasequote');
          msgerreur += "<li><a href=\"#a-paycash\">'Pay cash / Lease / Purchase' : Please choose one</a></li>";
          erreur = true;
          nb_err++;
        }
        else {
          okField('paycash');
          okField('leasequote');
          okField('purchasequote');
        }
      }
      else{
        if(document.getElementById('paycash').selectedIndex == 0 && document.getElementById('purchasequote').selectedIndex == 0) {
          errorField('paycash');
          errorField('purchasequote');
          msgerreur += "<li><a href=\"#a-paycash\">'Pay cash / Purchase' : Please choose one</a></li>";
          erreur = true;
          nb_err++;
        }
        else {
          okField('paycash');
          okField('purchasequote');
        }
      }
      
      if(document.getElementById('leasequote')){//some manufacturers don't offer leasing, so dd is not generated by spy
        if(document.getElementById('leasequote').selectedIndex != 0){
          if(!validateField('leasekm', regexKM)){
            errorField('leasekm');
            msgerreur += "<li><a href=\"#a-leasekm\">'Estimated annual kilometers:' : Please write a number</a></li>";
            erreur = true;
            nb_err++;
          }
          else{
            okField('leasekm');
          }
        }
        else{
          okField('leasekm');
        }
      }
      
      if(document.getElementById('whenbuying').selectedIndex == 0) {
        errorField('whenbuying');
        msgerreur += "<li><a href=\"#a-paycash\">'I plan to get the vehicle' : Please choose one</a></li>";
        erreur = true;
        nb_err++;
      }
      else {
        okField('whenbuying');
      }
      
      if (validateField('tradeyear', regexNotEmpty) && !validateField('tradeyear', regexYear)){
        errorField('tradeyear');
        msgerreur += "<li><a href=\"#a-tradeyear\">'Year (trade-in)' : Please write a valid year</a></li>";
        erreur = true;
        nb_err++;
      }
      else
        okField('tradeyear');
      
      if(document.getElementById('tradetrans')){
        okField('tradetrans');
        
        if (validateField('tradeyear', regexNotEmpty) && validateField('tradeyear', regexYear)){
          if(document.getElementById('tradetrans').selectedIndex == 0){
            errorField('tradetrans');
            msgerreur += "<li><a href=\"#a-tradetrans\">'Transmission (trade-in)' : Please make a selection</a></li>";
            erreur = true;
            nb_err++;
          }
        }
      }  
      
      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 (vCity){
        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 (vPostalCode){
        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');
      }
      
      if(document.getElementById('email2')){//field for Mazda Dealers
        if(document.getElementById('email2').value == ''){
          errorField('email2');
          msgerreur += "<li><a href=\"#a-email2\">'E-mail' : Address not confirmed</a></li>";
          erreur = true;
          nb_err++;
        }
        else if(document.getElementById('email').value != document.getElementById('email2').value){
          errorField('email2');
          msgerreur += "<li><a href=\"#a-email2\">'E-mail' : Address not identical</a></li>";
          erreur = true;
          nb_err++;
        }
        else{
          okField('email2');
        }
      }
      
      if (vPhone){ 
        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\">'Telephone' : Please write your phone number</a></li>";
          erreur = true;
          nb_err++;
        }
        else {
          okField('area_j');
          okField('phone2');
          okField('phone3');
          okField('area_s');
          okField('phone2s');
          okField('phone3s');
        }
      }
      
      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 (ofn.PHONE_J) { //some forms don't have phone number input fields
      ofn.PHONE_J.value = ofn.PHONE2.value+'-'+ofn.PHONE3.value+' *'+ofn.PHONE4.value;
    }*/
    
    /*if(document.getElementById(phone_j)) { //some forms don't have phone number input fields
      document.getElementById(phone_j).value = document.getElementById(phone2).value+'-'+document.getElementById(phone3).value+' *'+document.getElementById(phone4).value;
    }*/
    
    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();
    }
  }
}