/* ------------------------------------------------------ */// Fnt Caddie// Using : Class_Cookie.js// Caddie.js v1.2 : JScript File// Auteur : Frédéric REMISE / EXPONENSE.COM// Créé le : 04/09/2006// Modifié le : 12/09/2006// v1.1	: Gestion des checkbox TOUTSELECTIONNER et //		  TOUTDESELECTIONNER.// v1.2 : Généricité des fonctions./* ------------------------------------------------------ *///**** Le caddie stocke 2 informations : la liste des articles sélectionnés et le nbre total d'articles contenus par le caddie. ***//********************************************************************************************************************************//********************************************************************************************************************************// Déclaration des variablesvar cookieName = "CaddiePhotos";			// Nom du cookievar cookieExpiration = 1440 ;					// Expiration du cookie en heure (24x60=1440)var cbxArticleName = "cbxPhoto";			// Valeur de l'attribut 'NAME' pour les cases à cocher de marchandisevar cbxControlName = "cbxCMD";				// Valeur de l'attribut 'NAME' pour les cases à cocher de commandevar cbxSelectCommandId = "select";			// Valeur de l'attribut 'ID' pour la case à cocher de commande : Tout sélectionnervar cbxUnselectCommandId = "unselect";		// Valeur de l'attribut 'ID' pour la case à cocher de commande : Tout désélectionner// ------------------------------ FONCTION SPECIFIQUE AU CONTEXT ------------------------------// Ecrit le nbre de photos stockées dans la frame Headerfunction writeQuantity(){	if(Caddie.total == null) var quantity = 0; else var quantity = Caddie.total;	// parent.frames[1].document.getElementById('label_QtePhotos').innerHTML = quantity; document.getElementById('label_QtePhotos').innerHTML = quantity;  // pour site sans frame	};// -----------------------------------------------------------------------------------//********************************************************************************************************************************//********************************************************************************************************************************// Déclarer le Caddievar Caddie = new Cookie(document, cookieName, cookieExpiration, '/');// Gérer l'arrivé sur une page de marchandises (lecture du cookie et activation des cases)function InitCaddie(){	if(LoadCaddie())	{		// Vérifie si un des éléments CheckBox correspond à une marchandise stocké dans le cookie		// et si c'est le cas, active la case à cocher des images correspondantes.		for(var i=0;i<getCheckboxs(cbxArticleName).length;i++)		{			for(var ii=0;ii<ParseArticles().length;ii++)				if(getCheckboxsValues(cbxArticleName,i) == ParseArticles()[ii])					setCheckboxsStatus(cbxArticleName,i,true);		};	};	// ------------------------------ SPECIFIQUE AU CONTEXT ------------------------------	writeQuantity();	// -----------------------------------------------------------------------------------	try {		manageControlsState();	}	catch(e) {		//Nothing	}};/*window.onload = function(){	InitCaddie();};*/function CaddieManager(args){	// Cette fonction attend 2 arguments :	// - Soit 2 arguments qui auront pour valeur respectives : ID de la checkbox commande cochée 	// et la commande soit selectAll (tout selectionner) soit unselectAll (tout déselectionner)	// - Soit 2 arguments qui auront pour valeur respectives : ID de la checkbox marchandise cochée ou décochée 	// et ID (ou référence) de la marchandise à ajouter ou supprimer.		// Vérifier le nbre d'arguments (paramètres) de la fonction et les analyser	//var expectedArgs = arguments.callee.length;	var realArgs = arguments.length;	if(realArgs == 2 && arguments[1] != 'selectAll' && arguments[1] != 'unselectAll')	{		 var idElement = arguments[0]		 var idMarchandise = arguments[1]		 var command = 'single';	}	else if(realArgs == 2 && (arguments[1] == 'selectAll' || arguments[1] == 'unselectAll'))	{		var idElement = arguments[0];				var command = arguments[1];	}	else	{		var error = "La fonction CaddieManager() attend 2 paramètres !\n";		error += "Les 2 paramètres spécifiés doivent respectivement correspondre à :\n";		error += "Soit à l'ID de la checkbox marchandise cochée ou décochée et à l'ID (ou référence) de la marchandise à ajouter ou supprimer";		error += "Soit à l'ID de la checkbox commande cochée et à 'selectAll' ou 'unselectAll'.";		throw new Error(error);	}		switch (command)	{		case 'single' :			// Ajouter image & incrémenter la propriété total sinon Supprimer image			// (checked=True => ajouter 1a marchandise ou checked=False => supprimer 1a marchandise)			if(getCheckboxStatus(idElement)) AddToCaddie(idMarchandise); else RemoveToCaddie(idMarchandise);						// Vérifier si toutes les marchandises sont sélectionnées ou déselectionnée et, désactiver et cocher la case commande correspondante			try {				manageControlsState();			}			catch (e) {				//Nothing			}						// ------------------------------ SPECIFIQUE AU CONTEXT ------------------------------			writeQuantity();			// -----------------------------------------------------------------------------------						break;		case 'selectAll' :			// Décocher et activer la case tout déselectionner,				// et désactiver la case tout sélectionner			reverseCheckboxsControls(cbxControlName,idElement);						// Pour toutes lec Checkboxs marchandises,			for(var i=0;i<getCheckboxs(cbxArticleName).length;i++)			{				// vérifier que la case soit décochée,				if(!getCheckboxsStatus(cbxArticleName,i))				{					// si c'est le cas, la cocher,					setCheckboxsStatus(cbxArticleName,i,true);					// et stocker la marchandise dans le Caddie.					AddToCaddie(getCheckboxsValues(cbxArticleName,i)); 										// ------------------------------ SPECIFIQUE AU CONTEXT ------------------------------					writeQuantity();					// -----------------------------------------------------------------------------------				};			};						break;		case 'unselectAll' :			// Décocher et activer la case tout sélectionner,			// et désactiver la case tout désélectionner			reverseCheckboxsControls(cbxControlName,idElement);						// Pour toutes lec Checkboxs marchandises,			for(var i=0;i<getCheckboxs(cbxArticleName).length;i++)			{				// vérifier que la case soit cochée,				if(getCheckboxsStatus(cbxArticleName,i))				{					// si c'est le cas, la décocher,					setCheckboxsStatus(cbxArticleName,i,false);					// et supprimer la marchandise du Caddie.					RemoveToCaddie(getCheckboxsValues(cbxArticleName,i)); 										// ------------------------------ SPECIFIQUE AU CONTEXT ------------------------------					writeQuantity();					// -----------------------------------------------------------------------------------				};			};						break;		default :			var error = "La fonction CaddieManager() attend 2 paramètres !\n";			error += "Les 2 paramètres spécifiés doivent respectivement correspondre à :\n";			error += "Soit à l'ID de la checkbox marchandise cochée ou décochée et à l'ID (ou référence) de la marchandise à ajouter ou supprimer";			error += "Soit à l'ID de la checkbox commande cochée et à 'selectAll' ou 'unselectAll'.";			throw new Error(error);			break;	};};// Méthodes pour la gestion du CADDIE marchandises// -----------------------------------------------------------------function AddToCaddie(article){	if(!LoadCaddie())	{		Caddie.articles = article;		Caddie.total = 1;		isExist = true;	}	else	{		Caddie.articles += '&' + article;		Caddie.total++;	};		// Enregistrer le Caddie dans le Cookie	Caddie.setCookie();};function RemoveToCaddie(article){	// Parser la propriété photos du Cookie	var value = ParseArticles();	// Cherche l'élément à supprimer	for(var i=0; i<value.length; i++)	{		if(value[i] == article) var start = i;	};	// Supprime l'image	value.splice(start,1);	// Assembler la nouvelle chaine photos et l'attribut à la propriété photos	Caddie.articles = value.join('&');	// Décrémente la propriété total	Caddie.total--;		// Si total = 0 alors Supprimer le Caddie => Cookie	// sinon Enregistrer le Caddie dans le Cookie	if(Caddie.total != 0) Caddie.setCookie(); else Caddie.removeCookie();};function LoadCaddie(){	// Vérifier l'éxistance du Caddie (donc du Cookie) et le lire	if(!Caddie.getCookie()) var isExist = false; else var isExist = true;	return isExist;};function ParseArticles(){	// Parser la propriété Photos du Cookie	var articlesArray = Caddie.articles.split('&');	return articlesArray;};// Méthodes pour la gestion des éléments de la page// -----------------------------------------------------------------function IsAllArticlesOfPageSelected(name){	// Vérifie si toutes les marchandises de la page active sont sélectionnées.	var nbr = 0;	for(var i=0;i<getCheckboxs(name).length;i++)	{		if(getCheckboxsStatus(name,i)) nbr++; 	};	if(getCheckboxs(name).length == nbr) return true; else return false;};function IsAllArticlesOfPageUnSelected(name){	// Vérifie si toutes les marchandises de la page active sont déselectionnée.	var nbr = 0;	for(var i=0;i<getCheckboxs(name).length;i++)	{		if(!getCheckboxsStatus(name,i)) nbr++; 	};	if(getCheckboxs(name).length == nbr) return true; else return false;};// Méthodes pour la gestion de la collection CHECKBOXS marchandises// -----------------------------------------------------------------// Renvoie la collection des cases à cocher correspondants aux articles à stocker ou déstocker en Caddie par leur attribut name.function getCheckboxs(name){ return document.getElementsByName(name); };// Renvoie la valeur de l'attribut value des case à cocher correspondants aux articles à stocker ou déstocker en Caddie.function getCheckboxsValues(name,item){ return getCheckboxs(name).item(item).getAttribute('value'); };// Renvoie l'ID d'une case à cocher correspondants à un article à stocker ou déstocker en Caddie.function getCheckboxsID(name,item){ return getCheckboxs(name).item(item).getAttribute('id'); };// Renvoie le statut d'une case à cocher : TRUE => cochée - FALSE => Décochée.function getCheckboxsStatus(name,item){ return document.getElementById(getCheckboxsID(name,item)).checked; };// Modifie le statut d'une case à cocher : checked = TRUE ou checked = FALSE.function setCheckboxsStatus(name,item,status){ document.getElementById(getCheckboxsID(name,item)).checked = status; };// Méthodes pour la gestion unitaire d'une CHECKBOX// -----------------------------------------------------------------// Renvoie le statut d'une case à cocher : TRUE => cochée - FALSE => Décochée.function getCheckboxStatus(id){ return document.getElementById(id).checked; };// Modifie le statut d'une case à cocher : TRUE => cochée - FALSE => Décochée.function setCheckboxStatus(id,status){ document.getElementById(id).checked = status; };// Modifie l'état d'une case à cocher : TRUE => désactivée - FALSE => activée.function setCheckboxState(id,state){ document.getElementById(id).disabled = state; };// Méthodes pour la gestion des CHECKBOX de commande// -----------------------------------------------------------------// Inverse le status et l'état des cases à cocher de type commandes (slect et unselect)function reverseCheckboxsControls(name,id){	// Décocher et activer la case de la commande 1,	for(var i=0;i<getCheckboxs(name).length;i++)	{		if(getCheckboxsID(name,i) != id)		{			setCheckboxState(getCheckboxsID(name,i),false);			setCheckboxStatus(getCheckboxsID(name,i),false);		};	};	// cocher et désactiver la case de la commande 2	setCheckboxState(id,true);	setCheckboxStatus(id,true);};function manageControlsState(){	// Vérifier si toutes les marchandises sont sélectionnées ou déselectionnée et, désactiver et cocher la case commande correspondante	if(IsAllArticlesOfPageSelected(cbxArticleName)) reverseCheckboxsControls(cbxControlName,cbxSelectCommandId); else	if(IsAllArticlesOfPageUnSelected(cbxArticleName)) reverseCheckboxsControls(cbxControlName,cbxUnselectCommandId); else {		setCheckboxStatus(cbxSelectCommandId,false);		setCheckboxState(cbxSelectCommandId,false);		setCheckboxStatus(cbxUnselectCommandId,false);		setCheckboxState(cbxUnselectCommandId,false);	};};