var txtPartir = "Attention, si vous quittez le questionnaire sans l'avoir validé, toutes les données déjà entrées seront effacées.";
//var txtPartir = "Vous n'avez pas validé votre inscription !";

//------------------------------------------------------------------------------
// Fonction qui débloque l'avertissement si on quite le questionnaire trop tôt...
function debloqueAvertissement()
{
  obj = document.getElementsByTagName("body")[0];
  obj.setAttribute("onbeforeunload", "");
}


//------------------------------------------------------------------------------
// Fonction pour les changements de départements
function changerDepartement(valeur, ind)
{
	if (ind == 0)
  {
			document.forms[0].personne__Departement_num[1].value = valeur;
	}
	else
    if (ind == 1)
    {
			document.forms[0].personne__Departement_num[0].value = valeur;
  	}
}

//------------------------------------------------------------------------------
// Fonction pour les changements d'action de formulaire
function changeDestination(dst)
{
  document.forms[0].action = dst;
  if (reglesObligatoiresInscription() == true)
  {
    debloqueAvertissement();
    document.forms[0].submit();
  }
}


//------------------------------------------------------------------------------
// Change le style d'un champ et le régle avec les contours et la coulour 
// d'erreur
function changeStyleToError(elt)
{
  elt.className = 'erreur_label erreur_champ';
}

//------------------------------------------------------------------------------
// Remet normalement le style d'un champ
function changeStyleToNormal(elt)
{
  elt.className = '';
}


//------------------------------------------------------------------------------
// Vide une chaine de caractère, si elle est remplie d'espace.
function Trim(mot)
{
  if(mot.length == 0)
  {
    return ("");
  }
  while (mot.indexOf(" ") == 0 )
  {
    if(mot.length == 1)
    {
      return ("");
    }
    mot = mot.substring(1, mot.length);
  }
  while (mot.lastIndexOf(" ") == mot.length - 1)
  {
    mot = mot.substring(0, mot.length - 1);
  }
  return (mot);
}


//------------------------------------------------------------------------------
// Test si une chaîne est vide (même avec des espaces) ou non...
function isEmpty(mot)
{
  var v = Trim(mot);
  
  if(v.length == 0)
  {
    return (true);
  } 
  else 
  {
    return (false);
  }
}

//------------------------------------------------------------------------------
// Fonction générale pour éviter les copier-coller
function eviteCopierColler(e)
{
  var keynum;
  
  if(window.event) // IE
  {
    keynum = e.keyCode;
  }
  else
    if(e.which) // Netscape/Firefox/Opera
    {
      keynum = e.which;
    }
    
  if (keynum == 16)
  {
    return (false);
  }
  return (true);
}



//------------------------------------------------------------------------------
// Fonction générale de controle des champs obligatoires
function reglesObligatoiresInscription()
{
  glob_TelCtrl = 0;
 for (i = 0; i < glob_tabEltCtr.length; i += 1)
  {
    obj = glob_tabEltCtr[i];
    if (obj)
    {
      changeStyleToNormal(obj);
      if (obj.ControlValeur() == false)
        return (false);
    }
  }
  debloqueAvertissement();
  return (true);
}


//------------------------------------------------------------------------------
// Régle de vérification de similarité des champs
function regleCopieSimilaire(obj1, obj2, msg)
{
  if (obj1.value != obj2.value)
  {
    changeStyleToError(obj1);
    alert(msg);
    return (false);
  }
  else
    return (true);
}


//------------------------------------------------------------------------------
// Régle sur les champs de texte
function regleTexte(obj, msg)
{
  if (isEmpty(obj.value))
  {
    changeStyleToError(obj);
    alert(msg);
    return (false);
  }
  else
    return (true);
}

//------------------------------------------------------------------------------
// Régle sur les champs de telephone
function regleTelephone(obj, msg)
{
  var pat = /^[0-9]+$/;
  
  if (isEmpty(obj.value))
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " est obligatoire.");
    return (false);
  }
  if (obj.value.length != 10)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + "doit être valide.");
    return (false);
  }
  if (pat.test(obj.value) == false)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + "doit être valide.");
    return (false);
  }
  return (true);
}



