/**
* Ce fichier fait parti d'un package, toute modification doit entrainer la génération
* d'un nouveau package pour être pris en compte.
* voir l'objet ObjFichierPackage pour connaitre la marche à suivre pour regénérer un package
* @since 20/05/2009 Olivier REYT <reyt@benchmark.fr> 
*/

/**
 * Objet de gestion des modules
 *
 * @author Olivier REYT <reyt@benchmark.fr>
 * @package parcours
 * @subpackage html_include
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr> Création du fichier
 */
 
/**#@+
 * @var element Module dont la fenetre de droit est ouverte
 */
var moduleDroitOuvert = 0;
/**#@-*/

/**#@+
 * @var element Conteneur dont la fenetre de droit est ouverte
 */
var conteneurDroitOuvert = 0;
/**#@-*/

/**#@+
 * @var string Texte de la fenétre de droit
 */
 var texteFenetreDroitParcours = 
 "<div class=\"liste_droit\">"+
"	<a href=\"#\" class=\"bouton_valider_droit\" title=\"Cliquez pour valider les modifications\">&nbsp;</a>"+
"	<form style=\"float:left\">"+
"		<input type=\"checkbox\" name=\"box31\" value=\"31\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Tous les membres</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box1\" value=\"1\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Mes amis</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box2\" value=\"2\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Ma famille</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box8\" value=\"8\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Mes connaissances</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box4\" value=\"4\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Mes relations pro</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box0\" value=\"0\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Moi exclusivement</div>"+
"		<div style=\"clear:both;\"></div>"+
"	</form>"+
"</div>";
/**#@-*/
 
 /**#@+
  * @var string Texte de la fenétre de droit sans la valeur "Tous les membres"
  */
  var texteFenetreDroitParcoursSansTous = 
  "<div class=\"liste_droit\">"+
 "	<a href=\"#\" class=\"bouton_valider_droit sans_tous\" title=\"Cliquez pour valider les modifications\">&nbsp;</a>"+
 "	<form style=\"float:left\">"+
 "		<input type=\"checkbox\" name=\"box1\" value=\"1\" class=\"checkbox_liste_droit\">"+
 "		<div class=\"titre_case_a_cocher\">Mes amis</div>"+
 "		<div style=\"clear:both;\"></div>"+
 "		<input type=\"checkbox\" name=\"box2\" value=\"2\" class=\"checkbox_liste_droit\">"+
 "		<div class=\"titre_case_a_cocher\">Ma famille</div>"+
 "		<div style=\"clear:both;\"></div>"+
 "		<input type=\"checkbox\" name=\"box8\" value=\"8\" class=\"checkbox_liste_droit\">"+
 "		<div class=\"titre_case_a_cocher\">Mes connaissances</div>"+
 "		<div style=\"clear:both;\"></div>"+
 "		<input type=\"checkbox\" name=\"box4\" value=\"4\" class=\"checkbox_liste_droit\">"+
 "		<div class=\"titre_case_a_cocher\">Mes relations pro</div>"+
 "		<div style=\"clear:both;\"></div>"+
 "		<input type=\"checkbox\" name=\"box0\" value=\"0\" class=\"checkbox_liste_droit\">"+
 "		<div class=\"titre_case_a_cocher\">Moi exclusivement</div>"+
 "		<div style=\"clear:both;\"></div>"+
 "	</form>"+
 "</div>";
 /**#@-*/

/**#@+
 * @var string Texte de la fenétre de droit
 */
 var texteFenetreDroitParcoursPro = 
 "<div class=\"liste_droit\">"+
"	<a href=\"#\" class=\"bouton_valider_droit\" title=\"Cliquez pour valider les modifications\">&nbsp;</a>"+
"	<form style=\"float:left\">"+
"		<input type=\"checkbox\" name=\"box31\" value=\"31\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Tous les membres</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box4\" value=\"4\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Mon réseau</div>"+
"		<div style=\"clear:both;\"></div>"+
"		<input type=\"checkbox\" name=\"box0\" value=\"0\" class=\"checkbox_liste_droit\">"+
"		<div class=\"titre_case_a_cocher\">Moi exclusivement</div>"+
"		<div style=\"clear:both;\"></div>"+
"	</form>"+
"</div>";
/**#@-*/

