/**
 * Librairie javascript pour les pages d'items
 *
 * @package       lesite
 * @subpackage    js
 * @author        Kris
 * @author        $Author: kris $
 * @version       $Revision: 41417 $
 * @date          $Date: 2009-07-15 16:25:32 +0200 (Wed, 15 Jul 2009) $
 * @id            $Id: item.js 41417 2009-07-15 14:25:32Z kris $
 */



if (undefined===window.MIA)
{
   var MIA = {};
}
MIA.Item =
{
   class_name : "Item",
	
	liste_tags : new Array(),
	
	liste_tags_width : 480,
	
	liste_tags_slide_actif : 1,
	
	liste_tags_nb_slide : 1,
	
	timer_affichage_profil : null,
   
   
   /**
    * Fonction qui teste si l'utilisateur a le droit sur l'item affiché ou non
    *
    * @author     Kris
    * @access     public
    */
   testDroitsUtilisateur : function()
   {
      var droits = 0;
      if (MIA.Perso.estEnregistre)
      {
         var item_auteurs = document.getElementById('item_auteurs').value;
         var tab = item_auteurs.split('-');
          
         // Test de l'auteur_id
         if (tab[0] == MIA.Perso.infos.id)
            droits = 1;

         // Test du groupe_id
         /*if (tab[0] != 0 && MIA.Perso.infos.groupes)
         {
            // On lit les groupes
            var groupes = MIA.Cookie.readGroupeField(MIA.Perso.infos.groupes);
            var nb_groupes = groupes.length;
            for (var cpt = 0 ; cpt < nb_groupes ; cpt ++)
            {
               if (groupes[cpt]['id'] == tab[1])
                  droits = 1
            }
         }*/
         
         // Test sudo
         if (MIA.Perso.infos.sudo)
            droits = 1;
      }
      return droits;
   },


   /**
    * Fonction qui affiche le bouton d'action en correspondance avec les droits de l'utilisateur
    * Droits = ok >> bouton "Modifier ce post" + rejet sur les réactions
    * Droits = ko >> boutons "Ajouter à ma page"
    *
    * @author     Kris
    * @access     public
    */
   afficherBoutonAction : function()
   {
   	if (MIA.Item.testDroitsUtilisateur())
      {
         // L'utilisateur peut modifier l'item / Bouton Modifier
         MIA.Item.afficherBoutonModifier();
         // L'utilisateur peut rejeter les réactions/réponses - Vérification que le module réaction est présent sur la page
         if (document.getElementById('mareaction'))
         {
            MIA.Reaction.afficherBoutonRejeter('reaction', '');
				MIA.Reaction.afficherBoutonRejeter('reponse', '');
         }
      }
      /*else
      {
         // L'utilisateur ne peut pas modifier l'item / Bouton "ajouter à ma page" � ma page
         MIA.Item.afficherBoutonAjouterAMaPage();
      }*/
   },
   

   /**
    * Fonction qui affiche le bouton "Inviter XXX dans mon groupe"
    *
    * @author     Kris
    * @access     public
    */
   afficherBoutonInviterDansMonGroupe : function()
   {
      if (MIA.Perso.estEnregistre && MIA.Cookie.readGroupeField(MIA.Perso.infos.groupes))
      {
         // Si l'utilisateur est loggué et appartient à un ou plusieurs groupes
         if (document.getElementById('inviter_membre_groupe_haut'))
         {
            document.getElementById('inviter_membre_groupe_haut').style.display = 'inline';
         }
         if (document.getElementById('inviter_membre_groupe_bas'))
         {
            // Tous les modules n'ont pas de signature en bas de page
            document.getElementById('inviter_membre_groupe_bas').style.display = 'inline';
         }
      }
   },


   /**
    * Fonction qui affiche le bouton "Ajouter à ma page"
    *
    * @author     Kris
    * @access     public
    */
   /*afficherBoutonAjouterAMaPage : function()
   {
      document.getElementById('ajouter_page_haut').style.display = 'inline';
      if (document.getElementById('ajouter_page_bas'))
      { 
         // Tous les modules n'ont pas de signature en bas de page
         document.getElementById('ajouter_page_bas').style.display = 'block';
      }
   },*/


   /**
    * Fonction qui affiche le bouton "Modifier"
    *
    * @author     Kris
    * @access     public
    */
   afficherBoutonModifier : function()
   {
		if (document.getElementById('modifier_supprimer_post'))
      { 
         // Tous les modules n'ont pas de signature en bas de page
         document.getElementById('modifier_supprimer_post').style.display = 'block';
      }
   },


   /**
    * Fonction qui lance les actions pour afficher (ou non) les boutons d'option sur la page module
    *
    * @author     Kris
    * @access     public
    */
   afficherBoutonActionItem : function()
   {
      YAHOO.util.Event.addListener(window, "load", MIA.Item.afficherBoutonAction);
      if (MIA.Perso.estEnregistre)
      {
         // Si l'utilisateur est loggué, on lance les actions pour afficher les boutons
         YAHOO.util.Event.addListener(window, "load", MIA.Item.afficherBoutonInviterDansMonGroupe);
      }
   },
   
   /**
    * Fonction qui permet de partager le contenu sur 3 plateformes
    *
    * @param      plateforme     le nom de la plateforme
    * @author     Kris
    * @access     public
    */
   partagerItem : function(plateforme)
   {
      var item_url = document.getElementById('blog_item_url').value;
      var item_titre = MIA.Tool.utf8_decode(document.getElementById('blog_item_titre').value);
      var item_desc = MIA.Tool.utf8_decode(document.getElementById('blog_item_desc').value);
      
      switch (plateforme)
		{
         case "facebook":
            MIA.Tool.ouvrirPopup('http://www.facebook.com/sharer.php?u=' + item_url , 'facebook', 'toolbar=0,status=0,height=436,width=646,scrollbars=yes,resizable=yes');
         break;
         
         case "digg":
            MIA.Tool.ouvrirPopup('http://digg.com/remote-submit?phase=2&url=' + item_url + '&title=' + item_titre + '&bodytext=' + item_desc, 'digg', 'toolbar=0,status=0,height=450,width=650,scrollbars=yes,resizable=yes');
         break;
         
         case "delicious" :
            MIA.Tool.ouvrirPopup('http://del.icio.us/post?url=' + item_url + '&title=' + item_titre, 'del.icio.us', 'toolbar=0,status=0,height=450,width=700,scrollbars=yes,resizable=yes');
         break;
			
			case "wikio" :
            MIA.Tool.ouvrirPopup('http://www.wikio.fr/vote?url=' + item_url, 'wikio', 'toolbar=0,status=0,height=450,width=700,scrollbars=yes,resizable=yes');
         break;
			
			case "scoopeo" :
			   MIA.Tool.ouvrirPopup('http://www.scoopeo.com/scoop/new?newurl=' + item_url + '&title=' + item_titre + '&content=' + item_desc, 'scoopeo', 'toolbar=0,status=0,height=450,width=700,scrollbars=yes,resizable=yes');
			break;
			
			case "tapemoi" :
            MIA.Tool.ouvrirPopup('http://tapemoi.com/submit.php?url=' + item_url, 'tapemoi', 'toolbar=0,status=0,height=450,width=700,scrollbars=yes,resizable=yes');
         break;
      }
   },
	
	/**
	 * Affichage d'un message de confirmation dans le header de la page lros de l'envoi du module par email
	 */
	afficherMessage : function()
	{
		// on récupère le paramètre "code" en querystring
      var code = MIA.Conf.variablesEnGet.code;

      // on affiche le message
      if (code == 'envoi_confirmation')
      {
         MIA.Header.afficherMessageTemporaire("succes", "Votre &eacute;l&eacute;ment a bien &eacute;t&eacute; envoy&eacute;.");
      }
	},
	
	/**
	 **  S P E C I A L  
	 **     E L E C T I O N 
	 **        M U N I C I P A L E S
	 **              2 0 0 8
	 **/
	
	toggleHideListeSection : function(codeInsee)
   {
		var dom_elt = document.getElementById('resultats_municipale').getElementsByTagName('div');
		for(var i = 0 ; i < dom_elt.length ; i ++)
      {
         if (dom_elt[i].getAttribute('name') && dom_elt[i].getAttribute('name') == 'resSection')
         {
            dom_elt[i].style.display = 'none';
         }
			
      }
		
		var dom_elt = document.getElementById('resultats_municipale').getElementsByTagName('a');
      for(var i = 0 ; i < dom_elt.length ; i ++)
      {
         if (dom_elt[i].getAttribute('name') && dom_elt[i].getAttribute('name') == 'onglet')
         {
            dom_elt[i].className = 'lien_onglet';
         }
      }

		// On affiche la bonne section
		document.getElementById('onglet-' + codeInsee).className = 'lien_onglet_select';
		document.getElementById('resSection-' + codeInsee).style.display = 'block';
	},

   toggleHideListeCandidats : function (listId)
   {
      var element = document.getElementById('detail_list-'+listId);
      if(element)
      {
         if(element.style.visible == 'true')
         {
            // On le cache
            element.style.visible = 'hidden';
            element.style.display = 'none';
				document.getElementById('fleche_' + listId).src = MIA.Conf.general.www_medias_url + '/img/elections-municipales/liste_closed.gif'
         }
         else
         {
            // On l'affiche
            element.style.visible = 'true';
            element.style.display = 'block';
				document.getElementById('fleche_' + listId).src = MIA.Conf.general.www_medias_url + '/img/elections-municipales/liste_opened.gif'
         }
      }
   },
	
	/**
	 * Affiche un onglet de la boite à tag
	 * @param {Object} onglet_id    l'identifiant de la div à faire slider
	 */
	afficherOngletBoiteTags : function(onglet_id)
   {
      for (var cpt = 0; cpt < MIA.Item.liste_tags.length ; cpt ++)
      {
         document.getElementById('items_' + MIA.Item.liste_tags[cpt][0]).style.display = 'none';
         document.getElementById('tag_' + MIA.Item.liste_tags[cpt][0]).className = 'tag';
      }
      document.getElementById('items_' + onglet_id).style.display = 'block';
      document.getElementById('tag_' + onglet_id).className = 'tag select';
   },
	
	/**
	 * Permet de faire le slide la liste des tags
	 * @param {Object} e
	 * @param {Object} obj
	 */
	slideListeTags : function(e, obj)
	{
		if (MIA.Item.liste_tags_nb_slide > 1)
		{
			if (obj.sense_de_slide == 'droite' && MIA.Item.liste_tags_slide_actif == MIA.Item.liste_tags_nb_slide)
			{
				return;
			}
			
			if (obj.sense_de_slide == 'gauche' && MIA.Item.liste_tags_slide_actif == 1)
         {
            return;
         }
			
			// Déplacement à droite possible (on change de slide)
			if (obj.sense_de_slide == 'droite' && MIA.Item.liste_tags_slide_actif < MIA.Item.liste_tags_nb_slide)
			{
			   MIA.Item.liste_tags_slide_actif ++;				
			}
			// Déplacement à gauche possible (on change de slide)
			if (obj.sense_de_slide == 'gauche' && MIA.Item.liste_tags_slide_actif != 1)
			{
				MIA.Item.liste_tags_slide_actif --;
			}
			 
			// Calcul de la taille du déplacement à gauche
			var taille_a_gauche = 0;
			for (var cpt = 0; cpt < MIA.Item.liste_tags.length ; cpt ++)
         {
            if (MIA.Item.liste_tags[cpt][2] <= (MIA.Item.liste_tags_slide_actif - 1))
				{
					taille_a_gauche += MIA.Item.liste_tags[cpt][1];
				}
	      }
         // Déplacement
			document.getElementById('barre_tags').style.left = '-' + taille_a_gauche + 'px';
			
			// Activation/Désactivation des flèches
			if (MIA.Item.liste_tags_slide_actif == MIA.Item.liste_tags_nb_slide)
			{
				document.getElementById('fleche_droite').src = MIA.Conf.general.www_medias_url + '/img/tags_arrow_right_off.gif';
				document.getElementById('fleche_droite').style.cursor = 'default';
			}
			if (MIA.Item.liste_tags_slide_actif == 1)
			{
				document.getElementById('fleche_gauche').src = MIA.Conf.general.www_medias_url + '/img/tags_arrow_left_off.gif';
				document.getElementById('fleche_gauche').style.cursor = 'default';
			}
			
			if (MIA.Item.liste_tags_slide_actif < MIA.Item.liste_tags_nb_slide)
			{
				document.getElementById('fleche_droite').src = MIA.Conf.general.www_medias_url + '/img/tags_arrow_right.gif';
				document.getElementById('fleche_droite').style.cursor = 'pointer';
			}
			
			if (MIA.Item.liste_tags_slide_actif > 1)
         {
            document.getElementById('fleche_gauche').src = MIA.Conf.general.www_medias_url + '/img/tags_arrow_left.gif';
				document.getElementById('fleche_gauche').style.cursor = 'pointer';
         }
			
			// Sélection du premier onglet de la liste des tags du slide
			var slide = 0;
			var tag_libelle_url_friendly = '';
			cpt = 0;
			while (slide != MIA.Item.liste_tags_slide_actif)
			{
				slide = MIA.Item.liste_tags[cpt][2];
				tag_libelle_url_friendly = MIA.Item.liste_tags[cpt][0];
				cpt ++;
			}
			
			MIA.Item.afficherOngletBoiteTags(tag_libelle_url_friendly);
		}
	},

	
	/**
	 * Charge le code HTML du profil dans la page de contenu
	 */
	chargerProfil : function()
   {
      var dom_elt = document.getElementById('rollover_avatar');
		if (document.getElementById('profil_a_charger'))
		{
         var url_a_charger = document.getElementById('profil_a_charger').value;
      
         if (url_a_charger)
         {
            MIA.Dom.demanderChargementFragmentFromURL(dom_elt, url_a_charger, MIA.Item.updateChargerProfil);        
         }	
		}
   },
	
	/**
	 * Met à jour le code HTML avec les actions pour la favorisation et les compteurs
	 */
	updateChargerProfil : function()
	{
		var dom_elt = document.getElementById('rollover_avatar');
		MIA.Logr.initCompteur(null, dom_elt);
      MIA.Logr.initBouton(null, dom_elt);
      MIA.Logr.initPouce(null, dom_elt);
      MIA.Favori.initBouton(dom_elt);
	},
	
	/**
	 * Affiche le profil du membre/groupe au rollover de la souri sur l'avatar
	 * @param {Object}  event    l'évènement sur la page
	 * @param string    type     permet de savoir s'il faut prendre en comtpe la position de la souri ou non     
	 */
	afficherProfil : function(event, type)
	{	
      if (MIA.Item.timer_affichage_profil)
      {
         clearTimeout(MIA.Item.timer_affichage_profil);
         MIA.Item.timer_affichage_profil = null;
      }
		
		gk = window.Event ? 1 : 0; // navigateurs Gecko ou IE
      de = !document.documentElement.clientWidth ? document.body : document.documentElement; // IE

      
		if (!event && window.event)
         event = window.event;
      
		sx = gk ? pageXOffset : de.scrollLeft; //scroll h (pour IE)
      sy = gk ? pageYOffset : de.scrollTop; //scroll v (pour IE)

		x = gk ? event.pageX : event.clientX; //curseur x
      y = gk ? event.pageY : event.clientY; //curseur y
      
		// Si on est sur IE
		if (!gk)
		{
         x = x + sx;
         y = y + sy;	
		}

      if (type == 'avatar')
		{
         document.getElementById('rollover_avatar').style.left = (x - 290) + 'px';
         document.getElementById('rollover_avatar').style.top = y + 'px';
      }
		document.getElementById('rollover_avatar').style.position = 'absolute';
      document.getElementById('rollover_avatar').style.display = 'block';
	},
	
	/**
	 * Masque le profil du membre/groupe
	 */
	masquerProfil : function()
	{
		document.getElementById('rollover_avatar').style.display = 'none';
	},
	
	/**
	 * Timer pour le profil du membre/groupe
	 */
	timerAfficherProfil : function()
	{
		MIA.Item.timer_affichage_profil = setTimeout('MIA.Item.masquerProfil()', 500);
	}
}

/**
 * Declarations d'evenements
 */
MIA.Perso.evtStatutUtilisateurDetecte.subscribe(MIA.Item.afficherBoutonActionItem);
YAHOO.util.Event.addListener(window, "load", MIA.Item.afficherMessage);
YAHOO.util.Event.onDOMReady(MIA.Item.chargerProfil);