//------------------------------------------------------------------------------
// Regle sur les groupes de téléphones
var glob_TelCtrl = 0;

function regleTelephoneGroupe(tab, msg)
{
  var pasDeValeur = 1;
  var pat = /^[0-9]+$/;
  
  // Afin de ne passer qu'une seule fois le controle sur les numéros de tél.
  if (glob_TelCtrl == 0)
  {
    glob_TelCtrl = 1;
  
    
    // Parcours des valeurs des autres téléphones
    for (i = 0; i < tab.length; i++)
    {
      obj = tab[i];
      if (obj)
        if (!(isEmpty(obj.value)))
        {
          pasDeValeur = 0;
          if (obj.value.length != 10)
          {
            changeStyleToError(obj);
            alert("Attention, les numéros de téléphone doit être valide.");
            return (false);
          }
          if (pat.test(obj.value) == false)
          {
            changeStyleToError(obj);
            alert("Attention, les numéros de téléphone doit être valide.");
            return (false);
          }
        }
    }
    
    // Controle qu'il y ait au moins un numéro :
    if (pasDeValeur == 1)
    {
      for (i = 0; i < tab.length; i++)
      {
        obj = tab[i];
        if (obj)
          changeStyleToError(obj);
      }
      alert(msg);
      return (false);
    }
  }

  return (true);
}


//------------------------------------------------------------------------------
// Régle sur les emails
function regleEmail(obj)
{
  var pat = /^[a-z0-9\-_\.]+@[a-z0-9\-_\.]+\.[a-z]{2,5}$/;
  
  if (isEmpty(obj.value))
  {
    changeStyleToError(obj);
    alert("Attention, l'e-mail est obligatoire.");
    return (false);
  }
  if (pat.test(obj.value) == false)
  {
    changeStyleToError(obj);
    alert("Attention, l'e-mail doit être valide.");
    return (false);
  }
  return (true);
}


//------------------------------------------------------------------------------
// Régle sur les listes à choix unique
function regleListeUnique(obj, msg)
{
  if (obj.value == 'NULL')
  {
    changeStyleToError(obj);
    alert(msg);
    return (false);
  }
  return (true);
}


//------------------------------------------------------------------------------
// Régle sur les nombres
function regleNombre(obj, taille, msg)
{
  var pat = /^[0-9aAbB]+$/;

  if (isEmpty(obj.value))
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " est obligatoire.");
    return (false);
  }
  if (obj.value.length != taille)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " doit être valide.");
    return (false);
  }
  if (pat.test(obj.value) == false)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " doit être valide.");
    return (false);
  }
  return (true);
}


//------------------------------------------------------------------------------
// Régle sur les nombres
// Si la valeur est vide, on ne test pas. (pas obligatoire)
function regleNumerique(obj, taille, msg)
{
  var pat = /^[0-9]+$/;

  if (isEmpty(obj.value))
  {
    return (true);
  }
  if (obj.value.length > taille)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " doit être valide.");
    return (false);
  }
  if (pat.test(obj.value) == false)
  {
    changeStyleToError(obj);
    alert("Attention, " + msg + " doit être valide.");
    return (false);
  }
  return (true);
}


