//javascript document

$(document).ready(function()
{
	//Click sur une nomenclature pour visionner son contenu (navigation dans la nomencl)
	$("ul.nomenclatures li span.nom-nomenclature").live('click', function()
	{
		var elemParent = $(this).parents('li').first();
		//On récupère les infos sur le niveau
		//var objDecoupe = decouperTextClassCrochets(elemParent.attr('class'));
		//Si le niveau inférieur est déjà affiché, on le masque //(supprime)
		if (elemParent.children('ul').length > 0)
		{
			if (elemParent.children('ul').is(':visible'))
			{
				elemParent.children('ul').hide();
			}
			else
			{
				elemParent.children('ul').show();
			}
		}
		//else
		//{
			//charger_navigation_nomenclatures(elemParent, objDecoupe['id'],  objDecoupe['niveau'], $(elemParent).children('input:checkbox').is(':checked'));
		//}
		//alert("idListe : " + objDecoupe['id'] + "\nniveau : " + objDecoupe['niveau']);
	});
	
	
	//Click sur une case	/!\	après le click
	$("ul.nomenclatures li input[type='checkbox']").live('click', function()
	{
		var elemListe = $(this).parents('li').first();
		//Si la case est cochée et qu'on ne fait pas une recherche texte
		if ($(this).is(":checked") && !elemListe.hasClass('recherche-texte'))
		{
			//On vérifie pour chaque parent si tous ses enfants sont cochés
			var elemParent = elemListe.parents('li').first();	//On récupère l'élement parent
			while (elemParent != undefined && elemParent != null && elemParent.length > 0)
			{
				//Si le nombre de cases cochées vaut le nombre d'enfants (tous les enfants sont cochés)
				if (elemParent.children('ul').children('li').children('input:checked').length == elemParent.children('ul').children('li').length)
				{
					elemParent.children('input[type="checkbox"]').attr('checked', 'checked');	//On coche ce parent
				}
				elemParent = elemParent.parents('li').first();	//On récupère à nouveau le parent de ce parent pour modifier le tant que
			}
		}
		else if (!$(this).is(":checked"))	//Sinon si la case n'est pas cochée
		{
			if ($(this).parents('li.pre-ajout').find('input:checked').length == 0)	//Si le parent de la case cochée possède la case pre-ajout et qu'aucun de ses enfants est coché, on retire la classe pre-ajout
				$(this).parents('li.pre-ajout').removeClass('pre-ajout');
		}
	});
	//Click sur une case de sélection	/!\	avant le click en lui même (l'action n'est donc toujours pas effectuée)
	$("ul.nomenclatures li input[type='checkbox']").live('mousedown', function()
	{
		var elemListe = $(this).parents('li').first();
		//Si la case est cochée (et qu'on la décoche => event), on décoche tous ses enfants (sauf lui, car le click le fera)
		if ($(this).is(":checked"))		//Si on décoche
		{
			elemListe.find('input[type="checkbox"]').not($(this)).removeAttr('checked');	//On décoche tous ses enfants
			elemListe.find('.ne-pas-ajouter').removeClass('ne-pas-ajouter');				//On retire les classes ne pas ajouter de ses enfants
			//On décoche toutes les checkbox des parents
			elemListe.parents('li').children('input[type="checkbox"]').removeAttr('checked');
			//Si aucun de ses parents ne possède la classe ne-pas-ajouter		ET qu'on est pas en recherche texte
			if (elemListe.parents('li.ne-pas-ajouter').length == 0 && !elemListe.hasClass('pre-ajout') && !elemListe.hasClass('recherche-texte'))
				elemListe.addClass('ne-pas-ajouter');
			//Si l'element possède la classe pre-ajout, on la retire
			elemListe.removeClass('pre-ajout');
		}
		else	//Si on coche
		{
			if (elemListe.hasClass('recherche-texte'))		//Si on est en recherche texte
				elemListe.find('ul.niveau4 li input[type="checkbox"]').not($(this)).attr('checked', 'checked');	//On coche tous ses enfants (mais uniquement niveau4)
			else
				elemListe.find('input[type="checkbox"]').not($(this)).attr('checked', 'checked');	//On coche tous ses enfants
			elemListe.removeClass('ne-pas-ajouter');											//On retire la classe ne pas ajouter de cet élement
			elemListe.find('.ne-pas-ajouter').removeClass('ne-pas-ajouter');					//On retire les classes ne pas ajouter de ses enfants
			//Si aucun des parents ne possède la classe pre-ajout, on met la classe pre-ajout
			if (elemListe.parents('li.pre-ajout').length == 0 && !elemListe.hasClass('recherche-texte'))
			{
				$("ul.nomenclatures.niveau1 li.pre-ajout").removeClass('pre-ajout');		//On retire la classe pre-ajout d'ailleurs
				elemListe.removeClass('pre-ajout').addClass('pre-ajout');									//On ajoute la classe pre-ajout
			}
			if (elemListe.attr('class').indexOf('niveau=4') == -1 && elemListe.hasClass('recherche-texte'))		//Si on est pas en niveau 4 et qu'on est en recherche texte
			{
				$(this).attr('checked', 'checked');		//On annule le click
			}
		}
	});
	
	
});
