/**
 * composant qui met en place un système "tout cocher / tout décocher" sur un ensemble de cases à cocher
 * contenues dans un élément xhtml
 * @param {Object} idRoot id de l'élement dans lequel sont contenues les cases à cocher
 * @param {Object} bouton élément qui déclenche le "cochage/décochage"
 */
function CheckList(idRoot,bouton)
	{
	this.id=idRoot;
	// la racine
	this.root=document.getElementById(idRoot);
	// rec
	this.checkBoxes=null;
	this.idBouton=bouton;
	this.bouton=document.getElementById(bouton);	
	this.setListe();
	// spécifier les réactions aux clics
	this.setBehaviour();
	}
	
CheckList.prototype.constructor=CheckList;

CheckList.prototype.extend({
setListe:function() {
	Element.cleanWhiteSpace(this.root);
	this.checkBoxes=this.root.getElementsByTagName("input");
	},
setBehaviour:function()	{
	var checkList=this;
	if (this.bouton.parentNode.style)
		{
			this.bouton.parentNode.style.display="block";
		}
	else if(this.bouton.style)
		{
			this.bouton.style.display="block";
		}
	if (this.bouton.type=="checkbox")
		{
			this.bouton.checked=false;
		}
	this.bouton.onclick=function(){
	for (i=0;i<checkList.checkBoxes.length;i++)
				{
		//TODO il ne faut pas cocher des éléments masqués
		// tester si checkList.checkboxes[i].style.display!='none'
					if ((checkList.checkBoxes[i].getAttribute("type")=="checkbox")
					&&(checkList.checkBoxes[i].id!=checkList.idBouton)
					&&(checkList.checkBoxes[i].parentNode.style.display!='none')
					)
					{
						checkList.checkBoxes[i].checked=(checkList.bouton.checked)?true:false;
					}			
	}	
	};
}
});