/**
 * toggleDiv
 * 
 * Permet d'ouvrir et fermer alternativement une div 
 *
 * @param Element elementAOuvrir Element à ouvrir/fermer
 * @return Boolean FALSE
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function toggleDiv(elementAOuvrir){

	divAOuvrirOuFermer = $("#"+elementAOuvrir);
	divAOuvrirOuFermer.toggle();

	return false;
}

/**
 * retourPopupConfirmation
 * 
 * Permet de traiter le retour du popup de confirmation
 *
 * @param string retour Type de retour
 * @param array listeVar Tableau de donnée
 * @return Void
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 23/03/2009 Olivier REYT <reyt@benchmark.fr>
 * @deprecated
 * @TODO a supprimer si non utilisé
 */
 function retourPopupConfirmation(retour,listeVar){
      if (retour == 'bouton_validation'){
            deplaceModule(listeVar.module, listeVar.conteneur, listeVar.idConfig);
     }
}

/**
 * chargeFenetreDroit
 * 
 * Permet de faire apparaitre et disparaitre la fenétre de droits
 *
 * @param Element module Le module dont on veut afficher les droits
 * @param conteneur conteneur Le conteneur qui posséde les modules
 * @return Void
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function chargeFenetreDroit(module,conteneur){

	if (module.find("div.liste_droit").size() == 0){

		module.css("z-index", "15");

		$(conteneur.idElementlisteModule).css('z-index', '3');

		// On récupére les informations de l'utilisateur
		$.post(conteneur.urlControleurAjax, { f_id_personne:conteneur.idProprietaire, f_action:conteneur.getAccesDroit, f_id_module:module.attr('id')}, function(resultatAjax){

			// Si la récupération des droits s'est bien passé en AJAX
			// on affiche alors la fenetre de modifications de droits
			if (resultatAjax.code_retour == 1){

				droitsModule = resultatAjax.message_retour;

				// On eval le résultat pour récupérer un tableau de donnée dans la variable listeDroitModule
				eval(droitsModule.liste_droits);

                        // On charge le code de la fenetre de droits
		           // var txtDonneeFenetreDroit = texteFenetreDroit;
		            var txtDonneeFenetreDroit = window[droitsModule.liste_type];

				// On créé la div
				module.append(txtDonneeFenetreDroit);

				// On boucle sur le tableau de droit pour pouvoir
				// cocher les bonnes cases
				for(var i = 0; i < listeDroitModule.length; i++){

					var boxName = 'box'+listeDroitModule[i];

					// Pour chaque résultat, on coche la case correspondante
					checkboxSelected = module.find("div.liste_droit [name='"+boxName+"']");
					checkboxSelected.attr("checked", "checked");
				}

				// On initialise la gestion du click sur le bouton OK
				module.find("div.liste_droit a.bouton_valider_droit").bind(
					"click",
					function(){
						module.find("div.liste_droit").remove();
						module.css("z-index", "" );
						moduleDroitOuvert = 0;
						conteneurDroitOuvert = 0;
						return false;
					}
				);

				// On initialise la gestion des actions sur les checkboxes
				module.find("div.liste_droit .checkbox_liste_droit").bind(
					"click",
					function(){
						actionListeDroit(module, conteneur, this );
					}
				);

				if (moduleDroitOuvert != 0){
					// On supprime la div
					$(moduleDroitOuvert).find('.liste_droit').remove();
					moduleDroitOuvert.css("z-index", "");
					conteneurDroitOuvert.css("z-index", "");
				}

				moduleDroitOuvert    = module;
				conteneurDroitOuvert = $(conteneur.idElementlisteModule);
			}

		},'json');

	}else{

		// On supprime la div
		module.find("div.liste_droit").remove();
		module.css("z-index","");
		moduleDroitOuvert = 0;
		conteneurDroitOuvert = 0;
	}
}

/**
 * actionListeDroit
 * 
 * Action lorsque l'on clique dans les cases à cocher de la liste de droit
 *
 * @param Element module Module dont on modifie les droits
 * @param conteneur conteneur Objet conteneur qui posséde le module
 * @param Element caseCoche Nom de la case qui vient d'etre coché
 * @return Void
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 03/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function actionListeDroit(module,conteneur,caseCoche){

	// On initialise une variable qui contient le nombre de checkboxes
	var compteurDeCheckbox = 0;

	// On initialise une variable qui contient la valeur des checkboxes
	var valeurCheckbox = 0;

	// On initialise une variable qui contiendra le texte à passer pour les droits
	var texteDroit = '';

	var formDivListeDroit = module.find("div.liste_droit form");

	// On initialise une variable qui contient les informations sur les droits
	var listeDroitModule = "{\"module\": \""+module.attr('id')+"\", \"droits\": [";

	// Suivant la valeur de la case coché il y a des actions différentes

	// Si on coche "Tous", on doit tout décocher
	if($(caseCoche).attr('value') == 31){

		if(caseCoche.checked == true){

			compteurDeCheckbox++;
			valeurCheckbox = 31;
			texteDroit = "\"31\",";

			formDivListeDroit.find(".checkbox_liste_droit").each(
				function(){
					this.checked = false;
				}
			);

			caseCoche.checked = true;
		}

	// Si on coche "Moi exclusivement", on doit tout décocher
	}else if($(caseCoche).attr('value') == 0){

		compteurDeCheckbox++;
		valeurCheckbox = 0;
		texteDroit = "\"0\",";

		formDivListeDroit.find(".checkbox_liste_droit").each(
			function(){
				this.checked = false;
			}
		);

		caseCoche.checked = true;

	// Si on coche n'importe quel autre case
	}else{

		// On récupére toutes les valeurs
		formDivListeDroit.find(".checkbox_liste_droit").each(

			function(){

				if ($(this).attr('value') == 31){
					this.checked = false;
				}

				if ($(this).attr('value') == 0){

					this.checked = false;

				}else{

					if (this.checked == true){
						compteurDeCheckbox++;
						valeurCheckbox+=parseInt($(this).attr('value'));
						texteDroit+="\""+$(this).attr('value')+"\",";
					}
				}
			}
		);
	}

	// Pour finir, on envoie la configuration des checkboxes pour la sauvegarde
	// On supprime le dernier
	if(compteurDeCheckbox > 0){
		texteDroit = texteDroit.substr(0,(texteDroit.length)-1);
		listeDroitModule += texteDroit;
	}

	// Si on a rien coché, on coche par contre la case "Moi exclusivement"
	if(compteurDeCheckbox == 0){

		formDivListeDroit.find(".checkbox_liste_droit").each(
			function(){
				if ($(this).attr('value') == 0){
					this.checked = true;
				}
			}
		);
	}

	listeDroitModule+="]}";
	compteurDeCheckbox = 0;
	valeurCheckbox = 0;
	texteDroit = '';
	
	// appelle la fonction callback des droit si elle existe
	// ---------------------------------------------------------------------------------
	var lien_visibilite = module.find("a.ouverture_visibilite_module");
	var url_ajax_callback = $(lien_visibilite).attr('f_ajax');
	
	if(url_ajax_callback){
	
		// appel de la fonction de callback
		benchmark.framework.net.ObjControleurAjax3.appelScriptAction(
			module,
			url_ajax_callback,
			{
				SUCCES: 0,
				ERREUR: 0
			},
			{
				'f_droit' : $(caseCoche).attr('value'),
				'f_checked' : caseCoche.checked,
				'f_id_personne' : conteneur.idProprietaire
			}
		);
	}
		
	// execute l'action qui enregistre les nouveaux droits
	$.post(
		conteneur.urlControleurAjax,
		{	f_liste_droit:listeDroitModule,
			f_id_personne:conteneur.idProprietaire,
			f_action:conteneur.getSauvegardeDroit
		},
		function(resultatAjax){

			// Si la modification des droits s'est bien passé en AJAX
			if(resultatAjax.code_retour == 1){
				// On modifie la valeur du texte de droits sur ce module suivant le type d'affichage
				module.find('div.module_droit .titre_visibilite .ouverture_visibilite_module').html(resultatAjax.message_retour);
	
				var tableauLiaisonDroitModule = resultatAjax.liaison_droit_module;
	
				for(var cleTableau in tableauLiaisonDroitModule){
					$('div[id^=module_' + tableauLiaisonDroitModule[cleTableau] + '] div.module_droit .titre_visibilite .ouverture_visibilite_module').html(resultatAjax.message_retour);
				}
			}
		},
		'json'
	);
}

/**
 * reduireModule
 * 
 * Reduire le module (le contenu du module)
 *
 * @param Element module Module dont on veut réduire le contenu
 * @param Element conteneur Le conteneur qui posséde les modules
 * @param Boolean supprimerDernier Doit on supprimer le dernier élément de la liste récupérée
 * @return Void 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function reduireModule(module, conteneur, supprimerDernier){

	// On indique la liste de module a changé
	conteneur.listeModulesModifie = true;

	module.trigger("avantMinimisation",[module]);
	module.find("div.module_prise div.ouvrir_fleche a").show();
	module.find("div.module_prise div.reduire_fleche a").hide();
	module.find("div.module_prise li.ouvrir a").show();
	module.find("div.module_prise li.fermer a").hide();
	module.find(".module_contenu").hide();

	if(typeof(conteneur) != 'undefined' && typeof(conteneur.getMinimisation) != 'undefined' && conteneur.getMinimisation != null){
		sauvegardePreference(conteneur, conteneur.getMinimisation, supprimerDernier);
	}

	module.trigger("apresMinimisation",[module]);
}

/**
 * ouvrirModule
 * 
 * Ouvre le module (le contenu du module)
 *
 * @param Element module Module dont on veut voir le contenu
 * @param Element conteneur Le conteneur qui posséde les modules
 * @param Boolean supprimerDernier Doit on supprimer le dernier élément de la liste récupérée
 * @return Void 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function ouvrirModule(module, conteneur, supprimerDernier){

	// On indique la liste de module a changé
	conteneur.listeModulesModifie = true;

	module.trigger("avantOuverture",[module]);
	module.find("div.module_prise div.ouvrir_fleche a").hide();
	module.find("div.module_prise div.reduire_fleche a").show();
	module.find("div.module_prise li.ouvrir a").hide();
	module.find("div.module_prise li.fermer a").show();
	module.find(".module_contenu").show();

	if(typeof(conteneur) != 'undefined' && typeof(conteneur.getMinimisation) != 'undefined' && conteneur.getMinimisation != null){
		sauvegardePreference(conteneur, conteneur.getMinimisation, supprimerDernier);
	}

	module.trigger("apresOuverture",[module]);
}

/**
 * deplaceModule
 * 
 * Permet de déplacer un module vers une autre configuration
 *
 * @param Element module Le module que l'on déplace
 * @param Element conteneur Le conteneur qui posséde les modules
 * @param integer idConfig Identifiant de la nouvelle config dans laquelle on va enregistrer le module
 * @return Boolean FALSE
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 06/03/2009 Olivier REYT <reyt@benchmark.fr>
 */
