//Permet de recuperer la valeur d un cookie
function getCookie(nom_cookie_demande)
{

    var liste_cookies = document.cookie.split( ';' );
	var cookie_temp = '';
	var nom_cookie = '';
	var valeur_cookie = '';
	var cookie_trouve = false; 
	
	for ( i = 0; i < liste_cookies.length; i++ )
	{
		cookie_temp = liste_cookies[i].split( '=' );
		nom_cookie = cookie_temp[0].replace(/^\s+|\s+$/g, '');
		if ( nom_cookie_demande == nom_cookie )
		{
			cookie_trouve = true;
			if ( cookie_temp.length > 1 )
			{
				valeur_cookie = unescape(liste_cookies[i].replace(/^\s+|\s+$/g, '') );
				valeur_cookie = valeur_cookie.substring(nom_cookie.length + 1)				
			}
			return valeur_cookie;
			break;
		}
		cookie_temp = null;
		cookie_name = '';
	}
	if ( !cookie_trouve )
	{
		return null;
	}
}

//Permet de mettre a jour la valeur d un cookie
function setCookie(nom_cookie_demande, cle_demande, valeur_demande)
{
    var liste_cookies = document.cookie.split( ';' );
	var cookie_temp = '';
	var cles_valeurs_temp = '';
	var cle_valeur = '';
	var cle = '';
	var nom_cookie = '';
	var valeur_cookie = '';
	var cookie_trouve = false; 
	var cle_trouve = false;
	var nouvelle_Cle_Valeur = '';
	
	for ( i = 0; i < liste_cookies.length; i++ )
	{
		cookie_temp = liste_cookies[i].split( '=' );
		nom_cookie = cookie_temp[0].replace(/^\s+|\s+$/g, ''); //trim whitespace
		if ( nom_cookie_demande == nom_cookie )
		{
			cookie_trouve = true;
			if ( cookie_temp.length > 1 ) //on verifie si notre tableau a plus de un element
			{
				valeur_cookie = unescape(liste_cookies[i].replace(/^\s+|\s+$/g, '') );
				valeur_cookie = valeur_cookie.substring(nom_cookie.length + 1);//la valeur_cookie contient maintenant un format cle=X&cle2=Y&cle3=Z		
			}
						
			cles_valeurs_temp = valeur_cookie.split('&');//on va chercher les divers ensembles cle valeur
			for ( j = 0; j < cles_valeurs_temp.length; j++ )
			{
			    cle_valeur = cles_valeurs_temp[j].split('=');
			    cle = cle_valeur[0].replace(/^\s+|\s+$/g, ''); //trim whitespace
			    if(cle == cle_demande)
			    {   
			        cle_trouve = true;
			        nouvelle_Cle_Valeur = cle + '=' + valeur_demande;
			        valeur_cookie = valeur_cookie.replace(cles_valeurs_temp[j],nouvelle_Cle_Valeur);
			        document.cookie = nom_cookie_demande + "=" + valeur_cookie;   //on met a jour le cookie
			        return true;
			    }			    
			}	
			if(!cle_trouve)
			{
			    //si la clee n est pas trouvee mais que le cookie existe et a des valeurs
			    document.cookie = nom_cookie_demande + "=" + valeur_cookie + '&' + cle_demande + '=' + valeur_demande;   //on met a jour le cookie
			    return true;
			}	
		}		
	}
	
	if(!cookie_trouve){
	    //le cookie est inexistant
	    AjouterCookieOuRemplacerCleSpecifique(nom_cookie_demande, cle_demande, valeur_demande);   //on cree le cookie
	    return true;
	}
	return false;		
}

//Retire une pair cle/valeur de la string provenant du cookie (aa=bb&cc=dd&...)
function RetirerCleStringCookie(cleARetirer, stringCookie)
{
    var positionCle = stringCookie.indexOf(cleARetirer);
    var positionProchainEperluette = stringCookie.indexOf("&", positionCle);
    if (positionProchainEperluette != -1)
    {
        var cleEtValeur = stringCookie.substring(positionCle,positionProchainEperluette);
		
    }
    else
    {
        var cleEtValeur = stringCookie.substring(positionCle);
	}
    stringCookie = stringCookie.replace(cleEtValeur,"");
	return stringCookie;
}

/*
Function qui ajoute un cookie donne ou ecrase celui-ci si il est present.

entre : nom du cookie a creer
        nom de la cle demande
        nom de la valeur de la cle
retour: retourne vrai si la fonction enregistre le cookie, retourne false si la fonctionne n'enregistre rien.
*/
function AjouterCookieOuRemplacerCleSpecifique( nom_cookie_demande, cle_demande, valeur_demande ) 
{
	var valeur_cookie = '';
	var cookie_enregistre = false;
	
	valeur_cookie = cle_demande + '=' + valeur_demande;
	document.cookie = nom_cookie_demande + "=" +  valeur_cookie ;			
	cookie_enregistre = true;

	return cookie_enregistre;
}

/*
Function qui ajoute un cookie donne ou ecrase celui-ci si il est present.

entre : nom du cookie a creer
        nom de la valeur de la cle
retour: retourne vrai si la fonction enregistre le cookie, retourne false si la fonctionne n'enregistre rien.
*/
function AjouterCookieOuRemplacer( nom_cookie_demande, valeur_demande_cookie ) 
{
	document.cookie = nom_cookie_demande + "=" + valeur_demande_cookie;			
}
