/******************************************************************************\
 * fichier cookie.class.js
 *
 * @author Camille Descombes
 * @version 1.0
 * @since 1.0
 *
 * Lecture écriture et suppression de cookies
 * Requiert Prototype 1.6.0
 *
\******************************************************************************/

// Si l'objet de base n'est pas définit, on l'initialise
if (typeof(IWN) == 'undefined') IWN = {};

// Création de la classe
Cookie = Class.create(
{
  initialize: function(nom)
  {
    if (!nom.length) throw 'Pas de nom spécifié pour le cookie';
    this.nom = nom;
  },

  // Ecrit dans le cookie la valeur passée en paramètre
  write: function(valeur, expires, path, domain, secure)
  {
    var expires = expires || new Date();
    
    // Pour les coordonnées, les données sont conservées 24h
    if (this.nom == 'Coordonnees')
      expires.setTime(new Date().getTime() + 24 * 60 * 60 * 1000);
    else
      expires.setTime(new Date().getTime()
        + (typeof(IWN.sessionTime) != 'undefined' ? IWN.sessionTime : 20) * 60 * 1000);

  	document.cookie = this.nom + "=" + escape(valeur)
      + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()))
      + ((path    == null) ? "" : ("; path="    + path))
      + ((domain  == null) ? "" : ("; domain="  + domain))
      + ((secure  == true) ? "; secure" : "");
  },

  // Retourne la valeur du cookie
  read: function()
  {
  	var arg  = this.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)
  		{
  			var offset = j;
  			var endstr = document.cookie.indexOf (";", offset);
  			if (endstr == -1) endstr = document.cookie.length;
  			return unescape(document.cookie.substring(offset, endstr));
  		}
  		i = document.cookie.indexOf(' ',i) + 1;
  		if (!i) break;
  	}
  	return null;
  },

  // Retourne la valeur du cookie sous forme d'objet
  evalJSON: function(retour,debug)
  {
    if (!isset(retour)) retour = null;
    var c = this.read(this.nom);
    if (debug) alert('load='+c);
    if (is_null(c) || !c.isJSON()) return retour;
    return c.evalJSON(true);
  },

  // Supprime le cookie
  remove: function()
  {
  	document.cookie = this.nom + '=;';
  }
});



/* FONCTIONS STATIQUES */

Cookie.read = function(nom)
{
  var c = new Cookie(nom);
  return c.read();
}
Cookie.write = function(nom, valeur, expires, path, domain, secure)
{
  var c = new Cookie(nom);
  return c.write(valeur, expires, path, domain, secure);
}
Cookie.evalJSON = function(nom,retour)
{
  var c = new Cookie(nom);
  return c.evalJSON(retour);
}
Cookie.remove = function(nom)
{
  var c = new Cookie(nom);
  return c.remove();
}

