var idBoiteModale = 0;


$(document).ready(function()
{	
/*	######################
	Gestion de la modale
	######################	*/
	
	//Click sur la croix pour la fermer		(le non valide est dans le cas d'une validation d'un formulaire)
	$(".conteneur-boite-modale .boite-modale .fermer, .conteneur-boite-modale .boite-modale .annuler, .conteneur-boite-modale .boite-modale:not(.non-valide) .valider, .conteneur-boite-modale .boite-modale .non").live('click', function()
	{
		var boiteModale = $(this).parents('.boite-modale').first();
		var objBoiteModale = decouperTextClassCrochets(boiteModale.attr('class'));
		var numBoiteParent = objBoiteModale['idParent'];
		fermer_boite_modale(boiteModale);
		if (numBoiteParent > 0)		//Si on a un parent (on le réactive)
		{
			zoneAttente($(".conteneur-boite-modale").children("[class*='boite-modale'][class*='id=" + numBoiteParent + "']"));
		}
		/*var boite = $(this).parents('.boite-modale').first();		//On ne prend que la modale parente du click
		var fondBoite = $(this).parents('.conteneur-boite-modale').first();
		boite.fadeOut(600, function()
		{
			boite.remove();
			if (fondBoite.children('.boite-modale').length == 0)	//On ne masque le fond que s'il n'y a plus de boite modale affichée
			{
				//fondBoite.hide();
				fondBoite.remove();
			}
		});*/
		return false;
	});
	
	
	//Gestion des elements sélectionnables
	$(".conteneur-boite-modale .boite-modale .zone-choix-element .element-selectionnable").live('click', function()
	{
		var reSelection = !$(this).hasClass('selected');
		if (reSelection)
		{
			$(this).parents('.zone-choix-element').first().find('.element-selectionnable.selected').removeClass('selected');
			$(this).addClass('selected');
		}
	});
});


//Renvoi l'id de la boite créée
//ClasseModale : la class qui sera ajoutée à la boite modale (sert à la reconnaitre)
//boutons : un array de la forme (classBouton = textBouton) Attention à ne pas mettre d'évènement sur la classe .annuler d'un bouton pour fermer la box (déjà présent)
//titreModale : le titre de la modale en texte
//contenuModale : le contenu html de la modale
//contenuMasqueModale : le contenu html masque (input hidden...)
//tailleX : la taille en X de la box en pourcents
function creer_boite_modale(params)
{
	var parametres = {
		'classeModale' : '',
		'boutons' : {"annuler": "Annuler", "valider": "Valider"},
		'titreModale' : '&nbsp;',
		'contenuModale' : '',
		'contenuMasqueModale' : '',
		'numBoiteParent' : 0,
		'deplacable' : true,
		'tailleX' : 30,			//Taille par défaut 30% de la taille de la fenetre
		'cssTopPx': null		//Position top de l'element en pixels
	};
	
	//Fusion des parametres passés par l'user avec les params par défaut (si une définition d'un param est passée par l'user, elle remplacera la valeur de celle définie par défaut, cela ne s'ajoutera pas)
	$.extend(parametres, params);
//function creer_boite_modale(classeModale, boutons, titreModale, contenuModale, contenuMasqueModale, numBoiteParent, deplacable, tailleX)
//{
	idBoiteModale++;
	if ($(".conteneur-general .conteneur-boite-modale").length == 0)	//Si on a pas de conteneur de boite modale, on le crée
		$(".conteneur-general").append('<div class="conteneur-boite-modale" style="height: ' + $(".conteneur-general").height() + 'px"></div>');
	
	//On récupère la taille maxi du contenu du popup (70% de la taille de la fenetre)
	var hauteurMaxi = $(window).height() * 0.70;
	var zIndexConteneur = parseInt($(".conteneur-general .conteneur-boite-modale").css('z-index'));
	var contenu = '';
	contenu += '<div class="boite-modale coinsArrondis_10 shadow_BasDroite_5 ' + parametres['classeModale'] + ' {id=' + idBoiteModale + '&idParent=' + parametres['numBoiteParent'] + '}"';
	contenu += ' style="' + ((parametres['tailleX'] > 15)?'width: ' + parametres['tailleX'] + '%; left: ' + ((100 - parametres['tailleX']) / 2) + '%;':'');
	contenu += ((parametres['cssTopPx'] != null)?' top: ' + parametres['cssTopPx'] + 'px;':'') + 'z-index: ' + (zIndexConteneur + idBoiteModale) + '">';
	contenu += '<div class="zone-masquee">';
	contenu += parametres['contenuMasqueModale'];
	contenu += '</div>';
	contenu += '<h1 class="">';
	//contenu += '<img class="logo" src="" />';
	contenu += parametres['titreModale'];
	//contenu += '<input type="image" class="fermer" src="../Images/Icone_fermer.png" />';
	contenu += '<a href="#" class="fermer"><img src="../Images/Icone_fermer.png" /></a>';
	contenu += '</h1>';
	contenu += '<div class="contenu-modale" style="max-height: ' + hauteurMaxi + 'px;">';
	contenu += parametres['contenuModale'];
	contenu += '</div>';
	if (taille(parametres['boutons']) > 0)	//Sert à connaitre la taille d'un tableau associatif
	{
		contenu += '<div class="zone-boutons">';
		for (classBouton in parametres['boutons'])
		{
			contenu += '<button class="' + classBouton + '">' + parametres['boutons'][classBouton] + '</button>';
		}
		contenu += '</div>';
	}
	//contenu += '</div>';
	$(".conteneur-general .conteneur-boite-modale").append(contenu);
	if (parametres['deplacable'])
		$(".conteneur-general .conteneur-boite-modale .boite-modale" + ((parametres['classeModale'] != '')?'.' + parametres['classeModale']:'')).draggable();
	return idBoiteModale;
	/*$(".conteneur-general .conteneur-boite-modale").css(
	{
		'height': $(".conteneur-general").height()
	});*/
	/*$(".conteneur-general .conteneur-boite-modale .boite-modale").css(
	{
		'top': $(".conteneur-modification-contact").offset().top + 70
	}).draggable();*/
}

