// Désactivation du clic droit
//window.document.onmousedown = js_ClicDroit;
document.onmousemove = getMouseXY;

var DateMin = 2005;

// variable générales servant à la validation des formulaires
var blanc = /^ *$/;
var space = / /g;
var quote = /\'/;
var pointvirg = /\;/;
var alpha     = /[a-zA-Z<>\*µù%$£\-!§:\/;,?&é\(è_çà\)=+]/;
var alphaHcp  = /[a-zA-Z<>\*µù%$£!§:\/;,?&é\(è_çà\)=]/;
var carinterdit = /[';]/;
var emailinterdit = /[^0-9a-z\-\._@]/;
//var nomficreg = "[<>|µù%$£!§+^?@à\[\]&é\)\(èç]";
//alert ('nomficreg :' + nomficreg);
//var nomficinterdit  = new RegExp(nomficreg, "");

var nomficinterdit = /[<>|µù%$£!§+^?@à\[\]:&é\)\(èç]/;
//alert ('nomficreg :' + nomficinterdit);

var nonnum  = /[^0-9\.]/;
var nonnumsigne  = /[^\.\+\-0-9]/;
var ie = document.all ? 1 : 0
var ns4 = document.layers ? 1 : 0
var dom = document.getElementById ? 1 : 0


var TouchesIgnoree= new Array(255);
TouchesIgnoree[9]="O";
TouchesIgnoree[16]="O";
TouchesIgnoree[17]="O";
TouchesIgnoree[18]="O";
TouchesIgnoree[20]="O";
TouchesIgnoree[27]="O";
TouchesIgnoree[33]="O";
TouchesIgnoree[34]="O";
TouchesIgnoree[35]="O";
TouchesIgnoree[36]="O";
TouchesIgnoree[37]="O";
TouchesIgnoree[38]="O";
TouchesIgnoree[39]="O";
TouchesIgnoree[40]="O";
TouchesIgnoree[45]="O";
TouchesIgnoree[144]="O";

tTableCode = new Array('R', '6', 'G', '4', 'w', 'A', 'j', 'S', '0', 'F', '5', 'o', 'l', 'V', 'a', '1', 'C', 'H', '7', 'T', '2', '3', 'n', 'f', 'x', 'U', 'P', 'B', 'u', 'I', 'm', 'e', 'O', 'b', 'z', 'E', 'p', 'c', 'D', 'd', 'Y', '8', 'N', 'q', 'J', 's', 't', 'K', 'g', 'Z', 'r', 'Q', 'M', 'W', 'h','i','v', 'k', 'X', 'y', 'L', '9');



// Variables globales niveaux d'accès
var NiveauVisiteur='0';
var NiveauLicencie='1';
var NiveauClub='3';
var NiveauLigue='5';
var NiveauFede='7';
var NiveauAdm='9';

var MoisJour=new Array();
 MoisJour['01']='31';
 MoisJour['02']='28';
 MoisJour['03']='31';
 MoisJour['04']='30';
 MoisJour['05']='31';
 MoisJour['06']='30';
 MoisJour['07']='31';
 MoisJour['08']='31';
 MoisJour['09']='30';
 MoisJour['10']='31';
 MoisJour['11']='30';
 MoisJour['12']='31';


var MouseX=0;
var MouseY=0;

var SaveLignePPH = "";
var SaveLignePMO = "";


if (!document.layers && !document.all && !document.getElementById)
   event="chut";  //pour apaiser NN3 et autres antiquites


// Fonction de cryptage
function js_code(sChaine, sPrefix, iLg)
{
  var TMax = tTableCode.length - 1;
  var sTab = sChaine.split("");

  //alert('longueur Chaine : ' + sTab.length);
  //alert('longueur à coder : ' + iLg);
  var sPref = sPrefix.substring((sPrefix.length - 3), sPrefix.length).split("");   // on garde les 3 derniers caractères
  //alert ("sPrefix : " + sPrefix + "; pref utilisé : " + sPref);

  var sChaineCode = new Array();
  var j = 0;
  var OK = true;

  for ( i=0; i < sTab.length; i++ )
  {
      OK = false;

      for ( z=0; z <= TMax && !OK ; z++ )
      {
        if ( sTab[i] == tTableCode[z] )
        {
           sPos = z;
           OK = true;
        }
      }

      if ( ! OK )
         return(false);

      //alert ("position de :" + sTab[i] + ": dans tTableCode :" + sPos);

      if ( j > 2 )
          j = 0;

      iAjout = parseInt(sPref[j]);
      sPos += iAjout + 2;

      if ( sPos > TMax )
          sPos -= TMax;

      j++;

      sChaineCode[i] = tTableCode[sPos];
  }

  // Complément à iLg caractères
  j=sTab.length;

  for ( i=j; i < iLg; i++ )
  {

      sPos = Math.random() * TMax;
      sPos = Math.round(sPos);
      sChaineCode[i] = tTableCode[sPos];
      //alert ('i : ' + i + '; ChaineCode[i] : ' + sChaineCode[i] + '; tTableCode[' + sPos + '] : ' + tTableCode[sPos]);
  }

  //alert("Chaine codée :" + sChaineCode.join(""));

  return(sChaineCode.join(""));


}

function js_decode(sChaine, sPrefix, iLg)
{
  var TMax = tTableCode.length - 1;
  sChaine = sChaine.substring(0, iLg);
  //alert('Chane à décoder : ' + sChaine);
  var sTab = sChaine.split("");

  var sPref = sPrefix.substring((sPrefix.length - 3), sPrefix.length).split("");   // on garde les 3 derniers caractères
  //alert ("sPrefix : " + sPrefix + "; pref utilisé : " + sPref);

  var sChaineDecode = new Array();
  var j = 0;
  var OK = true;

  for ( i=0; i < sTab.length; i++ )
  {
      OK = false;

      for ( z=0; z <= TMax && !OK ; z++ )
      {
        if ( sTab[i] == tTableCode[z] )
        {
           sPos = z;
           OK = true;
        }
      }

      if ( ! OK )
         return(false);

      //alert ("position de :" + sTab[i] + ": dans tTableCode :" + sPos);

      if ( j > 2 )
          j = 0;

      iOte = parseInt(sPref[j]);
      sPos -= iOte;
      sPos -= 2;

      if ( sPos < 0 )
          sPos += TMax;

      j++;

      sChaineDecode[i] = tTableCode[sPos];
  }

  //alert("Chaine décodée :" + sChaineDecode.join(""));

  return(sChaineDecode.join(""));
}


// fonctions de compatibilité avec Mozilla

function objForm (sId, sProp, sValeur)
{
   // fonction destinée à affecter la propriété sProp de l'objet de formulaire dont l'id vaut sId à la valeur sValeur
   // ceci si les 3 paramètres sont renseignés
   // Si seul sId est valorisé, la fonction renvoie l'objet et sa méthode d'accès en fonction du navigateur

   var sObj = dom ? 'document.getElementById(sId)' : ie ? 'document.all[sId]' : 'document.layers[sId]';
   var oObj;

   if ( !sProp )
   {
      return(eval(sObj));
   }
   else
   {
     sObj += "." + sProp + " = '" + sValeur + "';";
     //alert('sObj : ' + sObj);
     eval(sObj);
   }

}


function getMouseXY(event)
{

  if (!event) var event = window.event;

  MouseX = event.clientX + document.body.scrollLeft
  MouseY = event.clientY + document.body.scrollTop

  if (MouseX < 0){MouseX = 0}
  if (MouseY < 0){MouseY = 0}

  return true

}

// fonctions APPLICATIVES

function js_ouvrir_info()
{
  var sOptions  = "status:0;";
  sOptions += "dialogWidth:600px;";
  sOptions += "dialogHeight:500px;";
  sOptions += "scroll:auto;";
  sOptions += "help:0;";
  sOptions += "resizable:0";
 
  var sDate=js_affiche_date( "rdateamj", "" );
  var sHeure=js_affiche_date( "rheure", "" );
  var sDH=sDate + " " + sHeure;

  info=window.showModalDialog( "info_jour.php?DH=" + sDH, "", sOptions );
  //info=window.open( "info_jour.php?DH=" + sDH, "", "" );

}



function js_ClicDroit()
{
  if ( event.button == 2 || event.button == 3 )
  {
      alert("Pour tous renseignements, veuillez nous contacter au Telephone 2969.");
  }
}


function js_controle_date(sFmt, sDate)
{
// Begin
 var sJJ="";
 var sMM="";
 var sAA="";
 var sMaxFev="28";

switch ( sFmt )
  {
    case "JMSA"://jj-mm-AAAA
         sJJ=sDate.substring(0,2);
         sMM=sDate.substring(3,5);
         sAA=sDate.substring(6,10);
         break;

    case "SAMJ"://AAAA-MM-JJ
         sAA=sDate.substring(0,4);
         sMM=sDate.substring(5,7);
         sJJ=sDate.substring(8,10);
         break;

    case "samj"://AAAAMMJJ
         sAA=sDate.substring(0,4);
         sMM=sDate.substring(4,6);
         sJJ=sDate.substring(6,8);
         break;

    default:
         alert('Format de date non prévu ans la fonction de contrôle; demandez une maintenance !');
         return (false);
         break;

  }
  if ( sAA < '1900' || sAA > '2050' )
      return (false);

  if ( sMM < '01' || sMM > '12' )
      return (false);

  if ( sMM == '02' )
  {
      sMaxFev='28';       
      if ( (sAA % 4) == 0  )          //si divisible par 4 
          if ( (sAA % 100) == 0 )     //si divisible par 100
             if ( (sAA % 400) == 0 )  //   si divisible par 400
                sMaxFev='28';         // pas bissextile
             else 
                sMaxFev='29';         // bissextile
          else  
              sMaxFev='29';           // bissextile
      else 
          sMaxFev='28';               // pas bissextile

     if ( sJJ < '01' || sJJ > sMaxFev )
        return (false);
   }
   else
   {
     if ( sJJ < '01' || sJJ > MoisJour[sMM] )
        return (false);
   }
   return (true);
}


function js_conv_date(sDate, sFmt)
{
  //sFmt : int = interne ==> conversion JJ/MM/SSAA en SSAA-MM-JJ
  //sFmt : ext = externe ==> conversion SSAA-MM-JJ en JJ/MM/SSAA
  switch ( sFmt )
  {
     case 'int':
       sJJ=sDate.substring(0,2);
       sMM=sDate.substring(3,5);
       sAA=sDate.substring(6,10);
       return(sAA + '-' + sMM + '-' + sJJ);
       break;

     case 'ext':
       sAA=sDate.substring(0,4);
       sMM=sDate.substring(5,7);
       sJJ=sDate.substring(8,10);
       return(sJJ + '/' + sMM + '/' + sAA);
       break;

     default:
       alert('Format conversion date inconnu : ' + sFmt );
       return (false);
  }
}


function js_affiche_date(sType, dDate)
{
// Begin
var mois=new Array
('Janvier','Fevrier','Mars','Avril','Mai','Juin','Juillet','Aout','Septembre',
'Octobre','Novembre','Decembre');
var jours=new Array
('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
if (dDate != "")
  {
   var time=new Date(dDate);
  }
  else
  {
   var time=new Date();
  }

var valeur;
var lmois=mois[time.getMonth()];
var mm=(time.getMonth() + 1);
var ljour=jours[time.getDay()];
var date=time.getDate();
var heure=time.getHours();
var minutes=time.getMinutes();
var secondes=time.getSeconds();
var year=time.getFullYear();

switch ( sType )
  {
    case "court"://jj-mm-AAAA
         document.write((date < 10) ?'0' + date + "-" : date + "-");
         document.write((mm < 10) ?'0' + mm + "-" : mm + "-");
         document.write(+ year);
         break;
    case "datejma"://jj/mm/AAAA
         document.write((date < 10) ?'0' + date + "/" : date + "/");
         document.write((mm < 10) ?'0' + mm + "/" : mm + "/");
         document.write(+ year);
         break;
    case "rdatejma"://jj/mm/AAAA
         valeur=((date < 10) ?'0' + date + "/" : date + "/");
         valeur=valeur + ((mm < 10) ?'0' + mm + "/" : mm + "/");
         valeur=valeur + year;
         return(valeur);
         break;
    case "long"://libjour dd mois AAAA  hh:mn:ss
         document.write(ljour + " ");
         document.write((date < 10) ?'0' + date + " " : date + " ");
         document.write(lmois + " " + year + "    ");
         document.write( + heure + "h");
         document.write((minutes < 10) ?'0' + minutes + ":" : + minutes + ":");
         document.write((secondes < 10) ?'0' + secondes : + secondes);
         break;
    case "rdateamj"://AAAA-MM-JJ
         valeur=year + '-';
         valeur=valeur + ((mm < 10) ?'0' + mm + "-" : mm + "-");
         valeur=valeur + ((date < 10) ?'0' + date : date );
         return(valeur);
         break;
    case "rdtamj"://AAAAMMJJ
         valeur=year;
         valeur=valeur + ((mm < 10) ?'0' + mm : mm );
         valeur=valeur + ((date < 10) ?'0' + date : date );
         return(valeur);
         break;
    case "rheure"://HH:mn:ss
         valeur=heure + ":";
         valeur=valeur+((minutes < 10) ?'0' + minutes + ":" : + minutes + ":");
         valeur=valeur+((secondes < 10) ?'0' + secondes : + secondes);
         return(valeur);
         break;
    default://dd mois AAAA
         document.write((date < 10) ?'0' + date + " " : date + " ");
         document.write(lmois + " " + year + "    ");
  }
// End 
}


function js_affiche_heure(dDate)
{
// Begin
if (dDate != "")
  {
   var time=new Date(dDate);
  }
  else
  {
   var time=new Date();
  }
var heure=time.getHours();
var minutes=time.getMinutes();
var secondes=time.getSeconds();
document.write(heure + "h");
document.write((minutes < 10) ?'0' + minutes + ":" : + minutes + ":");
document.write((secondes < 10) ?'0' + secondes : + secondes);
// End 
}




function js_close( sPath, nId )
{
  var sOptions  = "status:0;";
  sOptions += "dialogWidth:600px;";
  sOptions += "dialogHeight:500px;";
  sOptions += "scroll:auto;";
  sOptions += "help:0;";
  sOptions += "resizable:0";

  if ( ! nId )
     nId = "";

  deconnexion=window.showModalDialog( sPath+"/close.php?Id_Decon="+nId, "", sOptions );
}

function js_Quitter( sPath, nId )
{

  if ( confirm( "Quitter le site de la F2s?") )
  {
    //js_close( sPath, nId );
    parent.close();
  }

}

function js_ouvrir_aide()
{

    var sOptions  = "status:0;";
    sOptions += "dialogWidth:600px;";
    sOptions += "dialogHeight:450px;";
    sOptions += "scroll:auto;";
    sOptions += "help:0;";
    sOptions += "resizable:0;";
    sOptions += "center:1;";

    aide=window.showModalDialog( "aide.php", "", sOptions );

}

function js_select_personne( oLigne, nblgn, sMajForm, bProfilMAJ )
{
  oForm=FormulairePersonne;

  if ( SaveLignePPH == "" )
      SaveLignePPH = LignePPH.innerHTML;

  if ( SaveLignePMO == "" )
      SaveLignePMO = LignePMO.innerHTML;

  if ( ! bProfilMAJ )
  {
     bProfilMAJ=false;
     FctOnKeyUp = function(){js_boutons_personne( 'M', 'KeyUp' );};
  }

  PageProspects = false;
  if ( oForm.PageOrig.value == "PROSPECTS" )  // pas de données licence
     PageProspects = true;


  for ( i=0; i<nblgn; i++ )
  {
    oLgn = eval( "L" + ( i + 1 ) );
    oLgn.className = 'Liste';
    oLgn.ClassBase = 'Liste';
  }

  oLigneSelectionnee=oLigne;
  oLigne.className='ListeSel';
  oLigne.ClassBase='ListeSel';

  if ( sMajForm != 'N' )
  {
    oForm.IdPersonne.value = oLigne.SavIdPersonne;

    if ( oLigne.SavTypPers == 'P' )
    {
      LignePPH.style.visibility="visible";
      document.getElementById("LignePPH").innerHTML = SaveLignePPH;

      LignePMO.style.visibility="hidden";
      document.getElementById("LignePMO").innerHTML = "";

      oForm.PPH.checked = true;
      oForm.Sexe.value = oLigne.SavSexe;
      oForm.DNais.value = oLigne.SavDNais;
    }
    else
    {
      LignePMO.style.visibility="visible";
      document.getElementById("LignePMO").innerHTML = SaveLignePMO;

      LignePPH.style.visibility="hidden";
      document.getElementById("LignePPH").innerHTML = "";

      oForm.PMO.checked = true;
    }

    oForm.Nom.value = oLigne.SavNom;
    oForm.Prenom.value = oLigne.SavPrenom;
    oForm.Adresse.value = oLigne.SavAdresse;
    oForm.Commune.value = oLigne.SavCommune;
    oForm.CP.value = oLigne.SavCP;

    if ( oLigne.SaveMail1 != "" )
      oForm.eMail.value = oLigne.SaveMail1 + '@' + oLigne.SaveMail2;
    else
      oForm.eMail.value = "";

    //oForm.eMail.value = oLigne.SaveMail;
    oForm.Telephone.value = oLigne.SavTelephone;
    oForm.Fax.value = oLigne.SavFax;
    if ( oLigne.SavDestMailInfo == "O" )
      oForm.DestMailInfo.checked=true;
    else
      oForm.DestMailInfo.checked=false;
    if ( oLigne.SavCoordConf == "O" )
      oForm.CoordConf.checked=true;
    else
      oForm.CoordConf.checked=false;

    if ( ! PageProspects )
    {
      oForm.NLicence.value = oLigne.SavNLicence;
      oForm.Annee.value = oLigne.SavAnnee;
      oForm.IdClub.value = oLigne.SavIdClub;
      oForm.NomClub.value = oLigne.SavNomClub;
      oForm.Hcp.value = oLigne.SavHcp;
    }


    //Gestion Maj Prenom et date de naissance  ==> A revoir quand PPH / PMO

    // ENLEVER LES COMMENTAIRES CI DESSOUS QD TTOUTES LES DATES DE NAISSANCE SERONT OK

    /* if ( oForm.NLicence.value == "" && oForm.MAJAutor.value == "O" && oLigne.SavTypPers == 'P' )
       MajDNais = true;
    if ( oForm.NLicence.value != "" && oForm.MAJAutor.value == "O" )
    {
       // personne licenciée ==> pas de maj possible Prénom et date de naissance
       // Sauf si page orig = LICENCES et MAJTOUT = "O"
       MajDNais = false;
       if ( oForm.PageOrig.value == "LICENCES" && oForm.MAJTOUT.value == "O" )
          MajDNais = true;
    }

    if ( oForm.MAJAutor.value == "O" && oLigne.SavTypPers == 'P')
    {
       if ( MajDNais )
       {
          FctOnKeyUp = function(){js_boutons_personne( 'M', 'KeyUp' );};
          oForm.Prenom.className     = Classl;
          document.getElementById("Prenom").onkeyup    = FctOnKeyUp;
          document.getElementById("Prenom").onblur    = function(){js_complete_email();};
          document.getElementById("Prenom").readOnly   = false;
          oForm.DNais.className      = Classl;
          document.getElementById("DNais").onkeyup     = FctOnKeyUp;
          document.getElementById("DNais").onblur    = function(){js_complete_date(FormulairePersonne.DNais);};
          document.getElementById("DNais").readOnly    = false;
       }
       else
       {
          FctOnKeyUp = "";
          oForm.Prenom.className     = Classld;
          document.getElementById("Prenom").onkeyup    = FctOnKeyUp;
          document.getElementById("Prenom").onblur    = FctOnKeyUp;
          document.getElementById("Prenom").readOnly   = true;
          oForm.DNais.className      = Classld;
          document.getElementById("DNais").onkeyup     = FctOnKeyUp;
          document.getElementById("DNais").onblur     = FctOnKeyUp;
          document.getElementById("DNais").readOnly    = true;
       }
    }  */

    if ( bProfilMAJ )
      js_boutons_personne( "D" );
    else
      js_boutons_personne( "A" );

  }

}

function js_change_typpers(sCas)
{
  oForm = FormulairePersonne;

  if ( oForm.MAJAutor.value != "O" )  // MAJ non autorisée
  {
     if ( oLigneSelectionnee.SavTypPers == 'P' )
        oForm.PPH.checked = true;
     else
        oForm.PMO.checked = true;

     return;
  }

  sPageOrig = oForm.PageOrig.value;

  // En dehors des pages TERRAINS et PROSPECTS ==> PPH UNIQUEMENT
  if ( sPageOrig != "TERRAINS" && sPageOrig != "PROSPECTS" )
  {
     if ( oForm.PMO.checked )
        alert("Vous ne pouvez enregistrer qu'une personne physique dans ce cas !");

     oForm.PPH.checked = true;
     return;
  }

  // Hors cas création et page Prospects, si licencié ==> PPH
  if ( sCas != "N" && sPageOrig != "PROSPECTS" )
  {
     if ( oForm.NLicence.value != "" )
     {
        alert("La personne est licenciée; c'est obligatoirement une personne physique !");

        oForm.PPH.checked = true;
        return;
     }
  }

  // Cas création nouvelle personne
  if ( sCas == "N" )
  {
     if ( oForm.PPH.checked )   // PPH demandée
     {
         LignePPH.style.visibility="visible";
         document.getElementById("LignePPH").innerHTML = SaveLignePPH;

         LignePMO.style.visibility="hidden";
         document.getElementById("LignePMO").innerHTML = "";
     }
     else                       //PMO demandée
     {
         LignePMO.style.visibility="visible";
         document.getElementById("LignePMO").innerHTML = SaveLignePMO;

         LignePPH.style.visibility="hidden";
         document.getElementById("LignePPH").innerHTML = "";
     }
     return;
  }

  // Cas selection personne et MAJ Autorisée  et personne non licenciée
  oLigne = oLigneSelectionnee;
  if ( oForm.PPH.checked )
  {
    LignePPH.style.visibility="visible";
    document.getElementById("LignePPH").innerHTML = SaveLignePPH;

    LignePMO.style.visibility="hidden";
    document.getElementById("LignePMO").innerHTML = "";
  }
  else
  {
    LignePMO.style.visibility="visible";
    document.getElementById("LignePMO").innerHTML = SaveLignePMO;

    LignePPH.style.visibility="hidden";
    document.getElementById("LignePPH").innerHTML = "";
  }

  oForm.Nom.value = oLigne.SavNom;
  oForm.Prenom.value = oLigne.SavPrenom;
  js_boutons_personne( "M" );
  return;
}

function js_recherche_personne()
{
   oForm=FormulairePersonne;
   if ( oForm.PageOrig.value != "PROSPECTS" )
   {
     if ( blanc.test(oForm.SelNom.value) )
       { js_erreur_info ( oForm.SelNom, "Saisissez au moins une partie du nom" );
         return (false);
       }
   }
   oForm.BoutonSel.value='R';
   js_soumet_personne();
}



function js_reset_selection_personne( )
{
   oForm=FormulairePersonne;
   oForm.SelNom.value = "";
   oForm.SelPrenom.value = "";
   oForm.SelTypPers.value = "";
   oForm.SelNom.focus();
}


function js_boutons_personne( sType, sEvt )
{

  oForm=FormulairePersonne;
  PageProspects = false;
  if ( oForm.PageOrig.value == "PROSPECTS" )  // pas de boutons de retour
     PageProspects = true;

  if ( ! sEvt ) sEvt = "";
  
  switch ( sType )
  {
    case "M"://Formulaire Modifié

      if ( sEvt == 'KeyUp' )
      {
        if ( TouchesIgnoree[event.keyCode] == "O" )
        {
          return;
        }
      }

      oForm.Bouton.value="M";
      oForm.fieldsetBtnPersonne.style.visibility="visible";
      BtnNouveau.style.visibility="hidden";
      BtnEnregistrer.style.visibility="visible";
      BtnAnnulerM.style.visibility="visible";
      BtnSupprimer.style.visibility="hidden";
      if ( ! PageProspects )
         oForm.fieldsetBtnRetour.style.visibility="hidden";
      break;

    case "N"://Saisie nouvelle personne
      oForm.fieldsetBtnPersonne.style.visibility="visible";
      BtnNouveau.style.visibility="hidden";
      BtnEnregistrer.style.visibility="visible";
      BtnAnnulerM.style.visibility="visible";
      BtnSupprimer.style.visibility="hidden";
      if ( ! PageProspects )
         oForm.fieldsetBtnRetour.style.visibility="hidden";
      SaveLignePPH = LignePPH.innerHTML;
      SaveLignePMO = LignePMO.innerHTML;
      oForm.PPH.checked = true;
      LignePMO.innerHTML = "";
      break;

    case "D"://cas départ et possible de faire des mises à jour
      oForm.fieldsetBtnPersonne.style.visibility="visible";
      BtnNouveau.style.visibility="visible";
      BtnEnregistrer.style.visibility="hidden";
      BtnAnnulerM.style.visibility="hidden";
      BtnSupprimer.style.visibility="visible";
      if ( ! PageProspects )
         oForm.fieldsetBtnRetour.style.visibility="visible";
      break;

    case "A"://cas départ et MAJ non autorisées
      oForm.fieldsetBtnPersonne.style.visibility="hidden";
      if ( ! PageProspects )
         oForm.fieldsetBtnRetour.style.visibility="visible";
      break;

    default:// ?
      break;
  }

}


function js_pagination_personne(iLDeb)
{
  oForm=FormulairePersonne;
  oForm.Debut.value=iLDeb;
  js_soumet_personne();
}

function js_gere_Mdp( Tabindex )
{
  oForm = FormulaireMesInfos;

  if ( oForm.chkMdp.checked )
  {
      BtnModifMdp.style.visibility = 'visible';

      CelMdp.innerHTML  = 'Mot de passe <input type=password name=Mdp value="" size=7 class=textelt Tabindex=' + Tabindex + '>';
      Tabindex++;
      CelMdp.innerHTML += ' Confirmation <input type=password name=CMdp value="" size=7 class=textelt Tabindex=' + Tabindex + '>';
      alert ('Remplissez les champs Mot de passe et confirmation avec le nouveau mot de passe (3 caractères mini et 8 maxi) et validez.');
      oForm.Mdp.focus();
  }
  else
  {
      BtnModifMdp.style.visibility = 'hidden';
      CelMdp.innerHTML  = '';

  }
}

function js_valid_Mdp()
{
  oForm = FormulaireMesInfos;
  Mdp=oForm.Mdp.value.replace( blanc, "" );
  CMdp=oForm.CMdp.value.replace( blanc, "" );
  if ( Mdp != oForm.Mdp.value )
  { js_erreur_info ( oForm.Mdp, "Le mot de passe ne doit pas comprendre de blanc !" );
         return (false);
  }
  if ( CMdp != oForm.CMdp.value )
  { js_erreur_info ( oForm.CMdp, "Le mot de passe ne doit pas comprendre de blanc !" );
         return (false);
  }

  if ( Mdp.length < 3 || Mdp.length > 8 )
  { js_erreur_info ( oForm.Mdp, "Le mot de passe doit faire entre 3 et 8 caractères." );
         return (false);
  }

  if ( CMdp.length < 3 || CMdp.length > 8 )
  { js_erreur_info ( oForm.CMdp, "Le mot de passe doit faire entre 3 et 8 caractères." );
         return (false);
  }

  if ( Mdp != CMdp )
  {
      oForm.Mdp.value = "";
      oForm.CMdp.value = "";
      js_erreur_info ( oForm.Mdp, "Mot de passe et confirmation doivent être identiques ! recommencez." );
         return (false);
  }

  var sPrefix = js_pref_hash();

  var iLg = Mdp.length;
  var MdPCode = js_code(Mdp, sPrefix, 16);
  if ( !MdPCode )
   {
      oForm.Mdp.value = "";
      oForm.CMdp.value = "";
      js_erreur_info(oForm.Mdp, "Caractères interdits dans le mot de passe (chiffres et lettres (maj / min) autorisés) ! Choisissez en un autre.");
      return(false);
   }

  var saHasher = sPrefix + MdPCode;
  var sHash = js_m2k(saHasher);

  oForm.A.value = sHash;
  oForm.C.value = MdPCode;

  sPrefix += '' + iLg;
  oForm.B.value = sPrefix;
  oForm.Mdp.disabled = true;
  oForm.CMdp.disabled = true;

  oForm.Bouton.value = "Mdp";
  oForm.eMail.disabled = true;  //pour ne pas avoir d'adresse mail sur le réseau
  oForm.submit();

}

function js_mes_scores(CheminPages, NLicence)
{
  var sOptions  = "status:0;";
      sOptions += "dialogWidth:800px;";
      sOptions += "dialogHeight:500px;";
      sOptions += "scroll:auto;";
      sOptions += "help:0;";
      sOptions += "resizable:0;";
      sOptions += "center:1;";

  var sDate=js_affiche_date( "rdateamj", "" );
  var sHeure=js_affiche_date( "rheure", "" );
 
  var Param = 'NLicence='+ NLicence + ';Date=' + sDate + ';Heure=' + sHeure;

  detail_lic=window.showModalDialog( CheminPages + "/HANDICAP/framedetail_competition.php?Param=" + Param, "blank", sOptions );
  //detail_lic=window.open( "framedetail_competition.php?Param=" + Param, "blank", sOptions );

}

function js_init_mes_infos()
{
  oForm=FormulaireMesInfos;

  if ( oForm.eMail1.value != "" )
     oForm.eMail.value = oForm.eMail1.value + '@' + oForm.eMail2.value;
  else
     oForm.eMail.value = "";

  BtnModifMdp.style.visibility = 'hidden';
}


function js_mes_infos( sCheminPages, sTrt )
{
  // sTrt   Modif

  var oForm   = FormulaireMesInfos;

  var sId     = oForm.IdPersonne.value;
  var sNom    = oForm.Nom.value;
  var sPrenom = oForm.Prenom.value;

  //paramètres à passer à la gestion Personne
  var ParamG  = ';PageOrig=MES INFOS;';
  ParamG  += 'SELECTION=UTI';           // + ';MAJAutor=O;BLOCAGE_SEL=O;CREAutor=N';

  var sPrefix = js_pref_hash();

  var saHasher = sPrefix + "MES INFOS" + "UTI";
  var sHash = js_m2k(saHasher);
  var Param = 'Param=A=' + sHash + ';B=' + sPrefix + ParamG;

  var DonneesPersonne="";

  var sOptions  = "status:0;";
  sOptions += "dialogWidth:760px;";
  sOptions += "dialogHeight:500px;";
  sOptions += "scroll:auto;";
  sOptions += "help:0;";
  sOptions += "resizable:0;";
  sOptions += "center:1;";

  
  var PersonneIdentifiee=showModalDialog( sCheminPages + "/frameidentifier_personne.php?" + Param, "blank", sOptions );

  if ( ! PersonneIdentifiee || PersonneIdentifiee == "KO" )
  {
     return;
  }
  else
  {
    //alert("Personne " + PersonneIdentifiee );
    DonneesPersonne          = PersonneIdentifiee.split(";");

    oForm.Nom.value          = DonneesPersonne[0];
    oForm.Prenom.value       = DonneesPersonne[1];
    oForm.DNais.value        = DonneesPersonne[2];
    oForm.Sexe.value         = DonneesPersonne[3];
    oForm.Adresse.value      = DonneesPersonne[4];
    oForm.Commune.value      = DonneesPersonne[5];
    oForm.CP.value           = DonneesPersonne[6];
    oForm.Telephone.value    = DonneesPersonne[7];
    oForm.Fax.value          = DonneesPersonne[8];
    oForm.eMail.value        = DonneesPersonne[9];
    if ( DonneesPersonne[10] == "O" )
        oForm.DestMailInfo.checked = true;
    else
        oForm.DestMailInfo.checked = false;
    if ( DonneesPersonne[11] == "O" )
        oForm.CoordConf.checked = true;
    else
        oForm.CoordConf.checked = false;
  }
  return;

}

function js_retour_identif_personne(sPageOrig)
{
 
  oForm=FormulairePersonne;
  // Pour une nouvelle page Origine ==> Ajouter une valeur page origine pour gérer les données retournées
 
  if ( oForm.Bouton.value == "A" )
  {
    RetourPersonne="KO";
  }
  else
  {
    if ( oForm.MAJAutor.value == "N" || js_valid_personne( sPageOrig, "RETOUR" ) )
    {

      if ( sPageOrig == "COMMISSIONS" )   // traitement identique pour commissions et comités directeurs
         sPageOrig = "COMITE DIRECTEUR";

      switch ( sPageOrig )
      {
        case "UTILISATEURS":
          RetourPersonne  = oForm.IdPersonne.value + ";";
          RetourPersonne += oForm.Nom.value + ";";
          RetourPersonne += oForm.Prenom.value + ";";
          RetourPersonne += oForm.NLicence.value;
          break;

        case "LICENCES":
          RetourPersonne  = oForm.IdPersonne.value + ";";
          RetourPersonne += oForm.Nom.value + ";";
          RetourPersonne += oForm.Prenom.value + ";";
          RetourPersonne += oForm.DNais.value + ";";
          RetourPersonne += oForm.Sexe.value + ";";
          RetourPersonne += oForm.Adresse.value + ";";
          RetourPersonne += oForm.Commune.value + ";";
          RetourPersonne += oForm.CP.value + ";";
          RetourPersonne += oForm.Telephone.value + ";";
          RetourPersonne += oForm.Fax.value + ";";
          RetourPersonne += oForm.eMail.value + ";";
          if ( oForm.DestMailInfo.checked )
             RetourPersonne += "O;";
          else
             RetourPersonne += "N;";
          RetourPersonne += oForm.NLicence.value + ";";
          RetourPersonne += oForm.Hcp.value + ";";
          break;

        case "MES INFOS":
          RetourPersonne =  oForm.Nom.value + ";";
          RetourPersonne += oForm.Prenom.value + ";";
          RetourPersonne += oForm.DNais.value + ";";
          RetourPersonne += oForm.Sexe.value + ";";
          RetourPersonne += oForm.Adresse.value + ";";
          RetourPersonne += oForm.Commune.value + ";";
          RetourPersonne += oForm.CP.value + ";";
          RetourPersonne += oForm.Telephone.value + ";";
          RetourPersonne += oForm.Fax.value + ";";
          RetourPersonne += oForm.eMail.value + ";";
          if ( oForm.DestMailInfo.checked )
             RetourPersonne += "O;";
          else
             RetourPersonne += "N;";
          if ( oForm.CoordConf.checked )
             RetourPersonne += "O;";
          else
             RetourPersonne += "N;";
          break;

        case "TERRAINS":
          RetourPersonne  = oForm.IdPersonne.value + ";";
          if ( oForm.PPH.checked )   // pour type de personne
             RetourPersonne += "P;";
          else
             RetourPersonne += "M;";
          RetourPersonne += oForm.Nom.value + ";";
          RetourPersonne += oForm.Prenom.value + ";";
          RetourPersonne += oForm.Telephone.value + ";";
          RetourPersonne += oForm.Fax.value + ";";
          RetourPersonne += oForm.eMail.value + ";";
          break;

        case "COMITE DIRECTEUR":
          RetourPersonne  = oForm.IdPersonne.value + ";";
          RetourPersonne += oForm.Nom.value + ";";
          RetourPersonne += oForm.Prenom.value + ";";
          RetourPersonne += oForm.Adresse.value + ";";
          RetourPersonne += oForm.CP.value + ";";
          RetourPersonne += oForm.Commune.value + ";";
          RetourPersonne += oForm.Telephone.value + ";";
          //RetourPersonne += oForm.Fax.value + ";";
          RetourPersonne += oForm.eMail.value + ";";
          if ( oForm.DestMailInfo.checked )
             RetourPersonne += "O;";
          else
             RetourPersonne += "N;";
          break;

        default:
          alert ('Page :' + sPageOrig + ': non prévue dans le retour identification personne ');
          RetourPersonne="KO";
      }
    }
    else
    {
       return(false);
    }
  }
   
  retour();

}

function js_complete_email()
{

 oForm=FormulairePersonne;
 var neweMail;

 var specblanc=/[ ]/g;
 var speca=/[à]/g;
 var spece=/[é]|[è]|[ê]|[ë]/g;
 var speco=/[ô]|[ö]/g;
 var specu=/[ù]|[ü]/g;
 var specc=/[ç]/g;
 var specquote=/[\']/g;


 if ( oForm.eMail.value == "" && oForm.IdPersonne.value == "" )
 {
     var toto=oForm.Prenom.value.toLowerCase();
     var titi="";
     titi=toto.replace( speca, "a" );
     toto=titi.replace( spece, "e" );
     titi=toto.replace( specu, "u" );
     toto=titi.replace( speco, "o" );
     titi=toto.replace( specc, "c" );
     toto=titi.replace( specquote, "" );
     titi=toto.replace( specblanc, "-" );
     oForm.eMail.value=titi;
     toto=oForm.Nom.value.toLowerCase();
     titi=toto.replace( speca, "a" );
     toto=titi.replace( spece, "e" );
     titi=toto.replace( specu, "u" );
     toto=titi.replace( speco, "o" );
     titi=toto.replace( specc, "c" );
     sNom=titi;
     toto=titi.replace( specquote, "" );
     titi=toto.replace( specblanc, "" );
     sNomMail=titi;
     oForm.eMail.value+='.'+sNomMail+'@';
   
     oForm.Nom.value=sNom.toUpperCase();
 }


}

function js_complete_date(oDate)
{
  sValDate = oDate.value;
  if ( sValDate.length == 8 )
  {
       sJJ=sValDate.substring(0,2);
       sMM=sValDate.substring(2,4);
       sAA=sValDate.substring(4,8);
       oDate.value = sJJ + '/' + sMM + '/' + sAA;
  }

}


function js_valid_personne(sPageOrig, sCas)
{
  oForm=FormulairePersonne;
  var Licencie = false;

  if ( ! sCas )
     sCas="";

  if ( sPageOrig == "LICENCES" )
     Licencie = true;
  else
  {
     if ( sPageOrig != "PROSPECTS" && sCas != "CRE" )
     {
       if ( oForm.NLicence.value != "" )
          Licencie = true;
     }
  }

// NOM
  if ( oForm.Nom.value == "" || blanc.test(oForm.Nom.value) )
       { js_erreur_info ( oForm.Nom, "Le Nom  est obligatoire" );
         return (false);
       }
  if ( pointvirg.test(oForm.Nom.value) )
     { js_erreur_info ( oForm.Nom, "Point virgule interdit dans le nom" );
       return (false);
     }
  sNom=oForm.Nom.value;
  oForm.Nom.value=sNom.toUpperCase();

// PRENOM
  if ( oForm.PPH.checked && blanc.test(oForm.Prenom.value) )
       { js_erreur_info ( oForm.Prenom, "Le prénom est obligatoire " );
         return (false);
       }
  if ( pointvirg.test(oForm.Prenom.value) )
     {
       if ( oForm.PPH.checked )
         js_erreur_info ( oForm.Prenom, "Point virgule interdit dans le prénom" );
       else
         js_erreur_info ( oForm.Prenom, "Point virgule interdit dans le représentant de la PMO" );
       return (false);
     }

  if ( oForm.PPH.checked )
  {
    // DATE DE NAISSANCE
    if ( oForm.DNais.value != "" )
    {
       if ( oForm.DNais.value.length != 10 || ! js_controle_date('JMSA', oForm.DNais.value ) )
       { js_erreur_info ( oForm.DNais, "Date de naissance invalide (format JJ/MM/SSAA) !" );
         return (false);
       }
    }
    else
    {
       if ( Licencie )
       {
         js_erreur_info ( oForm.DNais, "Date de naissance obligatoire (format JJ/MM/SSAA) !" );
         return (false);
      }
    }

    // SEXE
    if ( oForm.Sexe.value == "" )
    {
        js_erreur_info ( oForm.Sexe, "Choisissez le sexe de la personne !" );
        return (false);
    }
  }


// ADRESSE

   if ( blanc.test(oForm.Adresse.value) )
     { js_erreur_info ( oForm.Adresse, "L'adresse de la personne est obligatoire" );
       return (false);
     }
   if ( pointvirg.test(oForm.Adresse.value) )
     { js_erreur_info ( oForm.Adresse, "Point virgule interdit dans les données adresse" );
       return (false);
     }


   if ( blanc.test(oForm.Commune.value) )
     { js_erreur_info ( oForm.Commune, "La commune de résidence de la personne est obligatoire" );
       return (false);
     }
   if ( pointvirg.test(oForm.Commune.value) )
     { js_erreur_info ( oForm.Commune, "Point virgule interdit dans les données adresse" );
       return (false);
     }

   sVar=oForm.Commune.value;
   oForm.Commune.value=sVar.toUpperCase();

   if ( blanc.test(oForm.CP.value) )
     { js_erreur_info ( oForm.CP, "Le code postal de résidence de la personne est obligatoire" );
       return (false);
     }

  if ( carinterdit.test(oForm.CP.value) )
       { js_erreur_info ( oForm.CP, "Caractère(s) interdit(s) dans le code postal." );
         return (false);
       }


  sTel=oForm.Telephone.value.replace(/ +/g, '');

  if ( sTel.length < 10 && !blanc.test(oForm.Telephone.value) )
       { js_erreur_info ( oForm.Telephone, "Veuillez saisir au moins 10 chiffres pour le N° de téléphone" );
         return (false);
       }

  if ( carinterdit.test(sTel) && !blanc.test(oForm.Telephone.value) )
       { js_erreur_info ( oForm.Telephone, "Caractère(s) interdit(s) dans le numéro de téléphone." );
         return (false);
       }


  sFax=oForm.Fax.value.replace(/ +/g, '');

  if ( sFax.length < 10 && !blanc.test(oForm.Fax.value) )
       { js_erreur_info ( oForm.Fax, "Veuillez saisir au moins 10 chiffres pour le N° de fax" );
         return (false);
       }
  if ( carinterdit.test(sFax) && !blanc.test(oForm.Fax.value) )
       { js_erreur_info ( oForm.Fax, "Caractère(s) interdit(s) dans le numéro de fax." );
         return (false);
       }

  if ( oForm.eMail.value != "" )
  { 
     eMail=oForm.eMail.value.replace( space, "" );
     oForm.eMail.value=eMail;
     if ( ! isEmail(oForm.eMail.value) )
     { 
        js_erreur_info ( oForm.eMail, "La forme de l'adresse eMail est invalide (attendue xxx@yyy.zz)." );
        return (false);
     }
     if ( emailinterdit.test(oForm.eMail.value) )
     { 
        js_erreur_info ( oForm.eMail, "L'adresse eMail contient au moins un caractère invalide !" +
        "\n Autorisé : minuscules non accentuées, chiffres, et -_.@" );
        return (false);
    }
    sMail = oForm.eMail.value.split("@");
    oForm.eMail1.value = sMail[0];
    oForm.eMail2.value = sMail[1];
  }
  else
  {
     oForm.eMail1.value = "";
     oForm.eMail2.value = "";
  }
  
  if ( oForm.DestMailInfo.checked == true && blanc.test(oForm.eMail.value)  )
  { 
    js_erreur_info ( oForm.eMail, "L'adresse eMail est obligatoire si Mail Info est coché !" );
    return (false);
  }

  if ( sCas != "RETOUR" )
  {
    oForm.Bouton.value='E';
    js_soumet_personne();
  }
  return(true);
}

function js_soumet_personne()
{

    oForm=FormulairePersonne;

    // gestion du hashage pour vérification
    var sPrefix = js_pref_hash();
    oForm.B.value = sPrefix;
    var saHasher = sPrefix + oForm.Bouton.value + oForm.PageOrig.value + oForm.SELECTION.value + oForm.IdClub.value;
    saHasher += oForm.IdLigue.value + oForm.IdPersonne.value + oForm.TypeEntite.value + oForm.IdEntite.value + oForm.AnneeTrt.value;

    var sHash = js_m2k(saHasher);
    oForm.A.value = sHash;
    oForm.B.value = sPrefix;

    //alert ('a hasher = ' + saHasher + ': B = ' + oForm.B.value);

    // Test des champs avant intervention pour cas pas de formulaire (0 personnes sélectionnées)
    if ( oForm.eMail )
      oForm.eMail.disabled = true;  //pour ne pas avoir d'adresse mail sur le réseau
    if ( oForm.Prenom )
      oForm.Prenom.disabled=false;
    if ( oForm.PPH && oForm.PPH.checked )
       oForm.DNais.disabled=false;

    if ( oForm.PageOrig.value == "PROSPECTS" )
       oForm.Maj.disabled = true;   // TRES IMPORTANT POUR FONCTIONNEMENT PAGE PROSPECTS


    oForm.submit();
}


function isEmail(s)
{
    var i = 1;
    var sLength = s.length;

    while((i < sLength) && (s.charAt(i) != "@"))
    { i++ }

    if((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    while((i < sLength) && (s.charAt(i) != "."))
    { i++ }

    if((i >= sLength - 2) || (s.charAt(i) != ".")) return false;
    else return true;
}


function js_remplacer( sDans, sQuoi, sPar )
{

  var i;
  var sCar;
  var sChaine = "";

  for ( i=0; i<(sDans.length+1); i++ )
  {
    sCar = sDans.substring( i, i+1 );
    if ( sCar == sQuoi )
    {
      sChaine += sPar;
    }
    else
    {
      sChaine += sCar;
    }
  }

  return sChaine;

}

function js_supprime_personne()
{
 oForm = FormulairePersonne;

 oForm.Bouton.value='S';
 if ( confirm('Voulez vous vraiment supprimer cette personne ?') )
    js_soumet_personne();

  return;
}


function js_confirm(sMessage, oForm)
{
   if ( ! oForm )
      oForm=FormulaireModification;

   if ( confirm( sMessage ) )
   {
       oForm.submit();
       return;
   }
   else
   {
       return (false);
   }
}

function js_erreur_info( Ctrl, Message )
{

   alert ( Message );
   Ctrl.focus();
   return;
}



function js_nbcar_saisi(oObjSaisie, oObjNombre, nNbMax)
{

  if (oObjSaisie.value.length > nNbMax)
  {
    oObjSaisie.value = oObjSaisie.value.substring(0,nNbMax)
    oObjNombre.value = 0
  }
  else
  {
    oObjNombre.value = nNbMax - oObjSaisie.value.length
  }

}

function js_InitInfobulle(sNom, sTaille, sClass)
{

  var sHtml = "";

  if ( !sClass )
     sClass='infobulle';

  sHtml += "<div id=" + sNom + " width=" + sTaille + " class=" + sClass + ">";
  sHtml += "&nbsp;";
  sHtml += "</div>";


  document.write( sHtml );

}


function js_Infobulle( oObj, asTexte )
{

  if( asTexte == "" )
  {
    oObj.style.visibility = "hidden";
    oObj.style.left = 0;
    oObj.style.top = 0;
  }
  else
  {
    oObj.innerHTML = "&nbsp;" + asTexte + "&nbsp;";
    if( MouseX + 10 + oObj.clientWidth >= document.body.clientWidth )
    {
      oObj.style.left = MouseX - oObj.clientWidth - 10;
    }
    else
    {
      oObj.style.left = MouseX + 15
    }
    oObj.style.top = MouseY + 8;
    oObj.style.visibility = "visible";
  }

}


function js_InitInfobulleTable(sNom, sTaille, sClass)
{

  var sHtml = "";

  if ( !sClass )
     sClass='infobulle';

  sHtml += "<table id=" + sNom + " width=" + sTaille + " class=" + sClass + "><tr><td id=td" + sNom + " width="+ sTaille + " class=tdinfobulle>";
  sHtml += "&nbsp;";
  sHtml += "</table>";

  document.write( sHtml );

}


function js_InfobulleTable( oObj, asTexte )
{

  oObjTd = eval("td" + oObj.id);
  if( asTexte == "" )
  {
    oObj.style.visibility = "hidden";
    oObj.style.left = 0;
    oObj.style.top = 0;
  }
  else
  {
    oObjTd.innerHTML = "&nbsp;" + asTexte + "&nbsp;";
    if( MouseX + 10 + oObj.clientWidth >= document.body.clientWidth )
    {
      oObj.style.left = MouseX - oObj.clientWidth - 10;
    }
    else
    {
      oObj.style.left = MouseX + 15
    }
    oObj.style.top = MouseY + 8;
    oObj.style.visibility = "visible";
  }

}


function js_gere_login( sMess, sOk )
{

  if ( sMess != "oui" && sMess != "" )     // modif mot de passe
  {
      Authentification.MotDePasseN1.style.visibility="visible";
      Authentification.MotDePasseN2.style.visibility="visible";
      Authentification.nmdp1.style.visibility="visible";
      Authentification.nmdp2.style.visibility="visible";
      //FormMdp.ChangerMdp.style.visibility="hidden";
      Authentification.MotDePasseN1.focus();
  }
  else
  {
      Authentification.MotDePasseN1.style.visibility="hidden";
      Authentification.MotDePasseN2.style.visibility="hidden";
      Authentification.nmdp1.style.visibility="hidden";
      Authentification.nmdp2.style.visibility="hidden";
      if ( sOk != 'Bon' && sOk != 'KO' && sOk != "" )
      {
        Authentification.MotDePasse.focus();
      }
      if ( sOk == 'KO' || sOk == "" )
      {
         if ( Authentification.Identifiant.value == '')
             Authentification.Identifiant.focus();
         else
             Authentification.MotDePasse.focus();
      }
  }
}



function js_soumet_login( sMess )
{
  oForm = Authentification;
  var sPrefix = js_pref_hash();

  if ( blanc.test(oForm.MotDePasse.value) )
      {
         js_erreur_info(oForm.MotDePasse, "Vous n'avez pas saisi de mot de passe; Saisie obligatoire !");
         return(false);
      }

  if ( sMess == "Modif" )     // Changement de mot de passe ==> MotDePasse a déjà été codé
  {
      if ( blanc.test(oForm.MotDePasseN1.value) )
      {
         js_erreur_info(oForm.MotDePasseN1, "Vous n'avez pas saisi le nouveau mot de passe; Saisie obligatoire !");
         return(false);
      }
      if ( oForm.MotDePasseN1.value != oForm.MotDePasseN2.value )
      {
         oForm.MotDePasseN1.value = "";
         oForm.MotDePasseN2.value = "";
         js_erreur_info(oForm.MotDePasseN1, "Nouveau mot de passe et confirmation non identiques. Recommencez !");
         return(false);
      }
      // Test de taille mini ?


      var N1 = js_code(oForm.MotDePasseN1.value, sPrefix, 16);
      if ( !N1 )
      {
         js_erreur_info(oForm.MotDePasseN1, "Caractères interdit dans le Nouveau mot de passe (chiffres et lettres (maj / min) autorisées !");
         return(false);
      }


      // MdP déjà codé  ==> on décode pour recoder avec le nouveau préfixe
      var MdPCode = oForm.MotDePasse.value;
      var oldPrefix = oForm.B.value
      var iLg = oldPrefix.substr(oldPrefix.length -1, 1);
      oldPrefix = oldPrefix.substring(0, oldPrefix.length -1);

      oForm.MotDePasse.value = js_decode(MdPCode, oldPrefix, iLg);
      //alert ('Mot de passe décodé : ' + oForm.MotDePasse.value);
  }


  var sMotDePasse = oForm.MotDePasse.value;
  iLg = sMotDePasse.length;
  var MdPCode = js_code(sMotDePasse, sPrefix, 16);
  if ( !MdPCode )
   {
      js_erreur_info(oForm.MotDePasse, "Caractères interdits dans le mot de passe (chiffres et lettres (maj / min) autorisées !");
      return(false);
   }


   //alert ('Mot de passe codé : ' + MdPCode);



  var saHasher = sPrefix + MdPCode;
  var sHash = js_m2k(saHasher);

  oForm.A.value = sHash;
  oForm.C.value = MdPCode;

  if ( sMess == "Modif" )
  {
     oForm.D.value = N1;
     iLgN1 = oForm.MotDePasseN1.value.length;
     sPrefix += '' + iLgN1

     oForm.MotDePasseN1.disabled = true;
     oForm.MotDePasseN2.disabled = true;
  }

  sPrefix += '' + iLg;

  oForm.B.value = sPrefix;
  oForm.MotDePasse.disabled = true;

  oForm.submit();

}

function js_select_dans_liste( oListe, Valeur )
{
 
    FS=oListe;
    for ( j=0; j<FS.length; j++ )
    {
       FS.options[j].selected = false;
    }

    for ( j=0; j<FS.length; j++ )
    {
       if ( Valeur == FS.options[j].value )
       {
          FS.options[j].selected = true;
       }
    }
}

function js_reinit_liste( oL )     // remise à vide d'un objet liste
{
    Nb1=oL.options.length;

    // mise à vide de la liste
    for ( i=(Nb1 - 1); i>=0; i-- )
    {
      oL.options[i]=null;
    }
}

// Alimentation liste à partir d'une autre liste et d'une table javascript
function js_liste_vers_liste( oFormOri, oFormCible, oListeJS, bOptionVide )
{

   // oFormOri : liste déroulante de formulaire (selection simple ou multiple)
   // oFormCible : : liste déroulante de formulaire (selection simple ou multiple)
   // oListeJs : liste javascript  à deux dimensions
               // la premiere contient la liste de valeur (champs appelés obligatoirement LId et LLib) de la première liste
               // la seconde contient les valeurs de la seconde liste liées au premier niveau (memes noms de champ)
   // bOptionVide : Ajout d'une option '' en tête de liste; true ou false; false par défaut

   if ( !bOptionVide)
       bOptionVide = false;
    
    FC=oFormCible;
    NbC=FC.options.length;
    FO=oFormOri;
    LJS=oListeJS;

    // mise à vide de la liste cible
    js_reinit_liste( FC );

    // si aucune valeur n'est sélectionnée dans la liste origine, on sort
    if (FO.value == "" )
       return;

    k=0;
    if ( bOptionVide )
    {
       o=new Option('', '');
       FC.options[k]=o;
       k++;
    }

    for ( i=0; i<LJS.length; i++ )   // recherche Region
    {
      for ( z=0; z<FO.length; z++ )
      {

         if ( ( LJS[i]['LId'] == FO.options[z].value ) && FO.options[z].selected )   // Region trouvée
         {
             for ( j=1; j<LJS[i].length; j++ )
             {
                 o=new Option(LJS[i][j]['LLib'], LJS[i][j]['LId']);
                 FC.options[k]=o;
                 k++;
             }
         }
     }
  }
}

function js_liste_Select( oFormListe, oListeJS )
{
    FS=oFormListe;
    LJS=oListeJS;

    // Deselection de tous les elements de la liste
    for ( j=0; j<FS.length; j++ )
    {
       FS.options[j].selected = false;
    }
    // Selection du ou des éléments
    for ( i=0; i<LJS.length; i++ )
    {
       for ( j=0; j<FS.length; j++ )
       {
          if ( LJS[i] == FS.options[j].value )
          {
             FS.options[j].selected = true;
          }
       }
    }
}

function js_liste_select_all( oL )     // Selection de tous les éléments de la liste
{
    Nb1=oL.options.length;

    // mise à vide de la liste
    for ( i=0; i<Nb1; i++ )
    {
      oL.options[i].selected = true;
    }
}


function js_Print()
{
  window.print();
  /* parent.frames["DETAIL"].window.focus();  ancienne version avec frames
  parent.frames["DETAIL"].window.print(); */
}

// FONCTIONS DE HASHAGE

function js_pref_hash()    // pour obtenir le prefixe de hashage
{
  var oD = new Date;
  var pref = oD.getTime().toString();   // date en millisecondes depuis 01/01/1970
  //var sPrefix = pref.substring((pref.length - 10), pref.length);   // on garde les 10 derniers caractères
  var sPrefix = pref;
  return(sPrefix);
}

function js_m2k_c(i,s,sl)
{
    d=new Array(64);
    e=s.charCodeAt(i);
    t=353+e+sl;
    t=(t%2==0)?t+33:t;
    u=33+i;
    for(n=0;n<64;n++) d[n]=t%(n+u);
    return d;
}
function js_m2k(s)
{
    k=new Array(32);
    c=new Array(32);
    sl=s.length;
    s=s+s.substr(0,1);
    a=js_m2k_c(0,s,sl);
    for(n=0;n<32;n++) k[n]=0;
    for(i=0;i<sl;i++)
    {
        b=js_m2k_c(i+1,s,sl);
        for(n=0;n<32;n++)
        {
            c[n]=a[n]*b[(n+i+32)%32+32];
            k[n]+=c[n];
        }
        a=b;
    }
    var h='';
    for(n=0;n<32;n++) h+=(k[n]%16).toString(16);
    return h;
}

function test_nom_fic_valide(sNom, iLgLimite)
{
    iPos = sNom.lastIndexOf("\\");
    nPos = sNom.lastIndexOf("/");

    if ( iPos > nPos )
       nPos = iPos;

    nPos++;     // pour ignorer le séparateur trouvé

    sNomCourt = sNom.substr(nPos, (sNom.length - nPos) );

    if ( sNomCourt.length > iLgLimite )
    {
      alert( "Le nom de votre fichier (" + sNomCourt + ") est trop long (> " + iLgLimite + " caractères). Réduisez le !" );
      return (false);
    }


    // contrôle présence caractères spéciaux
     if ( nomficinterdit.test(sNomCourt) )
     {
       alert( "Le nom de votre fichier (" + sNomCourt + ") contient des caractères interdits (accents, virgule, point-virgule,µ,$,£,+,=,:,%,&,@,ç parenthèses ...)." );
       return (false);
     }

   return (true);
}