	// specific method for reading / writing a flexFairePart cookie
	var separator = ["*","|"];// separate reference to instanceID and couples between them 
	var cookieName = "flex";
	var cookieDuration = 6;// in month
	
	
	function setFairePartValue(reference, instanceID)
	{	
		if (reference != "" && instanceID != "")
		{
			setValue(separator[0] + reference + separator[1] + instanceID);
		}		
	}
	
	function setValue(value)
	{	
		var refTab  = [];
		var instTab = [];		
		var cookieContent = readCookie(cookieName);
		if (cookieContent == null)
		{
			cookieContent = "";
		}
		cookieContent = value + cookieContent;
		// suppression des doublons de référence : écrasement de l'ancien instanceID
		var tempTab = cookieContent.split(separator[0]);				
		for (var i = 0 ; i < tempTab.length ; i++)
		{
			tempTab2 = tempTab[i].split(separator[1]);
			ref = tempTab2[0];
			instanceID = tempTab2[1];
			if (ref != "" && !refTab.inArray(ref))
			{
				refTab.push(ref);
				instTab.push(instanceID);
			}
		}	
		var valueToSet = "";			
		for (var i = 0 ; i < refTab.length ; i++)
		{
			valueToSet += separator[0] + refTab[i] + separator[1] + instTab[i];
		}
		date = new Date();
		date.setMonth(date.getMonth() + cookieDuration);		
		writeCookie(cookieName, valueToSet, date);
	}
	
	function countFaireParts()
	{
		var cookieContent = readCookie(cookieName);
		if (cookieContent == null)
		{
			cookieContent = "";
		}
		var tempTab = cookieContent.split(separator[0]);				
		return tempTab.length - 1;
	}
	
	// generics method for reading / writing cookies
	function getCookieVal(offset)
	{
		var endstr = document.cookie.indexOf (";", offset);
		if (endstr == -1) 
		{
			endstr = document.cookie.length;
		}
		return unescape(document.cookie.substring(offset, endstr));
	}
	
	function readCookie(name)
	{
		var arg = name + "=";
		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)
			{
				return getCookieVal(j);
			}
			i = document.cookie.indexOf(" ",i)+1;
			if (i == 0)
			{
				break;
			}		
		}
		return null;
	}
	
	function writeCookie(name, value)
	{		
			var argv = writeCookie.arguments;
			var argc = writeCookie.arguments.length;		
			var expires = (argc > 2) ? argv[2] : null;
			var path 	= (argc > 3) ? argv[3] : null;
			var domain 	= (argc > 4) ? argv[4] : null;
			var secure 	= (argc > 5) ? argv[5] : false;
			document.cookie =  name + "=" + escape( value ) +
					((expires == null)? ""  : ("; expires=" + expires.toGMTString()))+
					((path == null)   ? ""  : ("; path=" + path))+
					((domain == null) ? ""  : ("; domain=" + domain))+
					((secure == false)? ""  :  "; secure");	
	}
	
	Array.prototype.inArray = function(testValue){
		for (var i = 0 ; i < this.length ; i++)
		{
			if (testValue == this[i])
			{
				return true;
			}
		}
		return false;
	}