//**************************************************************************************
// Fichier : common.js
// Version : 1.00
// Desc.   : Bibliothèque de fonction Javascript
//**************************************************************************************

/*******************************************************************************************
Fonction pour la gestion des champs IMAGE
********************************************************************************************/
function f_vdZoom(zoomfile, imagefile)
{
        var hauteur= screen.height-100;
        var largeur= screen.width-100;

        var top=(screen.height-hauteur)/2;
        var left=(screen.width-largeur)/2;

        window.open(zoomfile+'?pic='+imagefile,'ZOOM','scrollbars=yes,top='+top+',left='+left+',width='+largeur+',height='+hauteur+',resizable=yes,location=no');
}


/*******************************************************************************************
Fonctions relatives à la gestion des tableaux de liste
********************************************************************************************/

// Fonction qui coche ou décoche toute les cases de selection de la liste
function f_list_toggle_all ()
{
        checked = document.form.chkSelectAll.checked

        len = document.form.elements.length;
        var i = 0;
        for(i = 0; i < len; i++)
        {
                if (document.form.elements[i].name == 'chkSel[]')
                        document.form.elements[i].checked = checked;
        }
}

// Test si la liste est vide
function f_list_is_empty ()
{
        len = document.form.elements.length;

        for(i = 0; i < len; i++) {
                if ((document.form.elements[i].name == 'chkSel[]') && document.form.elements[i].checked)
                {
                       return false;
                }
        }
        return true;
}

// Efface les éléments sélectionnez de la liste
function f_list_delete ()
{
    if (f_list_is_empty())
         alert ('Veuillez sélectionner les lignes à supprimer.');
    else
    {
         bnOk = window.confirm ('Etes-vous certain de vouloir supprimer la ou les lignes sélectionnée(s) ?');
         if (bnOk)
            document.form.submit();
    }
}


/*******************************************************************************************
Fonctions de controle des champs de saisie des formulaires
********************************************************************************************/

// controle la validité de la date saisie
function f_bnCheckDate(cDate, stField)
{
    stDate = cDate.value;

    if (stDate == '')
        return 1;

    var amin=1900;  // année mini
    var amax=2060;  // année maxi
    var separateur='-'; // separateur entre jour/mois/annee
    var j=(stDate.substring(0,2));
    var m=(stDate.substring(3,5));
    var a=(stDate.substring(6));
    var ok=1;
    var stMsg = 'La date que vous avez entrée pour le champs '+stField+' est invalide. Veuillez utiliser le format Jour-mois-année (EX : 28-01-2004)';
    if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) )
    {
        alert(stMsg); ok=0;
    }
    if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) )
    {
        alert(stMsg); ok=0;
    }
    if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) )
    {
        alert(stMsg); ok=0;
    }
    if ( ((stDate.substring(2,3)!=separateur)||(stDate.substring(5,6)!=separateur)) && (ok==1) )
    {
        alert(stMsg); ok=0;
    }

    return ok;
}

//vérifie si la chaine envoyée est de type e-mail
function f_bnCheckMail (mail)
{
      if (mail == '')
          return true;

      if ((mail.indexOf("@")>=0)&&(mail.indexOf(".")>=0)) {
         return true
      } else {
         return false
      }
}

//vérifie si la chaine envoyée correspond à une URL valide
function f_bnCheckUrl (mail)
{
      if (mail == '')
          return true;

      if (mail.indexOf("www.")>=0) {
         return true
      } else {
         return false
      }
}


function f_bnInteger (sText)
//vérifie si la chaine envoyée est de type entier positif
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function f_bnTelephone (sText)
//vérifie si la chaine envoyée est un numéro de téléphone
{
   var ValidChars = "0123456789().-+ ";
   var IsTel=true;
   var Char;

   for (i = 0; i < sText.length && IsTel == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsTel = false;
         }
      }
   return IsTel;
}

function f_bnCodePostal (sText)
//vérifie si la chaine envoyée est un numéro de code postal
{
   var ValidChars = "0123456789";
   var IsCP=true;
   var Char;

   if (sText.length != 5)
       return false;

   for (i = 0; i < sText.length && IsCP == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsCP = false;
         }
      }
   return IsCP;
}


function f_bnUnsignedFloat (sText)
//vérifie si la chaine envoyée est de type démale positif
{
   var ValidChars = "0123456789,.";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function f_bnDecimal (sText, m, d, s)
// vérifie si le nombre saisi est un nombre positif avec maximum m de précision
// dont d pour la parie décimale
{
   var ValidChars = "0123456789,.";
   var IsNumber=true;
   var Char;
   var mm = 0;
   var dd = 0;
   var VirgulePassee = false;

   for (i = 0; i < sText.length && IsNumber == true; i++)
   {
      Char = sText.charAt(i);
      if ((Char ==',') || (Char =='.'))
      {
            if (sText.length-i > d+1)
             return (false);
         VirgulePassee = true;
      }
      if (!VirgulePassee)
           mm = mm + 1;
      else
           dd = dd + 1;
      if (ValidChars.indexOf(Char) == -1)
      {
         return (false);
      }
   }

   if (mm + d <= m)
      return true;
   else
      return false;
}