function deplaceModule(module,conteneur,idConfig){

	if(typeof(conteneur) != 'undefined' && typeof(conteneur.getDeplacer) != 'undefined' && conteneur.getDeplacer != null){

      	$.ajax({
      		type: "POST",
      		url: conteneur.urlControleurAjax,
      		async: false,
      		dataType: "json",
      		data: {f_module_ajout:module.attr('id'),f_id_personne:conteneur.idProprietaire,f_action:conteneur.getDeplacer,f_nouveau_id_config:idConfig},
      		success : function (resultatAjax){
      
      			// Si tout c'est bien passé
      			if (resultatAjax.code_retour == 1){

            			// On ouvre le module
            			ouvrirModule(module, conteneur);
            
            			// On ferme les différentes parties du module
            			module.find("div.module_prise div:not(.titre)").hide();
            			module.find(".module_droit").hide();

            			// On modifie le contenu du module
            			setContenu(module,'<div class="module_content" style="padding:5px;">Ce module a été déplacé dans la page.</div>');

            			// On cache le module
            			module.remove();
            		}
      		}
      	});
      }

	return false;
}

/**
 * sauvegardePreference
 * 
 * Permet de sauvegarder l'ordre des modules
 *
 * @param conteneur conteneur Le conteneur qui posséde les modules
 * @param string getAction Get pour la modification en AJAX
 * @param Boolean supprimerDernier Doit on supprimer le dernier élément de la liste récupérée
 * @return Boolean FALSE
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function sauvegardePreference(conteneur, getAction, supprimerDernier){

       if (typeof(getAction) != 'undefined'){

      	// donnee a sauvegarder
      	donnee = new Object();

      	var listeModule = '';

      	// S'il y a eue des modifications
      	if (conteneur.listeModulesModifie){
            
                  listeModule = '[';
      
      	      // on parcourt le conteneur
      		var liste_dom_module          = $(conteneur.idElementConteneur).find(".module_double .module");
      		var taille_liste_dom_module   = liste_dom_module.length;
      		var compteur_module           = 1;

      		liste_dom_module.each(
      			function(){
      				if ((compteur_module < taille_liste_dom_module && supprimerDernier == 1) || (supprimerDernier == 0)){
      					var module 		= $(this);
      
      					var modulecontenu = module.find("div.module_contenu");
      					var arrayIdModule	= module.attr("id").split("_");
      					var idModule	= arrayIdModule[1];
      
      					var minimise	= "true";
      					if (modulecontenu.css('display') == 'none'){
      						minimise = "false";
      					}
      
      					listeModule += "{";
      					listeModule += "\"id\": \""+idModule+"\",";
      					listeModule += "\"min\": \""+minimise+"\"";
      					listeModule += "}";
      					if(compteur_module<taille_liste_dom_module){
      						listeModule += ",";
      					}
      					compteur_module++;
      				}
      			}
      		);
      
                   listeModule += ']';
      
      		if ((compteur_module < (taille_liste_dom_module-1) && supprimerDernier == 1) || (compteur_module < (taille_liste_dom_module) && supprimerDernier == 0)){
      			listeModule += ",";
      		}
      	}
      
      	donnee = {f_liste_module:listeModule,f_id_personne:conteneur.idProprietaire,f_action:getAction,f_est_modifie:conteneur.listeModulesModifie, f_liste_drag_and_drop:conteneur.formateListeDragAndDrop()};

      	if(typeof(conteneur.sauvegardeModulePlugin) != 'undefined' && typeof (conteneur.sauvegardeModulePlugin) == 'function' ) {
      	      donnee = conteneur.sauvegardeModulePlugin(donnee, conteneur);
      	}
      
      	// On envoie le tableau à la page de sauvegarde
      	$.ajax({
      		type: "POST",
      		url: conteneur.urlControleurAjax,
      		async: false, 
      		data: donnee
      	});
	}
}

/**
 * getContenu
 * 
 * Retourne le contenu du module
 *
 * @param Element module Module dont on veut le contenu
 * @return string Contenu du module
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function getContenu(module){
	return module.find(".module_contenu").html();
}

/**
 * setContenu
 * 
 * Enregistre une valeur dans le module
 *
 * @param Element module Module dont on veut modifier le contenu
 * @param string nouvelleValeur Nouvelle valeur à enregistrer
 * @return Void 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function setContenu(module, nouvelleValeur){
	module.find(".module_contenu").html(nouvelleValeur);
}

/**
 * affiche ou cache le lien du bas
 *
 * @param Element module Module dont on veut réduire le contenu
 * @param booleen à vrai si le bloc doit être ouvert
 * @return Void 
 * @author A.Nadler <nadler@benchmark.fr>
 * @since 15/07/2008 A.Nadler <nadler@benchmark.fr>
 */
