// Management of cookies in Javascript

/*****************************************************************

Exemple#1 
EcrireCookie("dejavenu", "oui");
 
• Le cookie dejavenu prend la valeur "oui".
• Aucune date d'expiration n'étant spécifiée, il expirera à la fin de la session en cours du navigateur.
• Son chemin d'accès, non spécifié, est celui de la page HTML qui l'écrit.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).  
 


Exemple#2
date=new Date;
date.setMonth(date.getMonth()+1);
EcrireCookie("motdepasse", password, date);
 
• Le cookie motdepasse prend la valeur de la variable password initialisée plus haut dans le script (par exemple saisie dans un formulaire).
• Il a une validité d'un mois. A noter l'utilisation de la variable date, qui après initialisation se voit attribuée sa valeur actuelle plus un mois, grâce aux fonctions getMonth() et setMonth(). C'est la fonction EcrireCookie qui se charge de sa conversion au format GMT.
• Son chemin d'accès, non spécifié, est celui de la page HTML qui l'écrit.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).  
 


Exemple#3
date=new Date;
date.setFullYear(date.getFullYear()+10);
EcrireCookie("nombredevisites", 1, date, "/");
 
• Le cookie nombredevisites prend la valeur 1.
• Il a une validité de 10 ans. Comme pour le script précédent, la variable date se voit attribuée sa valeur actuelle plus 10 ans, grâce aux fonctions getFullYear() et setFullYear().
• Son chemin d'accès est la racine du site. Il sera donc accessible depuis toutes les pages du sites, quels que soient leurs répertoires.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).  
 

Exemple#4 
date=new Date;
date.setDate(date.getDate()+2);
EcrireCookie("enchere", bid, date, null, null, true);
 
• Le cookie enchere prend la valeur de la variable bid initialisée plus haut dans le script (par exemple saisie dans un formulaire).
• Il a une validité de 2 jours. Comme pour les 2 scripts précédents, la variable date se voit attribuée sa valeur actuelle plus 2 jours, grâce aux fonctions getDate() et setDate().
• Son chemin d'accès étant spécifié à null, il prend sa valeur par défaut, c'est à dire celui de la page HTML qui l'écrit.
• Son domaine de validité étant spécifié à null, il prend sa valeur par défaut, c'est à dire celui de la page HTML qui l'écrit.
• Secure étant positionné à la valeur true, le cookie est n'accessible que par une connexion sécurisée (HTTPS).  
 
*************************************************************************/

function getCookieVal(offset)
{
   var endstr=document.cookie.indexOf (";", offset);
   if (endstr==-1) endstr=document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function lireCookie(nom)
{
   var arg=nom+"=";
   var alen=arg.length;
   var clen=document.cookie.length;
   var i=0;
   while (i<clen)
   {
      var j=i+alen;
      if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
      i=document.cookie.indexOf(" ",i)+1;
      if (i==0) break;
   }
   return null;
}

function writeCookie(name, value)
{
   var argv=writeCookie.arguments;
   var argc=writeCookie.arguments.length;
   var expires=(argc > 2) ? argv[2] : null;
   var path=(argc > 3) ? argv[3] : null;
   var domain=(argc > 4) ? argv[4] : null;
   var secure=(argc > 5) ? argv[5] : false;
   document.cookie=name+"="+escape(value)+
      ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
      ((path==null) ? "" : ("; path="+path))+
      ((domain==null) ? "" : ("; domain="+domain))+
      ((secure==true) ? "; secure" : "");
}

function EraseCookie(nom)
{
   date=new Date;
   date.setFullYear(date.getFullYear()-1);
   writeCookie(nom,null,date);
}

