jQuery.fn.selectToggle = function() 
{
    var o = $(this);
	o.each(
		function() 
		{
			var title = $(this).find('.title');
			var checkboxes = $(this).find('.checkbox');
			var select = $(this).find('.select');
			function initSelect() 
			{
				if(getChecks() == false) 
				{
					setLabel('select');
				} 
				else 
				{
					setLabel('deselect');
				}
			};
			function setLabel(e, i) 
			{
				if(e == 'select') 
				{
					$(select).text('Tout sélectionner').removeClass('deselect');
					return true;
				}
				else if (e == 'deselect') 
				{
					$(select).text('Tout désélectionner').addClass('deselect');
					return true;
				}
				else
				{
					return false;
				}
			};
			function setChecks(e)
			{
				if(e == 'uncheck')
				{
					checkboxes.removeAttr('checked');
					return true;
				}
				else if(e == 'check')
				{
					checkboxes.attr('checked', 'checked');
					return true;
				}
				else
				{
					return false;
				}
			}
			function getChecks() 
			{
				var r;
				checkboxes.each(
					function()
					{
						if(!$(this).attr('checked'))
						{
							r = false;
						}
					}
				);
				if(r == false) 
				{
					return false;
				}
				else
				{
					return true;
				}
			}
			title.bind('click', 
				function ()
				{
					$(this).next('.content').slideToggle();
					$(this).parent('.toggle').toggleClass('close');
				}
			);
			select.bind('click',
				function () 
				{
					if($(this).hasClass('deselect')) 
					{
						setLabel('select');
						setChecks('uncheck');
					}
					else
					{
						setLabel('deselect');
						setChecks('check');
					}
				}
			);
			checkboxes.each(
				function()
				{
					$(this).bind('click', 
						function ()
						{
							initSelect();
						}
					);
				}
			);
			initSelect();
		}
	);
}
