/*
 * Ce fichier g�re la zone des filtres; zone affich�e lorsqu'une liste d'�v�nements est affich�es
 */

/*
 * Gestion de l'effet "slide" qui permet d'afficher/masquer la zone des filtres
 */
window.addEvent('domready',function() {
//alert('AllEvents - Filters.js');	

   // Clic sur la loupe : affiche / cache la zone des filtres

   var obj = document.getElementById('se_img_filters');

   if (obj!=undefined) {

      var div = document.getElementById('se_slide_filters');

      if (div!=undefined) {

         // se_HideFilters est une variable initialis�e par la classe listes.php (com_allevents/class/listes.php)
         //
         // Initialis� � 1 lorsque la zone des filtres doit rester visible m�me si aucun filtre n'est actif.   Cela correspond au AllEventsClassTables "FiltersAreaCollapsed".

         var bShow = 0;
         
         if (se_HideFilters!=undefined) bShow = !se_HideFilters;

         try {
            if (bShow) { div.style.display='inline'; } else {div.style.display='none'; }
         } catch(err) {
         }

         var slide_Filters = new Fx.Slide('se_slide_filters');

         document.getElementById('se_img_filters').addEvent('click', function(e) {
            if (div.style.display == 'none') { div.style.display='inline'; } else {div.style.display='none'; }
            e = new Event(e);
            slide_Filters.hide().toggle();
            e.stop();

         }); // document.getElementById('se_img_filters').addEvent('click', function(e)

      } // if (div!=undefined)

   } // if (obj!=undefined)

   // G�n�re l'�v�nement de fermeture de la zone des filtres lorsqu'on clique sur l'ic�ne repr�sent�e par une croix pour fermer la zone des filtres

   var obj = document.getElementById('se_img_close_filters');

   if (obj!=undefined) {
	   document.getElementById('se_img_close_filters').addEvent('click', function(e) {
         var div = document.getElementById('se_slide_filters');   // Ferme sans animation
         if (div!=undefined) div.setStyle('display', 'none');
      }); // document.getElementById('se_img_close_filters').addEvent('click', function(e)
   } // if (obj!=undefined)

});   // window.addEvent('domready',function()


/*
 * Cette fonction va mettre � jour le contenu de la div en ex�cutant une requ�te (sURL) sur le serveur et
 * en retrouvant la portion de code � mettre � jour (sDivName)
 */
function filter_Update(sDivName, sParams, bReset) {

   bAjax=1;

   // Construit l'URL

   //sTask = ((se_UserIsSeetingSite=='backend') ? 'admin_ajax_show_view' : 'ajax_show_view');
//   sSite = ((se_UserIsSeetingSite=='backend') ? 'administrator/' : '');
   
  // Le param�tre resetFilters va indiquer qu'il faut r�initialiser les filtres qui auraient �t� utilis�s.   Ce param�tre bReset est mis � 1 lorsqu'on clique sur le bouton "R�initialiser"

   if (getQuerystring('layout', '') == 'form') {
	   
      bAjax=0;
	   
      // Le filtre a �t� utilis� depuis le formulaire d'�dition frontend.
	   
//      url = se_form_event_baseurl+sSite+'index.php?option=com_allevents&view=event&layout=form'+sParams.replace('event_id=', 'id=');
      
      sParams = "view=event&layout=form"+sParams.replace('ei=', 'id=');

      try {
          if (se_token!=undefined)    url += '&'+se_token+'=1';
          if (se_Itemid!=undefined)   url += '&Itemid='+se_Itemid;	   
          if (se_event_id!=undefined) url += '&ei='+se_event_id;
          if (se_event_id!=undefined) sParams += '&ei='+se_event_id;

       } catch(err) {
       }

       document.location.replace(url); 

   } else {
	   
	  // Le param�tre eventtype_serialized=-1 est important parce que la liste d'�v�nements a peut-�tre �t� initialis�e afin d'afficher
      // p.e. les �v�nements du jour et ceux en cours (soit 1 et 2).   Si on utilise le filtre afin d'afficher les �v�nements du futur, il faut
	  // donc faire un "reset" de ce param�tre eventtype_serialized
	   
      sParams = "&view="+se_view+"&layout=default&ets=-1"+sParams+"&resetfilters="+bReset;
      
      Ajaxify("ajax_show_view", sParams, sDivName);

   } // if (getQuerystring('layout', '') == 'form')
   
   return true;

} // function filter_Update()

/*
 * Pages donnant les listes des �v�nements (com_allevents\views\allevents) dans le frontend
 * Met � jour la liste des �v�nements en tenant compte des choix op�r�s dans la zone des filtres
 */
