/**
 * Scripts utilis�s par les pages de type "Liste d'�v�nements"
 */

/**
 * La propri�t� outerHTML n'est pas connue sous Firefox mais bien sous IE.   Afin de r�cup�rer le code HTML d'un objet, il faut
 * donc passer par la fonction ci-dessous.
 * Source : http://www.velocityreviews.com/forums/t518068-outerhtml-not-working-in-firefox.html
 */
function getOuterHTML(object) {
   var element;
   if (!object) return null;
   element = document.createElement("div");
   element.appendChild(object.cloneNode(true));
   return element.innerHTML;
} // function getOuterHTML(object)

/**
 * Supprime les tags <IMG> du code HTML fournit en param�tre 
 */
function removeImgTags(html){

   // Au cas o�, remplace dans le code HTML les &lt; par < et &gt; par >	
   html = html.replace(/&(lt|gt);/g, function (strMatch, p1){ return (p1 == "lt")? "<" : ">"; });
   
   // Supprime les tags IMG
   var txt = html.replace(/<IMG\/?[^>]+(>|$)/g, "");
   txt = txt.replace(/<img\/?[^>]+(>|$)/g, "");
	
   return txt; 		
} // function removeImgTags(html)

window.addEvent('domready',function() {

   function $(id) { return document.getElementById(id); }

   // Si le bouton Copy to clipboard est pr&sent et si la table des évènements est générée, gère l'évènement onClick sur le bouton 
   // Utiliser une classe thirdparty (http://code.google.com/p/zeroclipboard/) qui permet de copier un contenu HTML dans le clipboard
	
   if ( $$('d_clip_button') && $$('se_events_table') ) {
	  
	  var tbl = $$('table.se_events_table');
	  
	  // Boucle et traite chaque liste d'évènements au format <table>
	  // Il peut effectivement y avoir plusieurs tableaux dans la page (liste des évènements de la journée, en cours, prochains, passés).
	  
      tbl.each(function(el) {
    	  
    	 // Récupère le ID du tableau (p.e. "se_events_table_next")
    	  
	     var tblID = el.id;
	     
	     // Isole le suffixe (p.e. "_next") car il sera utilisé plus tard
         
         var suffixe = tblID.replace('se_events_table', '');

		 var clip = null;
		  
		 // html va contenir le code HTML du tableau des �v�nements.  Afin de permettre de copier seulement les donn�es et pas les images comme
		 // par exemple "hot" ou "private", utilise une petite fonction JS pour supprimer les tags
		  
		 var html = removeImgTags(getOuterHTML($(tblID)));

	     // Instantiation de la classe ZeroClipboard si la classe Mootools est chargée
		 
		 if (!(typeof(ZeroClipboard)==='undefined')) {

		    clip = new ZeroClipboard.Client();
			
   	        clip.setHandCursor(true);
	     
   	        // Mise à jour du textarea "se_txt_clipboard" lorsqu'on passe la souris sur le bouton de copie
	     
	        clip.addEventListener('mouseOver', function (client) { clip.setText( html ); });
	     			
   	        // Quand l'utilisateur va cliquer sur le bouton, affichage d'un message pour l'informer que la copie est réalisée
	     
	        clip.addEventListener('complete', function (client, text) { alert($('se_txt_copied_into_clipboard'+suffixe).innerHTML); });
	      
	        clip.glue( 'd_clip_button'+suffixe, 'd_clip_container'+suffixe );
	        
		 } // if (!(typeof(ZeroClipboard)==='undefined'))
		  
      }); // tbl.each(function(el)
		
   } // if ( $$('d_clip_button') && $$('se_events_table') )
   
});   // window.addEvent('domready',function()

