/**
  * Crée un cookie associé au topic spécifié et contenant l'id de post indiqué. Si le cookie existe déjà, l'id est ajouté à la liste. 
  * Le cookie défini expire à la fin de la session.
  * 
  * @param topic_id id du topic considéré.
  * @param post_id id du post à ajouter à la liste pour ce topic.
  * @param cookie_prefix préfixe du cookie (défini dans le panneau d'admin de phpBB).
  */
function cookiePostAdd(topic_id, post_id, cookie_prefix) 
{
	var cookie_name = cookie_prefix + "_multiquote_" + topic_id;
	var cookie_index = cookieIndex(cookie_name);
	// Si le cookie n'existe pas, on le met en place.
	if(cookie_index == -1)
	{
		document.cookie = cookie_name + "=" + escape("|" + post_id + "|");
	}
	// Sinon, on ajoute l'id à la liste déjà définie.
	else
	{
		// Détermination de la nouvelle valeur.
		var cookie_value = cookieValue(cookie_index, cookie_name);
		cookie_value += "|" + post_id + "|";
		// Placement de la valeur.
		document.cookie = cookie_name + "=" + escape(cookie_value);
	}
	
	// Masquage du bouton d'ajout.
	var add_post = document.getElementById("quote_add_" + post_id);
	if (document.all) { add_post.setAttribute("className","display_none"); }
	add_post.setAttribute("class","display_none");
	
	// Démasquage du bouton de retrait.
	var remove_post = document.getElementById("quote_remove_" + post_id);
	if (document.all) { remove_post.setAttribute("className","display_inline"); }
	remove_post.setAttribute("class","display_inline");
}

/**
  * Retire le post considéré de la liste pour ce topic. 
  * 
  * @param topic_id id du topic considéré.
  * @param post_id id du post à ajouter à la liste pour ce topic.
  * @param cookie_prefix préfixe du cookie (défini dans le panneau d'admin de phpBB).
  */
function cookiePostRemove(topic_id, post_id, cookie_prefix) 
{
	var cookie_name = cookie_prefix + "_multiquote_" + topic_id;
	var cookie_index = cookieIndex(cookie_name);
	// On n'a quelque chose à faire que si le cookie existe.
	if(cookie_index != -1)
	{
		// Détermination de la nouvelle valeur.
		var cookie_value = cookieValue(cookie_index, cookie_name);
		cookie_value = cookie_value.replace("|" + post_id + "|", "");
		// Placement de la valeur.
		document.cookie = cookie_name + "=" + escape(cookie_value);
	}
	
	// Démasquage du bouton d'ajout.
	var add_post = document.getElementById("quote_add_" + post_id);
	if (document.all) { add_post.setAttribute("className","display_inline"); }
	add_post.setAttribute("class","display_inline");
	
	// Masquage du bouton de retrait.
	var remove_post = document.getElementById("quote_remove_" + post_id);
	if (document.all) { remove_post.setAttribute("className","display_none"); }
	remove_post.setAttribute("class","display_none");
}
  
/**
  * Recherche l'indice d'un cookie.
  *
  * @param cookie_name nom du cookie à rechercher.
  * @return l'indice du cookie correspondant ou -1 si le topic n'existe pas.
  */
function cookieIndex(cookie_name)
{
	// On ne teste que s'il existe au moins un cookie.
	if(document.cookie.length > 0) 
	{ 
		offset = document.cookie.indexOf(cookie_name);
		// Si le cookie recherché existe, on renvoie sin indice.
		if(offset != -1) 
		{ 
			return offset;
		}
		// Sinon, on retourne -1.
		else 
		{ 
			return -1;
		}
    }
}

/**
  * Récupère la valeu d'un cookie.
  *
  * @param cookie_index indice du cookie à rechercher (récupéré via la fonction cookieIndex).
  * @param cookie_name nom du cookie à rechercher.
  * @return la valeur du cookie.
  */
function cookieValue(cookie_index, cookie_name)
{
	// On ne teste que s'il existe au moins un cookie et si le cookie demandé existe.
	if((document.cookie.length > 0) && (cookie_index != -1))
	{ 
		// Détermination de la position de début de la valeur du cookie.
		start = cookie_index + cookie_name.length + 1;
		// Détermination de la position de la fin de la valeur du cookie.
		end = document.cookie.indexOf(";", start);
		if(end == -1)
		{
			end = document.cookie.length
		}
		// Retour de la valeur du cookie.
		return unescape(document.cookie.substring(start, end));
	}
}