/**
 * Librairie javascript de manipulation du Dom
 *
 * @package       lesite
 * @subpackage    js
 * @author        Edouard Andrieu
 * @author        $Author: kris $
 * @version       $Revision: 33637 $
 * @date          $Date: 2008-09-01 03:39:19 +0200 (Mon, 01 Sep 2008) $
 * @id            $Id: dom.js 33637 2008-09-01 01:39:19Z kris $
 */
if (undefined===window.MIA)
{
   var MIA = {};
}
MIA.Dom =
{
   class_name : "Dom",

   /**
    * @description méhode de callback qui charge le html recu dans l'élément
    * @method chargerInnerHTML
    * @param string element_id id de l'element dont on souhaite changer le innerHTML
    * @param string url url du html que l'on souhaite insérer dans l'élément
    * @return void
    * @private
    */
   demanderChargementFragmentFromURL : function(element, url, callback, argument)
   {

      if (!callback)
      {
         callback = false;
      }

      if (!argument)
      {
         argument = null;
      }

      var request_callback =
      {
         success:MIA.Dom.chargerInnerHTML,
         failure:function() {return false;},
         argument: {element: element, callback: callback, argument: argument, url : url},
         timeout: MIA.Conf.communication.timeout
      };
      var request = YAHOO.util.Connect.asyncRequest('GET', url, request_callback);
   },

   /**
    * @description méhode de callback qui charge le html recu dans l'élément
    * @method chargerInnerHTML
    * @param {object} o objet transmis par xmlHttpRequest
    * @return void
    * @private
    */
   chargerInnerHTML : function(o)
   {
      if (o.argument.element)
      {
         o.argument.element.innerHTML  = '<!-- fragment:'+o.argument.url+' -->'+o.responseText+'<!-- /fragment:'+o.argument.url+' -->';

         MIA.Dom.chargerDemandeurs(o.argument.element);
         // Gestion des encouragements pour les fragments
         //MIA.Logr.initCompteur(null, o.argument.element);
			//MIA.Logr.initBouton(null, o.argument.element);
			//MIA.Logr.initPouce(null, o.argument.element);
         
			// Gestion des favoris pour les fragments
			//MIA.Favori.initBouton(o.argument.element);

         if (o.argument.callback)
         {
            o.argument.callback(o.argument.argument);
         }
      }
   },

   chargerDemandeurs : function(element)
   {//init des pouces encourager

      if (!element || !element.getElementsByTagName)
      {
         element = document;
      }


      var divs_du_dom = element.getElementsByTagName('div');
      MIA.Dom._chargerDemandeursTabElement(divs_du_dom);
      var spans_du_dom = element.getElementsByTagName('span');
      MIA.Dom._chargerDemandeursTabElement(spans_du_dom);

   },

   _chargerDemandeursTabElement : function(tab_elements)
   {
      for (var i = 0; i < tab_elements.length ; i++)
      {
         if(tab_elements[i].getAttribute('load_fragment'))
         {
            MIA.Dom.demanderChargementFragmentFromURL(tab_elements[i],tab_elements[i].getAttribute('load_fragment'));
            tab_elements[i].removeAttribute('load_fragment');
         }
         if(tab_elements[i].getAttribute('load_timestamp'))
         {
            var tab_demande = tab_elements[i].getAttribute('load_timestamp').split('|');
            var timestamp_a_afficher = tab_demande[0];
            var mode_affichage = tab_demande[1];
            var date_formatee = '';
            var ladate = new Date();
            ladate.setTime(timestamp_a_afficher*1000);

            var maintenant = new Date();
            var aujourdhui = maintenant.getDate();
				var m_aujourdhui = maintenant.getMonth();
				var a_aujourdhui = maintenant.getFullYear();

            //si pas le meme jour on affiche la date d'abord
            var jour = ladate.getDate();
				var mois = ladate.getMonth();
				var annee = ladate.getFullYear();
            //alert ('today ' + aujourdhui + ' item ' + jour);
            // si plus vieux que 24 heures, on affiche la date d'abord
            if ((aujourdhui - jour) != 0
				|| ((aujourdhui - jour) == 0 && (m_aujourdhui - mois) != 0)
				|| ((aujourdhui - jour) == 0 && (m_aujourdhui - mois) == 0 && (a_aujourdhui - annee) != 0))
            {
               var jour = ladate.getDate();
               if (jour < 10)
                  jour = '0'+jour;
               var mois = ladate.getMonth() + 1;
               if (mois < 10)
                  mois = '0'+mois;
               if (mode_affichage == 'reaction')
               {
                  date_formatee = "le "+jour+"/"+mois+" ";
               }
               else if (mode_affichage == 'appel')
               {
                  date_formatee = jour+"/"+mois;
                  date_formatee += "<br/>";
               }
            }

            // tjrs montrer l'heure
            var heures = ladate.getHours();
            if (heures < 10)
               heures = '0'+heures;
            var minutes = ladate.getMinutes();
            if (minutes < 10)
               minutes = '0'+minutes;
            if (mode_affichage == 'reaction')
               date_formatee += "&agrave; "+heures+"h"+minutes;
            else if (mode_affichage == 'appel')
               date_formatee += heures+"h"+minutes;
           
			   /** Affichage spécial pour la boite à tags **/
            if (mode_affichage == 'boite_a_tag')
			   {
               if ((aujourdhui - jour) != 0)
					{
						date_formatee = jour + "/" + mois;
					}
					else
					{
						date_formatee = heures+"h"+minutes;
					}
			   }

            tab_elements[i].innerHTML = date_formatee;
            tab_elements[i].removeAttribute('load_timestamp');
         }
      }
   },

   positionnerAncre : function()
   {
      if (MIA.Conf.ancre)
      {
         window.location.hash = '#' + MIA.Conf.ancre;
      }
   },

   afficherTab : function(identifiant,tab_element)
   {
      var tab_tabs = document.getElementsByName('tab_'+identifiant);
      for (var i = 0; i < tab_tabs.length; i++)
      {
         if (tab_tabs[i] == tab_element)
         {
            tab_element.className = 'tab_on';
            document.getElementById('content_'+identifiant+'_'+i).style.display = "block";
         }
         else
         {
            tab_tabs[i].className = 'tab_off';
            document.getElementById('content_'+identifiant+'_'+i).style.display = "none";
         }
      }
   },

   toggleDiv : function(div_id)
   {
      if (document.getElementById(div_id))
		{
	      if (document.getElementById(div_id).style.display == 'block')
	      {
	         document.getElementById(div_id).style.display = 'none';
	      }
	      else
	      {
	         document.getElementById(div_id).style.display = 'block';
	      }	
		}
   },


   getElementsByAttribute : function(attribute, attribute_value, elem_tag, pere_elem)
   {
      return (YAHOO.util.Dom.getElementsBy(function(elem) { return (elem.getAttribute(attribute) == attribute_value); }, elem_tag, pere_elem));
   },
	
	
	
	chargementSynchrone : function (page,  method, data) 
   {
      if (document.all) // bad IE
         var XhrObj = new ActiveXObject ("Microsoft.XMLHTTP");
      else // Mozilla
         var XhrObj = new XMLHttpRequest ();
      
      if (method != null)
      {
         method = method.toUpperCase ();
      }
      else
      {
         method = "GET";
      }  
      
      if (method == "POST")
      {
         XhrObj.open ("POST", page, false);
      }
      else  
      {
         if (data == null)
            XhrObj.open ("GET", page, false);
         else
            XhrObj.open ("GET", page+"?"+data, false);
      }
      
      if (method == "POST") 
      {
         XhrObj.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
         XhrObj.send (data);
         if (XhrObj.readyState == 4 && XhrObj.status == 200)
         {
            return( XhrObj.responseText);
         }
      }
      else
      {
         XhrObj.send (null);
         if (XhrObj.readyState == 4 && XhrObj.status == 200)
         {
            return( XhrObj.responseText);
         }
      }
   }

} // fin classe Dom

if (undefined !== window.YAHOO)
{
   YAHOO.util.Event.addListener(window, "load", MIA.Dom.positionnerAncre);
}