function setVisibiliteLienBas(module,visible){

	if(visible){
		module.find("div.module_contenu div.trait_en_pointille").show();
		module.find("div.module_contenu div.module_lien_bas").show();
	}else{
		module.find("div.module_contenu div.trait_en_pointille").hide();
		module.find("div.module_contenu div.module_lien_bas").hide();
	}
}

/**
 * estFerme
 * 
 * Permet de savoir si le module est fermé ou pas
 *
 * @param Element module Module dont on veut si savoir si le module est fermé
 * @return Boolean 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function estFerme(module){

	if(module.find(".module_contenu").css('display') == "none"){
		return true;
	}

	return false;
}

/**
 * estOuvert
 * 
 * Permet de savoir si le module est ouvert
 *
 * @param Element module Module dont on veut si savoir si le module est ouvert
 * @return Boolean 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 */
function estOuvert(module){

	if(module.find(".module_contenu").css('display') == "none"){
		return false;
	}

	return true;
}

/**
 * initialise un module
 *
 * @param 		le module
 * @param Element conteneur Le conteneur du module 
 * @return 		void
 * @author 		A.Nadler <nadler@benchmark.fr>
 * @since 		12/08/2008 A.Nadler <nadler@benchmark.fr>
 */
function initialiseModule(module,conteneur){

	var conteneur = conteneur;
	var id_module = module.attr('id');
	var prise     = module.find("div.module_prise");
	var libelle   = prise.find("div.titre div.titre_module a").attr('title');

	if(typeof(libelle) == 'undefined'){
	      var libelle = prise.find("div.titre div.titre_module").html();
	}

	if(typeof(conteneur.modificationDroit) != 'undefined' && conteneur.modificationDroit){
		$(conteneur.idElementlisteModule).css('z-index','2');
	}

	if(typeof(conteneur.onEvent) != 'undefined' && conteneur.onEvent){

		// On teste les évenements pour chaque élément du tableau, c'est à dire pour chaque module
		// On fait un bind avec comme paramétres le trigger et la fonction correspondante
		// Par exemple : module.bind(apresOuverture, function(){alert('Ouverture du module});
		for(var ecouteur in conteneur.listeEvenement[id_module]){
			module.bind(ecouteur, conteneur.listeEvenement[id_module][ecouteur]);
		}

		module.getContenu = function(){			return getContenu(module);}
		module.setContenu = function(nouvelleValeur){	return setContenu(module,nouvelleValeur);}
		module.reduire 	= function(){			return reduireModule(module, conteneur);}
		module.ouvrir 	= function(){			return ouvrirModule(module, conteneur);}
		module.fermer	= function(){			return fermerModule(module);}
		module.estFerme 	= function(){			return estFerme(module);}
		module.estOuvert 	= function(){			return estOuvert(module);}
	}

	// Liste d'action possibles sur les liens
	var actionSurLien = function(){

		var nomClassLien = $(this).attr("class");

		switch (nomClassLien){

			// Si on veut que le click sur le lien ouvre le module
			case 'ouverture_module' : 
				$(this).click(
					function(){
						ouvrirModule(module, conteneur);
					}
				);
				break;

			// Si on veut que le click sur le lien ferme le module
			case 'fermeture_module' : 
				$(this).click(
					function(){
						reduireModule(module, conteneur);
					}
				);
				break;
		}
	}

/*****
**
**
*           Cassé : à remetre en place si besoin

	// Si on peut ajouter des modules
	if (typeof(conteneur.ajouter) != 'undefined' && conteneur.ajouter){
		prise.find("div.ajouter a").click(
			function(){
				ajoutModule(module,""+conteneur.getAjouter+"", ""+conteneur.idProprietaire+"");
				return false;
			}
		);
	}

	// Partie fermeture
	prise.find("div.fermer a").click(
		function(){
			if(window.confirm("Souhaitez-vous retirer ce module de votre fiche ?\nVos amis ne pourront plus le voir.\nVous pourrez toujours le retrouver dans la rubrique \"Modules disponibles\".")){
				fermerModule(module, conteneur);
			}
			return false;
		}
	);

*
**
**
*****/

	// Partie modification de droit
	if(typeof(conteneur.modificationDroit) != 'undefined' && conteneur.modificationDroit){

		module.find(".module_droit div.titre_visibilite a").click(
			function(){
				chargeFenetreDroit(module,conteneur);
				return false;
			}
		);
	}

	// Partie déplacement d'un module vers une autre configuration
	if(typeof(conteneur.deplacer) != 'undefined' && conteneur.deplacer){

		prise.find("div.deplacer_conteneur").click(
			function(){
				 var idConfig = $(this).attr('idConf');
				benchmark.framework.ihm.popup.ObjPopupFabrique.creerPopUpConfirmation(
				 	"Votre module \""+libelle+"\" va être déplacé sur la page "+idConfig+" de votre accueil Copains",
				 	// en cas de validation
				 	function(event){
				 		 deplaceModule(module, conteneur, idConfig);			
				 	}
				);
				return false;
			}
		);
	}

	module.find(".module_lien_bas a").each(
		actionSurLien
	);

	// Partie reduction
	prise.find("div.reduire_fleche a,li.fermer a").click(
		function(){
			reduireModule(module, conteneur, 0);
			return false;
		}
	);

	// Partie ouverture
	prise.find("div.ouvrir_fleche a,li.ouvrir a").click(
		function(){
			ouvrirModule(module, conteneur, 0);
			return false;
		}
	);

	// Partie deplacement drag & drop 
	$('#'+id_module+' div.module_prise div.titre div.deplacer_windows span').bind('mouseenter', function(){
		$(this).css('backgroundColor', '#FFF');
		$(this).css('color', '#EE5106');
	}).bind('mouseleave', function(){
		$(this).css('backgroundColor', 'transparent');
		$(this).css('color', '#5E5E5E');
	});

	// Partie deplacement vers un autre conteneur
	$('#'+id_module+' div.module_prise div.titre div.deplacer_conteneur span').bind('mouseenter', function(){
		$(this).css('backgroundColor', '#FFF');
		$(this).css('color', '#EE5106');
	}).bind('mouseleave', function(){
		$(this).css('backgroundColor', 'transparent');
		$(this).css('color', '#5E5E5E');
	});

	if(typeof(conteneur.dragAndDrop) != 'undefined' && conteneur.dragAndDrop){

		$('#'+id_module+'.module_dad div.module_prise div.titre').bind('mouseenter', function(){
			$(this).css('cursor', 'move');
		}).bind('mouseleave', function(){
			$(this).css('cursor', 'default');
		});
	}

	if(typeof(conteneur.initialiseModulePlugin) != 'undefined' && typeof (conteneur.initialiseModulePlugin) == 'function' ) { conteneur.initialiseModulePlugin(module, conteneur); }

	// Evenement lancé quand le module à fini d'être chargé
	// since 15/10/2008 pierre chabiland <chabiland@benchmark.fr>
	module.trigger('apresChargement');
}

