/**
 * Librairie javascript de la reaction
 *
 * @package       lesite
 * @subpackage    js
 * @author        Kris
 * @author        $Author: kris $
 * @version       $Revision: 19631 $
 * @date          $Date: 2007-04-02 18:32:14 +0200 (lun., 02 avr. 2007) $
 * @id            $Id: login.js 19631 2007-04-02 16:32:14Z kris $
 */



if (undefined===window.MIA)
{
   var MIA = {};
}
MIA.Reaction =
{
   class_name : "Reaction",
   
   annonce_deja_affichee : false,
   
   /**
    * Fonction qui charge le formulaire de la réaction
    *
    * @author     Kris
    * @access     public
    */
   chargerFormulaireReaction : function()
   {  
      // On récupère l'identifiant et l'url de l'item
      var info_item = new Array;
      info_item['id'] = document.getElementById("item_id").value;
      info_item['url'] = window.location.href; 
   
      if (document.getElementById('item_reactions_ouvertes').value == 0)
      {
         // Réactions fermées
         // On supprime les divs servant à la réponse, les liens renvoyant vers le formulaire de réaction et de réponses
         
         document.getElementById('mareaction').style.display = 'none';
         document.getElementById('maReactionLien').style.display = 'none';
         var elements = YAHOO.util.Dom.getElementsByClassName('respond', 'div', 'page_module');
         for (cpt = 0 ; cpt < elements.length ; cpt ++)
         {
            elements[cpt].style.display = 'none';
         }
      }
      else
      {
         if (document.getElementById('item_reactions_ouvertes').value == 1)
         {
            // Réactions ouvertes
            // On affiche le formulaire pour les posteurs ou pour une réponse en anonyme
            
            if (MIA.Perso.estEnregistre)
            {
               //utilisateur enregistre - formulaire reaction logue
               MIA.Dom.demanderChargementFragmentFromURL(document.getElementById("mareaction"), MIA.Conf.reaction.form_reaction_logue, MIA.Reaction.updateFormulaireReaction, info_item);
            }
            else
            {
               //utilisateur anonyme - formulaire reaction non logue
               MIA.Dom.demanderChargementFragmentFromURL(document.getElementById("mareaction"), MIA.Conf.reaction.form_reaction_nonlogue, MIA.Reaction.updateFormulaireReaction, info_item);
            }
         }
         else
         {
            if (document.getElementById('item_reactions_ouvertes').value == 2)
            {
               // Réactions limitées aux membres
               // On affiche le formulaire de réaction si le membre est identifié ou un formulaire invitant à s'identifier/s'inscrire
               
               if (MIA.Perso.estEnregistre)
               {
                  // On masque le lien d'inscription
                  //document.getElementById('reactionsInscription').style.display = 'none';
                  
                  // Utilisateur enregistre - formulaire reaction logue
                  MIA.Dom.demanderChargementFragmentFromURL(document.getElementById("mareaction"), MIA.Conf.reaction.form_reaction_logue, MIA.Reaction.updateFormulaireReaction, info_item);
               }
               else
               {
                  // Utilsiateur anonyme - formulaire de login / inscription
                  MIA.Dom.demanderChargementFragmentFromURL(document.getElementById("mareaction"), MIA.Conf.reaction.form_reaction_login_inscription, MIA.Reaction.updateFormulaireLoginInscriptionReaction, info_item);
                  
                  // On masque les liens de réponses
                  var elements = YAHOO.util.Dom.getElementsByClassName('respond', 'div', 'page_module');
                  for (cpt = 0 ; cpt < elements.length ; cpt ++)
                  {
                     elements[cpt].style.display = 'none';
                  }
               }
            }
            
         }
      }
   },


   /**
    * Fonction qui modifie le formulaire de la réaction
    *
    * @author     Kris
    * @param      int    id_item    l'identifiant de l'item
    * @access     public
    */
   updateFormulaireReaction : function(info_item)
   {
      //alert('updateFormulaireReaction - ' + id_item);
      var node = document.getElementById('id_item');
      node.setAttribute("value", info_item['id']);
      
      var node = document.getElementById('id_item');
      node.setAttribute("value", info_item['id']);

      node = document.getElementById('rea_bouton');
      node.onclick = function(evnt){ MIA.Reaction.verifierFormulaireReaction(); };
      
      if (MIA.Perso.estEnregistre)
      {
        document.getElementById('rea_sign_avatar').setAttribute('src', MIA.Conf.general.medias_url + MIA.Perso.infos.avatar);
        document.getElementById('rea_sign_pseudo').innerHTML = MIA.Perso.infos.pseudo;
        
        if (MIA.Perso.infos.email_reponse_sur_reaction == 1)
        {
           document.getElementById('notification').checked = true;
        }
      }
      else
      {
         document.getElementById('rea_devenir_posteur').href += '?r=' + encodeURIComponent(info_item['url']);
      }
   },
   
   
   /**
    * Fonction qui valide (ou non) le formulaire de reaction
    * S'il est validé, la fonction submit le formulaire
    *
    * @author     Kris
    * @access     public
    */
   verifierFormulaireReaction : function()
   {
      // le formulaire
      var reaction_form = document.form_reaction;

      // Le bouton de validation
      var btn_reaction = reaction_form.rea_bouton;
      btn_reaction.onclick = null;
      
      // Le flag d'erreur
      var erreur = false;
      
      // On masque les messages d'erreur
      MIA.Reaction.masquerErreur('rea_pseudo');
      MIA.Reaction.masquerErreur('rea_texte');

      //----- TEXTE DE LA REACTION
      // Vérification que le champ ne soit pas vide
      var texte = MIA.Tool.trim(reaction_form.rea_texte.value);
      if (texte == "")
      {
         MIA.Reaction.afficherErreur('rea_texte', MIA.Tool.utf8_decode("Vous n'avez pas saisi de texte à votre réaction"));
         erreur = true;
      }
      // verification de la longueur du champ
      if (texte.length > MIA.Conf.reaction.longueur_texte) 
      {
         MIA.Reaction.afficherErreur('rea_texte', MIA.Tool.utf8_decode("Votre réaction est trop longue - Taille maximale : " + MIA.Conf.reaction.longueur_texte));
         erreur = true;
      }

      
      //----- PSEUDO DE LA REACTION
      if (reaction_form.rea_pseudo)
      {
         var pseudo = reaction_form.rea_pseudo.value;
         pseudo = MIA.Tool.trim(pseudo);
         
         // Vérification que le champ ne soit pas vide
         if (pseudo == '' || pseudo == 'Mon pseudo')
         {
            MIA.Reaction.afficherErreur('rea_pseudo', MIA.Tool.utf8_decode("Vous avez oublié de choisir votre pseudo pour cette réaction !"));
            erreur = true;
         }
         // Test de la validite du pseudo (taille & caractères)
         var message_validation_pseudo = '';
         if(reaction_form.rea_pseudo)
            message_validation_pseudo = MIA.Validator.valideSyntaxeAlias(reaction_form.rea_pseudo);
         else
            message_validation_pseudo = MIA.Validator.valideSyntaxeAlias(reaction_form.rea_pseudo_logue);
         
         if (message_validation_pseudo != "ok")
         {
            MIA.Reaction.afficherErreur('rea_pseudo', message_validation_pseudo);
            erreur = true;
         }
      }
      
      // S'il y a une erreur sur le page
      if (erreur)
      {
         btn_reaction.onclick = function(evnt){ MIA.Reaction.verifierFormulaireReaction(); };
         return false;
      }
      
      // On envoi le formulaire
      reaction_form.submit();
      
      //----- LE CAPTCHA - UNIQUEMENT POUR LES MEMBRES NON LOGUES
      /*
      if (MIA.Conf.general.afficher_captcha == 1 && !MIA.Perso.estEnregistre)
      {
         // Vérification que le champ ne soit pas vide
         if (reaction_form.cptc_valeur.value == "") {
            MIA.Reaction.afficherErreur(MIA.Tool.utf8_decode("Vous n'avez pas saisi le code de sécurité"));
            return false;
         }
            
         // Vérification du captcha via requête ajax
         var objets = {};
         objets.cptc_valeur =  MIA.AjaxTools.Encoder.sanitizeForJson( reaction_form.cptc_valeur.value );
         objets.cptc_defaut =  MIA.AjaxTools.Encoder.sanitizeForJson( reaction_form.cptc_defaut.value );
         var args = {};
         args.rea_type    = 'reaction';
         var callback = MIA.Reaction._callbackVerifierCaptcha;
         MIA.Communication.appelServeur('process.verifier_captcha', objets, callback, '', args);
         return true;
      }
      else
      {
         reaction_form.submit();
      }
      return true;
      */
   },
   
   /**
    * Methode de callback pour la validation du captcha
    */
   _callbackVerifierCaptcha : function(args)
   {
      var retObjets = MIA.Communication.traiterReponseServeur( args );
      if (retObjets['error'] == 0)
      {
         if (args.argument.rea_type == 'reaction')
         {
            document.form_reaction.submit();
         }
         else
         {
            document.getElementById('form_' + args.argument.id_reaction).submit();
         }
      }
      else
      {
         if (args.argument.rea_type == 'reaction')
         {
            MIA.Reaction.afficherErreur(MIA.Tool.utf8_decode("Le code de sécurité saisi est incorrect"));
         }
         else
         {
            MIA.Reaction.afficherErreurReponse(MIA.Tool.utf8_decode("Le code de sécurité saisi est incorrect"));
         }
         return false;
      }
   },
   
   
   /**
    * modifie le formulaire de login/niscription au moment de son chargement
    */
   updateFormulaireLoginInscriptionReaction : function(info_item)
   {
      // Action sur le bouton "S'inscrire"
      var node = document.getElementById('btn_inscription');
      node.onclick = function(evnt){ window.location.href = MIA.Conf.general.url_login + '?r=' + encodeURIComponent(window.location.href); };
      
      // Action sur le bouton "OK" du login
      node = document.getElementById('btn_login');
      node.onclick = function(evnt){ MIA.Reaction.identifier(); };
   },
   
   
   /**
    * idnetifie l'utilisateur à partir des informations saisies par l'utilisateur
    */
   identifier : function()
   {
      if (MIA.Reaction.verifierFormulaireLogin())
      {
         // Appel du traitement
         var arg = '';
         
         var objets = {};
         objets.login = document.getElementById('login').value;
         objets.mdp  = document.getElementById('mdp').value;
         
         MIA.Communication.appelServeur('process.utilisateur.login', objets, MIA.Reaction._identifierCallback, '', arg);
         return true;
      }  
   },
   
   
   /**
    * fonction de callback d'identification
    *  - affiche un message d'erreur si problème
    *  - charge le formulaire de réaction si authentification = OK
    */
   _identifierCallback : function(args)
   {
      var retObjets = MIA.Communication.traiterReponseServeur(args);
      
      if (retObjets['erreur'] == 0)
      {         
         // On récupère le cookie de personnalisation
         MIA.Perso.demanderCookiePersonalisation();
         // On charge le formulaire de réaction
         MIA.Perso.evtStatutUtilisateurDetecte.subscribe(MIA.Reaction.chargerFormulaireReaction, MIA.Reaction);
         // On affiche les liens de réponse
         var elements = YAHOO.util.Dom.getElementsByClassName('respond', 'div', 'page_module');
         for (cpt = 0 ; cpt < elements.length ; cpt ++)
         {
            elements[cpt].style.display = 'inline';
         }
         // On masque le lien vers l'identification / inscription
         //document.getElementById('reactionsInscription').style.display = 'none';
      }
      else
      {
         // Affichage du message d'erreur
         MIA.Reaction.afficherErreur('login', MIA.Tool.utf8_decode("Votre authentification a échoué. Merci de saisir à nouveau votre identifiant et votre mot de passe"));
         
         // Activation du bouton de login
         node = document.getElementById('btn_login');
         node.onclick = function(evnt){ MIA.Reaction.identifier(); };
      }
   },
   
   
   /**
    * Vérifie les informations du formulaire de login
    */
   verifierFormulaireLogin : function()
   {
      // Variables
      var erreur = false;
      
      // Désactivation du bouton de login
      var node = document.getElementById('btn_login');
      node.onclick = null;
      
      // On masque les potentiels messages d'erreur
      MIA.Reaction.masquerErreur('login');
      MIA.Reaction.masquerErreur('mdp');
      
      // Vérification du Login
      if (document.getElementById('login').value == '' || document.getElementById('login').value == 'E-mail ou pseudo')
      {
         MIA.Reaction.afficherErreur('login', MIA.Tool.utf8_decode("Merci de saisir votre e-mail ou pseudo"));
         erreur = true;
      }
      
      // Vérification du mot de passe
      if (document.getElementById('mdp').value == '' || document.getElementById('mdp').value == 'Mot de passe')
      {
         MIA.Reaction.afficherErreur('mdp', MIA.Tool.utf8_decode("Merci d'entrer votre mot de passe"));
         erreur = true;
      }
      
      if (erreur)
      {
         // Activation du bouton de login
         node = document.getElementById('btn_login');
         node.onclick = function(evnt){ MIA.Reaction.identifier(); };
         return false;
      }
      
      return true;
   },
   

   /**
    * Fonction qui affiche un message d'erreur
    * @param      element_id     l'id de l'élement HTML
    * @param      message        le message d'erreur
    * @access     public
    */
   afficherErreur : function(element_id, message)
   {
	   if (document.getElementById(element_id))
      {
   	   // On remplit le bloc
   	   document.getElementById(element_id + '_erreur_mess').innerHTML = message;
   	   // On affiche le bloc
   	   document.getElementById(element_id + '_erreur_mess').style.display = 'block';
   	   // On highlight le champ
   	   document.getElementById(element_id).style.borderColor = '#f00';
      }
   },
   
   
   /**
    * Fonction qui masque une message d'erreur
    * @param      element_id     l'id de l'élement HTML
    * @access     public
    */
   masquerErreur : function(element_id)
   {
      if (document.getElementById(element_id))
      {
         // On vide le bloc
         document.getElementById(element_id + '_erreur_mess').innerHTML = '';
         // On masque le bloc
         document.getElementById(element_id + '_erreur_mess').style.display = 'none';
         // On déhighlight le champ
         document.getElementById(element_id).style.borderColor = '#ccc';
      }
   },
   
   
   /*------------------------------------------------------------------------------------
    *  R E P O N S E
    *------------------------------------------------------------------------------------/


   /**
    * Fonction qui cree ou supprime le formulaire de reponse à une reaction
    *
    * @author     Kris
    * @param      int      id_reaction       l'identifiant de la reaction mere
    * @param      int      id_item           l'identifiant de l'item
    * @access     public
    */
   afficheFormulaireReponse : function(id_reaction, id_item)
   {
      var url = window.location.host;
      var url_form_logue, url_form_non_logue;
      
      if (document.getElementById('item_reactions_ouvertes').value == 1)
		{
			if (document.getElementById(id_reaction).style.display == "none")
	      {
	         // Affichage du formulaire
	         document.getElementById(id_reaction).style.display = "block";
	         if (MIA.Perso.estEnregistre == true)
	         {
	            MIA.Dom.demanderChargementFragmentFromURL(document.getElementById(id_reaction), MIA.Conf.reaction.form_reponse_logue, MIA.Reaction.updateFormulaireReponse, new Array(id_reaction, id_item));
	         }
	         else
	         {
	            MIA.Dom.demanderChargementFragmentFromURL(document.getElementById(id_reaction), MIA.Conf.reaction.form_reponse_nonlogue, MIA.Reaction.updateFormulaireReponse, new Array(id_reaction, id_item));
	         }
	      }
	      else
	      {
	         // Suppression du formulaire
	         var node = document.getElementById(id_reaction);
	         while (node.firstChild)
	         {
	            node.removeChild(node.firstChild);
	         }
	         document.getElementById(id_reaction).style.display = "none";
	      }
		}
		else
		{
			if (document.getElementById('item_reactions_ouvertes').value == 2 && MIA.Perso.estEnregistre)
			{
				if (document.getElementById(id_reaction).style.display == "none")
				{
					document.getElementById(id_reaction).style.display = "block";
					MIA.Dom.demanderChargementFragmentFromURL(document.getElementById(id_reaction), MIA.Conf.reaction.form_reponse_logue, MIA.Reaction.updateFormulaireReponse, new Array(id_reaction, id_item));
				}
				else
				{
					// Suppression du formulaire
	            var node = document.getElementById(id_reaction);
	            while (node.firstChild)
	            {
	               node.removeChild(node.firstChild);
	            }
	            document.getElementById(id_reaction).style.display = "none";
				}
			}
		}
   },
   
   
   /**
    * Fonction qui modifie le formulaire de la reponse
    *
    * @author     Kris
    * @param      Array   tab_param  2 paramètres : [0]-> identifiant de la reaction / [1]-> identifiant de l'item
    * @access     public
    */
   updateFormulaireReponse : function( tab_param )
   {
      var id_reaction = tab_param[0];
      var id_item     = tab_param[1];

      var node = document.getElementById('form_reponse');
      node.removeAttribute("name");
      node.removeAttribute("id");
      node.setAttribute("name", "form_" + id_reaction);
      node.setAttribute("id", "form_" + id_reaction);
      
      node = document.getElementById('id_rea');
      node.removeAttribute('id');
      node.setAttribute('id', 'id_rea_' + id_reaction);
      node.setAttribute("value", id_reaction);

      node = document.getElementById('id_item');
      node.removeAttribute('id');
      node.setAttribute('id', 'id_item_' + id_reaction);
      node.setAttribute("value", id_item);

      node = document.getElementById('rea_bouton');
      node.removeAttribute('id');
      node.setAttribute('id', 'rea_bouton_' + id_reaction);
      node.onclick = function(evnt){ MIA.Reaction.verifierFormulaireReponse(id_reaction); };
      
      node = document.getElementById('rea_texte');
      node.removeAttribute('id');
      node.setAttribute('id', 'rea_texte_' + id_reaction);
      
      node = document.getElementById('rea_texte_erreur_mess');
      node.removeAttribute('id');
      node.setAttribute('id', 'rea_texte_' + id_reaction + '_erreur_mess');
      
      if (MIA.Perso.estEnregistre)
      {
         // L'avatar
         node = document.getElementById('rea_sign_avatar');
         node.removeAttribute('id');
         node.setAttribute('id', 'rea_sign_avatar_' + id_reaction);
         node.setAttribute('src', MIA.Conf.general.medias_url + MIA.Perso.infos.avatar);
         
         // Le pseudo
         node = document.getElementById('rea_sign_pseudo');
         node.removeAttribute('id');
         node.setAttribute('id', 'rea_sign_pseudo_' + id_reaction);
         node.innerHTML = '<b>' + MIA.Perso.infos.pseudo + '</b>';
      }
      else
      {
         // Le pseudo
         node = document.getElementById('rea_pseudo');
         node.removeAttribute('id');
         node.setAttribute('id', 'rea_pseudo_' + id_reaction);
         
         // Le message d'erreur du pseudo
         node = document.getElementById('rea_pseudo_erreur_mess');
         node.removeAttribute('id');
         node.setAttribute('id', 'rea_pseudo_' + id_reaction + '_erreur_mess');
      }
   },


   /**
    * Fonction qui valide (ou non) le formulaire de reponse a une reaction
    * S'il est validé, la fonction submit le formulaire
    *
    * @author     Kris
    * @param      int      id_reaction    l'identifiant de la reaction mere
    * @access     public
    */
   verifierFormulaireReponse : function(id_reaction)
   {
      // le formulaire
      var form = document.getElementById("form_" + id_reaction);
		
      // On désactive le bouton valide
      document.getElementById('rea_bouton_' + id_reaction).onclick = null;
      
      // On masque les potentiels messages d'erreur
      MIA.Reaction.masquerErreur('rea_pseudo_' + id_reaction);
      MIA.Reaction.masquerErreur('rea_texte_' + id_reaction);
      
      // la variable d'erreur
      var erreur = false;

      //----- LE TEXTE DE LA REPONSE
      // Verification des champs vide
		var texte = MIA.Tool.trim(document.getElementById('rea_texte_' + id_reaction).value);
      if (texte == '')
      {
         MIA.Reaction.afficherErreur('rea_texte_' + id_reaction, MIA.Tool.utf8_decode("Vous n'avez pas saisi de texte à votre réponse"));
         erreur = true;
      }
      // verification de la longueur du champ
      if (texte.length > MIA.Conf.reaction.longueur_texte)
      {
         MIA.Reaction.afficherErreur('rea_texte_' + id_reaction, MIA.Tool.utf8_decode("Le texte de votre réponse est trop long - Taille maximale : " + MIA.Conf.reaction.longueur_texte));
         erreur = true;
      }
      
      //----- LE PSEUDO DE LA REACTION - S'IL EXISTE DANS LE FORMULAIRE
      if (document.getElementById('rea_pseudo_' + id_reaction))// || (form.rea_pseudo_logue && anonym_log))
      {
         var pseudo = document.getElementById('rea_pseudo_' + id_reaction).value;
         pseudo = MIA.Tool.trim(pseudo);
         // Verification du champs vide
         if (pseudo == '' || pseudo == 'Mon pseudo')
         {
            MIA.Reaction.afficherErreur('rea_pseudo_' + id_reaction, MIA.Tool.utf8_decode("Vous avez oublié de choisir votre pseudo pour cette réponse !"));
            erreur = true;
         }
			
			// Test de la validite du pseudo
         var message_validation_pseudo = 'ok';
         if(document.getElementById('rea_pseudo_' + id_reaction))
         {
            message_validation_pseudo = MIA.Validator.valideSyntaxeAlias(document.getElementById('rea_pseudo_' + id_reaction));
         }
         
         if (message_validation_pseudo != "ok")
         {
            MIA.Reaction.afficherErreur('rea_pseudo_' + id_reaction, message_validation_pseudo);
            erreur = true;
         }
      }
      
      if (erreur)
      {
         // On réactive le bouton
         document.getElementById('rea_bouton_' + id_reaction).onclick = function(evnt){ MIA.Reaction.verifierFormulaireReponse(id_reaction); };
         return false;
      }
      
      form.submit();
      
      
      //----- LE CAPTCHA - UNIQUEMENT POUR LES MEMBRES NON LOGUES
      /*
      if (MIA.Conf.general.afficher_captcha == 1 && !MIA.Perso.estEnregistre)
      {
         // Vérification que le champ ne soit pas vide
         if (form.elements['cptc_valeur'].value == "") {
            MIA.Reaction.afficherErreurReponse(MIA.Tool.utf8_decode("Vous n'avez pas saisi le code de sécurité"), id_reaction);
            document.getElementById('rea_bouton_' + id_reaction).onclick = function(evnt){ MIA.Reaction.verifierFormulaireReponse(id_reaction); };
				return false;
         }
            
         // Vérification du captcha via requête ajax
         var objets = {};
         objets.cptc_valeur =  MIA.AjaxTools.Encoder.sanitizeForJson( form.elements['cptc_valeur'].value );
         objets.cptc_defaut =  MIA.AjaxTools.Encoder.sanitizeForJson( form.elements['cptc_defaut'].value );
         var args = {};
			args.id_reaction = id_reaction;
			args.rea_type    = 'reponse';
         var callback = MIA.Reaction._callbackVerifierCaptcha;
         MIA.Communication.appelServeur('process.verifier_captcha', objets, callback, '', args);
         return true;
      }
      else
      {
         form.submit();
      }
      return true;
      */
   },

  
   
   /**
    * Affichage un message liés aux réactions
    */
   chargeMessage : function()
   {      
      // Création du tableau
      var message = new Array(5);
      message['40aine']    = 'Votre compte a &eacute;t&eacute; plac&eacute; en quarantaine. Vous ne pouvez plus effectuer de r&eacute;action tant que celui-ci ne sera pas d&eacute;bloqu&eacute; par notre &eacute;quipe de mod&eacute;ration.';
      message['supp']      = 'Votre compte a &eacute;t&eacute; supprim&eacute;. Vous ne pouvez plus effectuer de r&eacute;action.';
      message['rea-ok']    = 'Votre r&eacute;action est prise en compte. Cependant, elle n\'appara&icirc;tra parmi les autres r&eacute;actions qu\'apr&eacute;s la validation de celle-ci par une personne de notre &eacute;quipe de mod&eacute;ration';
      message['rep-ok']    = 'Votre r&eacute;ponse &agrave; la r&eacute;action est prise en compte. Cependant, elle n\'appara&icirc;tra parmi les autres r&eacute;ponses qu\'apr&eacute;s la validation de celle-ci par une personne de notre &eacute;quipe de mod&eacute;ration';
      message['notif-off'] = 'Vous demande de suppression de notification a &eacute;t&eacute; prise en compte';
          
      var code = MIA.Conf.variablesEnGet.code;

      // Affichage du message
      if (code)
      {
         MIA.Header.afficherMessageTemporaire('succes', message[code]);
      }
   },
   
   
   /**
    * Fonction parcouant le DOM est affichant les boutons "rejeter" qu'elle trouve
    *
    * @param    string   type_objet   le type d'élément (reaction ou reponse)
    * @param    string   dom_elt      l'id de la div générale dans laquelle rechercher les boutons "rejeter"
    * @author   Kris
    * @access   public
    */
   afficherBoutonRejeter : function(type_objet, dom_elt)
   {
      // Définition du nombre de caractères pour la vérification du nom des divs (refuser_reaction / refuser_reponse)
      var nb_char = 16;
      if (type_objet == 'reponse') nb_char--;
      
      // L'utilisateur peut supprimer les réactions
      if (dom_elt)
      {
         // Nous sommes dans le cas des réponses
         var elts_du_dom = document.getElementById(dom_elt).getElementsByTagName('*');
      }
      else
      {
         // Nous sommes dans le cas des réactions
         var elts_du_dom = document.getElementsByTagName('*');
      }
      
      var id_objet;
     
      for (var i = 0; i < elts_du_dom.length ; i++)
      {
         if ((elts_du_dom[i].id).substr(0, nb_char) == ('refuser_' + type_objet))
         {
            // Il s'agit d'un bouton 'rejeter'
            // On récupère l'identifiant de la réaction
            id_objet = (elts_du_dom[i].id).split('_');
            // Affichage du lien 'rejeter'
            elts_du_dom[i].style.display = 'inline';
            // Ajout de l'action sur le lien 'rejeter'
            YAHOO.util.Event.addListener(document.getElementById('lien_refuser_' + type_objet + '_' + id_objet[2]), "click", MIA.Reaction.rejeterReaction, {id_objet : id_objet[2], type_objet : type_objet});
         }
      }
   },
   
   
   /**
    * Fonction utiliser lors du chargement des blocs de réponses afin de définir si l'utilisateur peut rejeter ou non les réponses
    *
    * @param    string   type_objet   le type d'élément (reaction ou reponse - ici reponse)
    * @param    string   dom_elt      l'id de la div générale dans laquelle ont été insérés les réponses
    * @author   Kris
    * @access   public
    */
   optionRejeterReponses : function(type_objet, dom_elt)
   {
      if (MIA.Item.testDroitsUtilisateur())
      {
         // L'utilisateur a les droits sur le module -> Affichage du lien rejeter
         MIA.Reaction.afficherBoutonRejeter(type_objet, dom_elt);
      }
   },
   
   
   /**
    * Fonction qui rejete une réaction/réponse (appel du traitement)
    *
    * @param    objet   e     obligé pour l'API yahoo
    * @param    objet   obj   l'objet passé en paramètre
    * @author   Kris
    * @access   public
    */
   rejeterReaction : function(e, obj)
   {
      if (MIA.Perso.estEnregistre && MIA.Item.testDroitsUtilisateur())
      {
         // Si l'utilisateur est loggué et qu'il a les droits sur le module
         var objets = {};
         objets.id_objet   = obj.id_objet;
         objets.type_objet = obj.type_objet;
         
         var arg = '';
         var callback = MIA.Reaction.rejeterReactionCallback;
         MIA.Communication.appelServeur('process.module.reaction.rejeter', objets, callback, '', arg); 
      }
   },
   
   
   /**
    * Fonction de callback de rejet d'une réaction (fonction rejeterReaction)
    * Suppression du DOM de la réaction/réponse
    *
    * @param    objet   arg    le retour du traitement
    * @author   Kris
    * @access   public
    */
   rejeterReactionCallback : function(args)
   {
      try
      {
         var retObjets = MIA.Communication.traiterReponseServeur(args);
         if (retObjets)
         {
            if (retObjets['error'] == 1)
            {
               // Erreur -> affichage du message
               alert(MIA.Tool.utf8_decode(retObjets['error_message']));
            }
            else
            {
               // On supprime le div de la réaction/réponse
               var element = document.getElementById('bloc_' + retObjets['type_objet'] + '_' + retObjets['id_objet']);
               while (element.firstChild) {
                  element.removeChild(element.firstChild);
               }
               element.parentNode.removeChild(element); 
            }
         }
      }
      catch(e)
      {  
         if (e.message != null)
         {   
            //cas d une erreur javascript
            
            //alert(e.message); //mode debug 
            alert(MIA.Conf.traitement_front_erreurs[0]); //mode "user friendly"
         }
         else
         {
            //cas d une exception du a une erreur dans le traitement
            alert(e);
         }
      }
      
   },
   
   
   /**
    * Fonction qui charge le blocs de réponses suivante sur de réaction
    *
    * @param    int      id_reaction    l'identifiant de la réaction
    * @param    string   fragment_url   l'url du fragment à charger dans le DOM
    * @author   Kris
    * @access   public
    */
   chargerPageSuivante : function(id_reaction, fragment_url)
   {
      MIA.Dom.demanderChargementFragmentFromURL(document.getElementById('reponses_' + id_reaction), fragment_url, function() { MIA.Reaction.optionRejeterReponses('reponse', 'reponses_' + id_reaction); MIA.Logr.initCompteur(null, document.getElementById('reponses_' + id_reaction)); MIA.Logr.initBouton(null, document.getElementById('reponses_' + id_reaction)); MIA.Logr.initPouce(null, document.getElementById('reponses_' + id_reaction)); });
   },

   
   /**
    * Fonction qui charge l'annonce au dessus de la réaction/réponse crée par un anonyme
    *
    * @author   Kris
    * @access   public
    */
   chargeMessageCreationAnonyme : function()
   {
      if (MIA.Conf.variablesEnGet.annonce && document.getElementById('reaction_annonce_' + MIA.Conf.variablesEnGet.id_reaction) && !MIA.Reaction.annonce_deja_affichee)
      {
         var annonce = '<a href="' + MIA.Conf.general.url_login + '?a=creer">' + MIA.Tool.utf8_decode('Merci de votre réaction. Pourquoi ne pas créer un compte ?<br />C\'est rapide et gratuit !') + '</a>';
         document.getElementById('reaction_annonce_' + MIA.Conf.variablesEnGet.id_reaction).innerHTML = annonce;
         MIA.Reaction.annonce_deja_affichee = true;
      }
   }
} // fin classe MIA.Reaction


/**
 * Declarations d'evenements
 */
MIA.Perso.evtStatutUtilisateurDetecte.subscribe(MIA.Reaction.chargerFormulaireReaction, MIA.Reaction);
YAHOO.util.Event.addListener(window, "load", MIA.Reaction.chargeMessage);
YAHOO.util.Event.addListener(window, "load", MIA.Reaction.chargeMessageCreationAnonyme);