function refresh_list_events(sDivName, frmName, bReset) {

   // Le formulaire adminForm n'existe pas ==> nous sommes dans le frontend

   if (frmName=='') {

     // Le nom du formulaire n'est pas d�fini : tente d'acc�der au formulaire "adminForm" et s'il n'existe pas � "filterForm"

     var form = document.adminForm;
     if (form==undefined) form=document.filterForm;

   } else {

     // Le nom du formulaire a �t� d�fini comme param�tre

     var form = eval('document.'+frmName);

   } // if (frmName=='') {

   if (form==undefined) {

      show_failure('filters.js::refresh_list_events()', 'form '+frmName+' seems to be missing.   Please verify the source code of the page.');      

   } else { // if (form==undefined)

      // Parcoure chaque liste d�roulante pr�sente et d�s l'instant o� une liste contient un �l�ment s�lectionn� (SelectedIndex non �gal � 0), ajoute le champs et la valeur
      // � la liste des param�tres
	   
      sParams = "";

      for ( var i=0;i<form.elements.length;i++ ) {

         obj = form.elements[i];

         if (obj.type=='select-one') {
        	 
            if ((obj.name!='') && (obj.selectedIndex>-1)) {
            	
               sParams = sParams + "&" + obj.name+ "=" + obj[obj.selectedIndex].value;
               
            }
         }
      } // for ( var i=0;i<form.elements.length;i++ )
     
      var edt = document.getElementById('se_search');
	  if (edt!=undefined) {		
         if (edt.value!='') sParams += '&se='+encodeURIComponent(edt.value);
	  }

      // Lance la requ�te Ajax et fais la mise-�-jour de le DIV concern�e.

      filter_Update(sDivName, sParams, bReset);

   } // // if (form==undefined)

   return true;

} // function refresh_list_events

/*
 * Applique les filtres
 */
function submit_filters(cbx) {

   if (document.getElementById('se_ShowTable')) {
	   

      // Le filter qui a �t� activ� doit �tre stylis�.

      if (cbx!='') {

         obj = document.getElementById(cbx);
         i=0;

         if (obj!=undefined) {

            if (cbx=='se_search') {

               if (obj.value=='') {
                  obj.className="se_search activefilter";
               } else {
                  obj.className="se_search";
               }

            } else {

               i = obj.selectedIndex;

               if (i!=0) {
                  obj.className="filtersCBX activefilter";
               } else {
                  obj.className="filtersCBX";
               }

            } // if (cbx=='se_search')
         
            if (getQuerystring('debug',0)>=10) {
               // Affiche l'option qui a �t� s�lectionn�e et qui va servir comme filtre 
               if (i>0) alert('filters.js::submit_filters()\n\nFilter '+cbx+'="'+obj.options[i].text+'" (value='+obj.options[i].value+')');
            }

         } else {
      
            show_failure('filters.js::submit_filters()', 'Filters "'+cbx+'" seems to be missing.   Please verify the source code of the page.  Should be impossible.');
            
         }
         
      } // if (cbx!='')
   
      frmName = ((se_UserIsSeetingSite=='backend') ? 'adminForm' : 'filterForm');

      refresh_list_events('se_ShowTable', frmName, 0);
      
   } // if (document.getElementById('se_ShowTable'))

   return;

} // function submit_filters(cbx)

/*
 * R�initialise les filtres
 */
function reset_filters() {

var form = document.adminForm;

   // Le formulaire adminForm n'existe pas ==> nous sommes dans le frontend

   if (form==undefined) form=document.filterForm;
   
   if (form!=undefined) {

      var edt = document.getElementById('se_search');
	  if (edt!=undefined) {		  
         form.se_search.value = '';
         form.se_search.className = 'se_search';
	  }
     
      for ( var i=0;i<form.elements.length;i++ ) {

         obj = form.elements[i];         
         if (obj.className.indexOf('activefilter')>-1) {
        	 obj.value = -1; obj.className = "filtersCBX";

        	 // Réinitialise les styles de la liste déroulante car la plupart du temps,  une background-image a été ajoutée
        	 
        	 try {
        		 
            	 var opt = obj.options[obj.selectedIndex];
            	 
            	 obj.setStyle('background-image', opt.getStyle('background-image'));
            	 obj.setStyle('background-repeat', opt.getStyle('background-repeat'));
            	 obj.setStyle('padding-left', opt.getStyle('padding-left'));
            	 
             } catch(err) {
             }
             
        	 }

      } // for ( var i=0;i<form.elements.length;i++ )

      frmName = ((se_UserIsSeetingSite=='backend') ? 'adminForm' : 'filterForm');

      refresh_list_events('se_ShowTable', frmName, 1);

   } else {
   
      show_failure('filters.js::reset_filters()', 'adminForm or filterForm not found.  Should be impossible.');
      
   } // if (form!=undefined) {

   return;

}