/*****
**
**                Quarantaine
*           Cassé : à remetre en place si besoin


 * ajoutModule
 * 
 * Permet d'ajouter un module à la liste de module de l'utilisateur
 *
 * @param Element module Le module que l'on ajoute
 * @param Element conteneur Le conteneur qui posséde les modules
 * @return Boolean FALSE
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>

function ajoutModule(module, getAction, idPersonne){

	if (typeof(conteneur) != 'undefined' && typeof(conteneur.getAjouter) != 'undefined' && conteneur.getAjouter != null){
      	$.ajax({
      		type: "POST",
      		url: conteneur.urlControleurAjax,
      		async: false,
      		dataType: "json",
      		data: {f_module_ajout:module.attr('id'), f_id_personne:conteneur.idProprietaire, f_action:conteneur.getAjouter},
      		success : function (data, textStatus) {

      			// On ouvre le module
      			ouvrirModule(module);
      
      			// On ferme les différentes parties du module
      			module.find("div.module_prise div:not(.titre)").hide();
      			module.find(".module_droit").hide();

      			// On modifie le contenu du module
      			setContenu(module,'<div class="module_content" style="padding:5px;">Ce module a été ajouté à votre liste de modules.</div>');

      			// On cache le module aprés 2 secondes
      			module.oneTime(2000, function(){module.hide();});
      		}
      	});
      }
	return false;
}


 * fermerModule
 * 
 * Fermer le module (le contenu du module)
 *
 * @param Element module Module dont on veut fermer le contenu
 * @param Element conteneur Le conteneur qui posséde les modules
 * @return Void 
 * @author Olivier REYT <reyt@benchmark.fr>
 * @since 02/07/2008 Olivier REYT <reyt@benchmark.fr>
 
function fermerModule(module, conteneur){
	module.trigger("avantFermeture", [module]);
	module.remove();
	if (typeof(conteneur.getSupprimer) != 'undefined'){
		$.ajax({
			type: "POST",
			url: conteneur.urlControleurAjax,
			async: false, 
			data: {'f_id_module':module.attr("id"), f_id_personne:conteneur.idProprietaire, f_action:conteneur.getSupprimer}
		});
	}
	module.trigger("apresFermeture", [module]);
}

*
**
**
*****/