/**
 * Objet de gestion de Cookie Imaginance.
 * @author : Julien Fredon @ imaginance
 *
 * Utilisation : 
 * 	var oCookieExemple	=	new iCookie('identification'); // Déclaration d'un cookie nommé identification
 * 	oCookieExemple->SetLifespan(100); 		// Définition de la durée de vie du cookie à 100 jours (valeur par défaut : 31)
 * 	oCookieExemple->Set('Hello World'); 	// Écriture du cookie avec la valeur "Hello world" sur le poste de l'internaute.
 * 	oCookieExemple->Get(); 					// Récupération de la valeur du cookie.
 *  oCookieExemple->Debug(); 				// Affiche les informations du cookie.
 * 	oCookieExemple->Delete(); 				// Suppression du cookie.
 */
var iCookie	=	function(cookieName)
{
	// Propriétés du cookie.
	this.name			=	cookieName;
	this.value			=	"";
	this.path			=	"/";
	this.expirationDate	=	"";

	this.Constructor	=	function()
	{
		// Initialisation de la durée de vie par défaut.
		this.SetLifespan(31);
	}

	// Création du cookie avec une valeur.
	this.Set	=	function(cookieValue)
	{
		this.value		=	cookieValue;
		document.cookie	=	this.name + "=" + escape(this.value) + "; expires=" + this.expirationDate.toGMTString() + "; path=" + this.path;
	}

	// Récupération de la valeur d'un cookie.
	this.Get	=	function()
	{
		var cookieStart	=	document.cookie.indexOf(this.name + "=");

		if (cookieStart == -1)
		{
	    	var cookieValue	=	null;
		}
		else
		{
			var valueStart	=	cookieStart + this.name.length + 1
			var valueStop	=	(document.cookie.indexOf(";", valueStart) != -1) ? document.cookie.indexOf(";", valueStart) : document.cookie.length ;
			var cookieValue	=	document.cookie.substring(valueStart, valueStop);
			cookieValue		=	unescape(cookieValue);
		}
		this.value		=	 cookieValue;
		return this.value;
	}

	// Suppression d'un cookie.
	this.Delete	=	function()
	{
        var cookieStart	=	document.cookie.indexOf(this.name + "=");
		if (cookieStart != -1)
        {
		    document.cookie = this.name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/";
        }
	}

	// Initialisation de la date durée de vie (en jour) du cookie.
	this.SetLifespan	=	function(daysNumber)
	{
		var expirationDate	=	new Date();
		expirationDate.setTime(expirationDate.getTime() + (1000 * 3600 * 24 * daysNumber));
		this.expirationDate	=	expirationDate;
	}

	// Méthode de débugage.
	this.Debug	=	function()
	{
		alert("cookie name : " + this.name + "\n" 
				+ "Valeur : " + this.Get() + "\n" 
				+ "Date d'expiration : " + this.expirationDate + "\n" 
				+ "Chemin : " + this.path);
	}

	// Appel la méthode contructeur
	return this.Constructor();
}