// Cette librairie contient des fonctions utilitaires universelles JavaScript et Dhtml
// Note : les paramètres cités entre crochets [] dans la description des fonctions 
// sont des paramètres optionnels


function AjouterLigneControle (Ctrl, TexteLigne, ValeurLigne, SelectionnerLigne, IndexLigne) {
/****************************************************************************
* Cette sous-routine sert à ajouter une ligne dans le contrôle donné en     *
* paramètre (listbox ou combobox).                                          *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le controle combobox ou listbox   *
* - TexteLigne                Chaine      Le texte qui apparaitra sur la    *
*                                         ligne	                            *
* - ValeurLigne               Chaine      Valeur mise dans l'attribut Value *
*                                         de la ligne                       *
* - SelectionnerLigne         Booléen     Vrai si la ligne sera sélectionnée*
* - [IndexLigne]              Entier      Position où sera ajoutée la ligne *
*                                         à l'intérieur du contrôle         *
*                                         Par défaut, la ligne est ajoutée à*
*                                         la suite des autres lignes        *
****************************************************************************/

if (IndexLigne != null) {
   Index = IndexLigne
}
else {
   Index = Ctrl.length
}

Ctrl.options[Index] = new Option(TexteLigne, ValeurLigne, false, SelectionnerLigne)
}


function EnleverLigneControle (Ctrl, IndexLigne) {
/****************************************************************************
* Cette sous-routine sert à enlever une ou plusieurs lignes dans le controle*
* donné en paramètre (listbox ou combobox).                                 *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le ctrl combobox ou listbox       *
* - [IndexLigne]              Entier      Position où se trouve la ligne à  *
*                                         enlever. Par défaut toutes les    *
*                                         lignes sélectionnées sont effacées*
****************************************************************************/

if (IndexLigne != null) {
   Ctrl.options[IndexLigne] = null
}
else {
   for (i = Ctrl.length - 1; i >= 0; i--) {
      if (Ctrl.options[i].selected) {
         Ctrl.options[i] = null
      }
   }
}
}


function AfficherControle (Ctrl, Afficher) {
/****************************************************************************
* Cette sous-routine sert à afficher/cacher le contrôle donné               *
* en paramètre.                                                             *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le controle à afficher ou cacher  *
* - Afficher                  Booléen     Vrai si on affiche le ctrl        *
****************************************************************************/

if (Afficher) {
   Ctrl.style.display = ""
}
else {
   Ctrl.style.display = "none"
}
}


function ActiverControle (Ctrl, Activer, ValeurParDefaut) {
/****************************************************************************
* Cette sous-routine sert à activer/désactiver le contrôle donné en         *
* paramètre et lui donner le focus, et optionnellement une valeur par défaut*
* peut être mis sur le contrôle qui est activé.                             *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le ctrl à activer ou désactiver   *
* - Activer                   Booléen     Vrai si on active le ctrl         *
* - [ValeurParDefaut]         Chaine      Valeur à donner à l'attribut Value*
*                                         du ctrl                           *
****************************************************************************/
Ctrl.disabled = !Activer

if (ValeurParDefaut != null) {
   Ctrl.value = ValeurParDefaut
}

if (Activer) {

   // Si le contrôle est activé
   Ctrl.focus()
}
}


function CocherControle (Ctrl, Cocher) {
/****************************************************************************
* Cette sous-routine sert à cocher/décocher le contrôle donné               *
* en paramètre (checkbox).                                                  *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le controle à cocher ou décocher  *
* - Cocher                    Booléen     Vrai si on coche le ctrl          *
****************************************************************************/
Ctrl.checked = Cocher
}


function ChiffreValide (EventObject, Langue) {
/****************************************************************************
* Cette fonction sert à s'assurer que le caractère passé en paramètre est   *
* valide. S'il ne l'est pas un msg est donné à l'usager.                    *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - EventObject               Événement   L'événement correspondant au      *
*                                         keyPress d'un ctrl textbox        *
*                                                                           *
* Valeur de retour :                                                        *
*   Nom                       Type        Description                       *
*                                                                           *
* - ChiffreValide             Booléen     Vrai si le caractère reçu est un  *
*                                         chiffre ou le caractère Effacer   *
*                                         ou Retour de chariot              *
****************************************************************************/
var Valide = EstChiffre (EventObject)

if (!Valide) {
   // Si le chiffre entré n'est pas valide

   if (Langue == 0) { // msg 01
      Msg = "Le caractère entré est invalide."
   }
   else {
      Msg = "Invalid character."
   }

   //window.alert(Msg)
}

return Valide
}