//------------------------------------------------------------------------------
// Régle sur les dates
function regleDate(objJour, objMois, objAnnee, msg, flag_ctr)
{
  var pat = /^[0-9]+$/;
  
  if (flag_ctr == 1)
  {

    // Controle sur les valeurs...
    if (isEmpty(objJour.value))
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }
    if (isEmpty(objMois.value))
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }
    if (isEmpty(objAnnee.value))
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }

    // Taille des valeurs
    if (objJour.value.length != 2)
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (objMois.value.length != 2)
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (objAnnee.value.length != 4)
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }

    // Validité des valeurs
    if (pat.test(objJour.value) == false)
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (pat.test(objMois.value) == false)
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (pat.test(objAnnee.value) == false)
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }

    // Controle de validité
    var jour = objJour.value;
    var mois = objMois.value;
    var annee = objAnnee.value;
    
    var unedate = new Date(eval(annee), eval(mois)-1, eval(jour));
    var anneeVal = unedate.getYear();
    if ((Math.abs(anneeVal) + "").length < 4)
      anneeVal = anneeVal + 1900;
    
    if (unedate.getDate() != eval(jour) || 
        unedate.getMonth() != (eval(mois) - 1) ||
        anneeVal != eval(annee))
    {
      changeStyleToError(objJour);
      changeStyleToError(objMois);
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    
    if ((anneeVal < 1920) || (anneeVal > 2008))
    {
      changeStyleToError(objJour);
      changeStyleToError(objMois);
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
  }
  return (true);

}


//------------------------------------------------------------------------------
// Régle sur les dates assouplie
function regleDateNonNulle(objJour, objMois, objAnnee, msg, flag_ctr)
{
  var pat = /^[0-9]+$/;
  
  if (flag_ctr == 1)
  {

    // Controle sur les valeurs...
    if (isEmpty(objJour.value))
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }
    if (isEmpty(objMois.value))
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }
    if (isEmpty(objAnnee.value))
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " est obligatoire.");
      return (false);
    }

    // Taille des valeurs
    if (objJour.value.length != 2)
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (objMois.value.length != 2)
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (objAnnee.value.length != 4)
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }

    // Validité des valeurs
    if (pat.test(objJour.value) == false)
    {
      changeStyleToError(objJour);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (pat.test(objMois.value) == false)
    {
      changeStyleToError(objMois);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }
    if (pat.test(objAnnee.value) == false)
    {
      changeStyleToError(objAnnee);
      alert("Attention, " + msg + " doit être valide.");
      return (false);
    }

    // Controle de validité
    var jour = objJour.value;
    var mois = objMois.value;
    var annee = objAnnee.value;

    if ((jour != 0) && (mois != 0) && (annee != 0))
    {
      
      var unedate = new Date(eval(annee), eval(mois)-1, eval(jour));
      var anneeVal = unedate.getYear();
      if ((Math.abs(anneeVal) + "").length < 4)
        anneeVal = anneeVal + 1900;
      
      if (unedate.getDate() != eval(jour) || 
          unedate.getMonth() != (eval(mois) - 1) ||
          anneeVal != eval(annee))
      {
        changeStyleToError(objJour);
        changeStyleToError(objMois);
        changeStyleToError(objAnnee);
        alert("Attention, " + msg + " doit être valide.");
        return (false);
      }
      
      if ((anneeVal < 1920) || (anneeVal > 2014))
      {
        changeStyleToError(objJour);
        changeStyleToError(objMois);
        changeStyleToError(objAnnee);
        alert("Attention, " + msg + " doit être valide.");
        return (false);
      }
    }
  }
  return (true);

}


//------------------------------------------------------------------------------
// Devis
// Examine et controle les champs obligatoires
function ValideDevis()
{
  changeStyleToNormal(document.getElementById("nom"));
  changeStyleToNormal(document.getElementById("email2"));
  changeStyleToNormal(document.getElementById("societe"));
  changeStyleToNormal(document.getElementById("tel"));
  
  if(isEmpty(document.getElementById("nom").value))
  {
    changeStyleToError(document.getElementById("nom"));
    alert("Veuillez indiquer votre nom");
    return (false);
  }  
    
  if (!regleEmail(document.getElementById("email2"), "votre courriel"))
  {
    return (false);
  }
    
  if(isEmpty(document.getElementById("societe").value))
  {
    changeStyleToError(document.getElementById("societe"));
    alert("Veuillez indiquer votre société");
    return (false);
  }  
  
  if (!regleTelephone(document.getElementById("tel"), "le numéro de téléphone"))
  {
    return (false);
  }
    
  return (true);
}

