// JavaScript Document


/******************************************************************/
//  fonctions génériques
/******************************************************************/
function estEmail(str) {
  var regex = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
  return regex.test(str);
}
function estNumTelephone(str) {
  if (str.length != 10)
    return false;
  var regex = new RegExp(/^(01|02|03|04|05|06|08|09)([0-9][0-9]){4}/gi);
  return regex.test(str);
}
function estNumGSM(str) {
  if (str.length != 10)
    return false;
  var regex = new RegExp(/^(06|07)([0-9][0-9]){4}/gi);
  return regex.test(str);
}
function estCodePostal(str) {
  if (str.length != 5)
    return false;
  var regex = new RegExp(/^([0-9]){5}/gi);
  return regex.test(str);
}

function estDate(jour, mois, annee) {
  if ((jour == "") || (jour == "") || (jour == "")) // si une des variables est vide on retourne faux
    return false;

  var e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  var dateComplete = jour + "/" + mois + "/" + annee;

  if (!e.test(dateComplete)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier

  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (annee < 1000) {
    if (annee < 89)
      annee += 2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else
      annee += 1900;
  }

  // Définition du dernier jour de février
  var fevrier = 28;
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (annee%4 == 0 && annee%100 !=0 || annee%400 == 0)
    fevrier = 29;

  // Nombre de jours pour chaque mois
  var nbJours = new Array(31, fevrier, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( mois >= 1 && mois <= 12 && jour >= 1 && jour <= nbJours[mois-1] );
}
//fonction qui permet de tester si le RIO correspond bien au numéro de téléphone
function estRIO(rio, numGSM){
  if(rio.length !=12) return false;
  var sOperateur = rio.substr(0, 2);
  var sTypeContrat = rio.substr(2, 1);
  var sRefClient = rio.substr(3, 6);
  if (sTypeContrat != "P" && sTypeContrat!="E") return false;
  var sOrdre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+";
  var nRes = new Array(0, 0, 0);
  var sTmp = sOperateur + sTypeContrat + sRefClient + numGSM;
  for (n=0; n<19; n++) {
    var nPos = sOrdre.indexOf(sTmp.substr(n, 1));
    nRes[0] = (nRes[0] + nPos)%37;
    nRes[1] = ((2*nRes[1]) + nPos)%37;
    nRes[2] = ((4*nRes[2]) + nPos)%37;
  }
  var sCleCalculee = sOrdre.substr(nRes[0],1) + sOrdre.substr(nRes[1],1) + sOrdre.substr(nRes[2],1);
  if (rio.substr(9) != sCleCalculee) return false;
  return true;
}


function selectionner (id) {
  document.getElementById(id).style.display='block'; 
 }
 function deselectionner (id) {
  document.getElementById(id).style.display='none';
 }
 
 var etat=0;
 function changeMappy(){
      switch(etat){
        case 0 :
          etat=1;
          //document.getElementById("bouton_mappy").style.display = "none" ;
          //alert("on est dans le form au depart");
        break;
        case 1 :
          etat=2;
          //document.getElementById("form2").style.display = "none" ;
          //document.getElementById("bouton_mappy").style.display = "" ;
          //document.getElementById("titre_mappy").style.display = "none" ;
          document.getElementById("blockrandom").style.height = "940px" ;
          //document.getElementById("mappy").style.width = "100%" ;
          //alert("on est dans le plan");
        break;
        case 2 :
          etat=1;
          //document.getElementById("bouton_mappy").style.display = "" ;
          document.getElementById("blockrandom").style.height = "180px" ;
          //document.getElementById("mappy").style.width = "500px" ;
          //alert("on est dans le form");
        break;
      }
}


function OuvrirPopup(page, nom, option){
  if(option=='') option='height=600, width=800, top=100, left=100, toolbar=no, menubar=no, location=no, resizable=yes, scrollbars=yes, status=no';
  window.open(page, nom, option);
}

function trim(chaine){
    if (chaine == null)
        return ""
    else
      return chaine.replace(/(^\s*)|(\s*$)/g,'');
}

function redirigerVersPage (page)
{
  if (page == null)
    window.location.href = 'index.php';
  else
    window.location.href = page;
}


function estNumCbValide(st)
{
  if (st.length > 19) return (false);
  var sum = 0;
  var mul = 1;
  var l = st.length;
  for(i=0;i<l;i++)
  {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }

  if ((sum % 10) == 0)
    return (true);
  else
    return (false); 
}

function estNumero(str)
{
  var regex = /^[0-9]*$/;
  return regex.test(str);
}

//fonction appelée par une autre fonction JS, permettant de mettre la bordure de champ obligatoire et d'enlever celle transparente (pour conserver l'espace)
// ou alors inverse dans l'autre sens
function inverserChampObligatoire(idBloc, mettreObligatoire) {
  if (mettreObligatoire) {
    $(idBloc).addClassName("champObligatoire");
    $(idBloc).removeClassName("champObligatoireMasque");
  } else {
    $(idBloc).addClassName("champObligatoireMasque");
    $(idBloc).removeClassName("champObligatoire");
  }
}
