/**
 * Toolkit permettant de gerer des cookies et d'y ajouter des parametres.
 * Author : Karim El-gargati.
 */


// Duree de vie du cookie
var timeToKeep = 31104000;
var expires = new Date();
expires.setTime(expires.getTime() + timeToKeep * 1000);


// Permet de creer un cookie
function setCookie(name, value) {
	document.cookie = name + '=' + value + '; expires=' + expires.toGMTString() + '; path=/';
}


// Permet de recuperer le contenu d'un cookie
function getCookie(name) {
	var dcookie = document.cookie; 
	var cname = name + "="; 
	var clen = dcookie.length; 
	var cbegin = 0; 
	while (cbegin < clen) {
		var vbegin = cbegin + cname.length;
		if (dcookie.substring(cbegin, vbegin) == cname) {
			var vend = dcookie.indexOf (";", vbegin); 
			if (vend == -1) 
				vend = clen; 
			return unescape(dcookie.substring(vbegin, vend));
		}

		cbegin = dcookie.indexOf(" ", cbegin) + 1; 
		if (cbegin == 0) 
			break;
	}

	return null;
}


// Permet de supprimer un cookie
function delCookie(name) {
	document.cookie = name + '=' + '; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/';
}


// Permet de recuperer sous forme de tableau les parametres contenus dans un cookie
function getArray(name, ary) {
	var ent = getCookie(name); 
	if (ent) {
		i = 1; 
		while (ent.indexOf(';') != '-1') {
			ary[i] = ent.substring(0,ent.indexOf(';')); 
			i++;
			ent = ent.substring(ent.indexOf(';')+1, ent.length);
		}
	}
}


// Permet de sauvegarder dans un cookie les parametres contenus dans un tableau
function setArray(name, ary) {
	var value = '';
	var sep = '';
	for (var i = 1; ary[i]; i++) {
		value += sep + ary[i];
		sep = ';';
	}
	
	setCookie(name, value);
}


// Permet de modifier la valeur d'un parametre contenu dans le cookie
function setCookieParam(name, p_name, p_value) {
	var ary = new Array(null);
	getArray(name, ary);
	for (var i = 1; ary[i]; i++) {
		if (ary[i].substring(0,ary[i].indexOf(':')) == p_name)
			break;
	}
	
	ary[i] = p_name + ":" + p_value;
	setArray(name, ary);
}
