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

/*******************************************************************************************
Fonction pour la gestion des champs IMAGE
********************************************************************************************/
function zoomImage(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 selectAll (formName)
{
        checked = document.forms[formName].elements['chkSelAll'].checked;

        len = document.forms[formName].elements.length;
        for(i=0; i < len; i++) {
            if ((document.forms[formName].elements[i].type == 'checkbox') &&
                (document.forms[formName].elements[i].name != 'chkSelAll'))
                    document.forms[formName].elements[i].checked = checked;
        }
}

// Ask confirmation before deleting an element in a list
function confirmDelete (formName)
{
    flag = false;
    len = document.forms[formName].elements.length;
    for(i = 0; i < len; i++) {
            if ((document.forms[formName].elements[i].type == 'checkbox') &&
                 document.forms[formName].elements[i].checked) {
                   flag = true;
            }
    }

    if (flag == false) {
        alert ("Vous devez sélectionner un élément à supprimer.");
        return false;
    }

    return  window.confirm ('Etes-vous certain de vouloir supprimer le ou les élément(s) sélectionnée(s) ?');

}


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

// controle la validité de la date saisie
function isDate(d)
{
    if (d == '')
        return true;

    var amin=1900;  // année mini
    var amax=2060;  // année maxi
    var separateur='-'; // separateur entre jour/mois/annee
    var j=(d.substring(0,2));
    var m=(d.substring(3,5));
    var a=(d.substring(6));
    var ok=true;
    if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==true) )  {
        ok = false;
    }
    if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==true) )  {
        ok = false;
    }
    if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==true) )  {
        ok = false;
    }
    if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==true) )   {
        ok = false;
    }

    return ok;
}



//vérifie si la chaine envoyée est de type e-mail
function isMail (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 isUrl (mail)
{
      if (mail == '')
          return true;

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


function isInteger (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 isPhone (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 isPostalCode  (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=='')
       return true;

   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 isUnsignedFloat (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 isDecimal (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 ==',')
      {
            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;
}