function EstChiffre (EventObject) {
/****************************************************************************
* Cette fonction sert à s'assurer que le caractère entré dans un textbox    *
* donné est uniquement un chiffre. La fonction renvoie vrai si le caractère *
* est valide, faux sinon.                                                   *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - EventObject               Événement   L'événement correspondant au      *
*                                         keyPress d'un ctrl textbox        *
*                                                                           *
* Valeur de retour :                                                        *
*   Nom                       Type        Description                       *
*                                                                           *
* - EstChiffre                Booléen     Vrai si le caractère reçu est un  *
*                                         chiffre ou le caractère Effacer   *
*                                         ou Retour de chariot              *
****************************************************************************/
var Valide = true
var Caractere = String.fromCharCode(EventObject.keyCode)

if (Caractere.charCodeAt(0) != 8) {
   // Si le caractère entré n'est pas Effacer ou Retour de chariot

   if (Caractere < "0" || Caractere > "9") {
      Valide = false
   }
}

return Valide
}
function ValidDecimal(EventObject)
{
var Valide = true
var Caractere = String.fromCharCode(EventObject.keyCode)

if (Caractere.charCodeAt(0) != 8) {
   // Si le caractère entré n'est pas Effacer ou Retour de chariot

   if ((Caractere < "0" || Caractere > "9") && Caractere !="." ) {
      Valide = false
   }
}

return Valide
}
function ObtenirNomFichier (CheminFichier) {
/****************************************************************************
* Cette fonction sert à extraire le nom du fichier contenu dans le chemin   *
* donné en paramètre. Elle renvoie une chaine contenant le nom du fichier.  *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - CheminFichier             Chaine      Le chemin du fichier              *
*                                         ex: C:\Andrew\Detail\Tr.txt       *
*                                                                           *
* Valeur de retour :                                                        *
*   Nom                       Type        Description                       *
*                                                                           *
* - ObtenirNomFichier         Chaine      Le nom du fichier                 *
****************************************************************************/
var LongueurChaine = CheminFichier.length
var NomFichier
var Position = CheminFichier.lastIndexOf("\\", LongueurChaine - 1)

if (Position == -1) {
   Position = CheminFichier.lastIndexOf("/", LongueurChaine - 1)

   if (Position == -1) {
      Position = CheminFichier.lastIndexOf(":", LongueurChaine - 1)
   }
}

NomFichier = CheminFichier.substring(Position + 1, LongueurChaine)

return NomFichier
}


function ValiderCourriel (Ctrl, Langue) {
/****************************************************************************
* Cette sous-routine sert à s'assurer que le courriel passé en paramètre est*
* valide. S'il ne l'est pas un msg est donné à l'usager.                    *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Ctrl                      Contrôle    Le ctrl qui contient l'adresse    *
*                                         courriel                          *
****************************************************************************/

if (!CourrielValide (Ctrl.value)) {
   if (Langue == 0) { // msg 02
      Msg = "L'adresse Internet est invalide.\nVérifiez et corrigez l'adresse."
   }
   else {
      Msg = "The Internet address is invalid. Verify and correct the address."
   }

   window.alert(Msg)

   Ctrl.focus()
}
}


function CourrielValide (Courriel) {
/****************************************************************************
* Cette fonction renvoie vrai si l'adresse courriel donnée en paramètre est *
* valide.                                                                   *
*                                                                           *
* Paramètres :                                                              *
*   Nom                       Type        Description                       *
*                                                                           *
* - Courriel                  Chaine      L'adresse courriel à valider      *
*                                                                           *
* Valeur de retour :                                                        *
*   Nom                       Type        Description                       *
*                                                                           *
* - CourrielValide            Booléen     Vrai si l'adresse courriel est    *
*                                         valide, faux sinon.               *
****************************************************************************/
var Valide = true

// RAPPEL : METTRE UNE REG_EXPRESSION POUR VALIDER LES @ ET ETC.

if (Courriel.indexOf("@", 0) == -1) {
   Valide = false
}

return Valide
}