//classeModale : la classe de la boite modale, celle qui sert à l'identifier
//Contenu html
//remplacerExistant : booléen servant à dire s'il faut remplacer le contenu ou pas
//selecteurSupplementaire : le sélecteur dans le conteneur, auquel ajouter le contenu voulu
function inserer_contenu_boite_modale(classeModale, numBoite, contenuHTML , remplacerExistant, selecteurSupplementaire)
{
	var selecteur = "[class*='boite-modale'][class*='" + classeModale + "'][class*='id=" + numBoite + "'] .contenu-modale" + ((selecteurSupplementaire != undefined && selecteurSupplementaire != '')?' ' + selecteurSupplementaire:'');
	if (remplacerExistant)
		$(selecteur).replaceWith(contenuHTML);
	else
		$(selecteur).append(contenuHTML);
}

//On peut passer en param soit la boite modale, soit l'element situé dans la boite modale
function get_id_boite_modale(elementDeLaBoite)
{
	var objBoite = decouperTextClassCrochets(((elementDeLaBoite.hasClass('boite-modale'))?elementDeLaBoite.attr('class'):elementDeLaBoite.parents('.boite-modale').first().attr('class')));
	return ((objBoite['id'] > 0)?objBoite['id']:0);
}

//On peut passer en param soit la boite modale, soit l'element situé dans la boite modale
//Renvoi un objet contenant la boite modale, ses parametres, la boite parent (obj), les params de la boite parent
// {'id': 12, 'idParent': 11, 'boite': $(obj), ..., 'modaleParent': {'id': 11, 'idParent': 10, 'boite': $(obj), ..., 'modaleParent': undefined}}
function get_attributs_element_boite_modale(elementBoiteModale)
{
	var objBoite = ((elementBoiteModale.hasClass('boite-modale') && elementBoiteModale.length == 1)?elementBoiteModale:elementBoiteModale.parents('.boite-modale').first());
	var objRetour = decouperTextClassCrochets(objBoite.attr('class'));
	objRetour['boite'] = objBoite;
	//S'il y a un idParent, on le récupère ce parent (objet et id)
	if (objRetour['idParent'] > 0)
	{
		var objBoiteParent = $("[class*='boite-modale'][class*='id=" + objRetour['idParent'] + "']");
		objRetour['modaleParent'] = decouperTextClassCrochets(objBoiteParent.attr('class'));
		objRetour['modaleParent']['boite'] = objBoiteParent;
	}
	return objRetour;
}


function fermer_boite_modale(uneBoite)
{
	var objBoite = decouperTextClassCrochets(uneBoite.attr('class'));
	var fondBoite = uneBoite.parents('.conteneur-boite-modale').first();
	uneBoite.fadeOut(600, function()
	{
		//S'il y a un idAttente, on vire cette attente
		if (objBoite['idAttente'] > 0)
			zoneAttente(uneBoite);
		uneBoite.remove();
		if (fondBoite.children('.boite-modale').length == 0)	//On ne masque le fond que s'il n'y a plus de boite modale affichée
		{
			//fondBoite.hide();
			fondBoite.remove();
		}
	});
}
