/*

Fonction appellée par le formulaire d'inscription intégrée à SportingEvents.

*/

window.addEvent('domready',function() {

   if (se_OnlyDefinitives!=undefined) {
      if (se_OnlyDefinitives==1) {
         $$('.se_notcome').each(function(item) { item.style.display='none'; return; });
         $$('.se_perhaps').each(function(item) { item.setStyle('display','none'); return; });
      }
   }

   try {

      var div = document.getElementById('se_enrol_slide_form');

      if (div!=undefined) {

         // se_HideFilters est une variable initialisée par la classe listes.php (com_sportingevents/class/listes.php)
         //
         // Initialisé à 1 lorsque la zone des filtres doit rester visible même si aucun filtre n'est actif.   Cela correspond au SportingEventsClassTables "FiltersAreaCollapsed".

         var bShow = se_AddMyNameToParticipantsList;

         if (bShow) { div.style.display = 'block'; } else { div.style.display = 'none'; }

         var slide_Form = new Fx.Slide('se_enrol_slide_form');

         if (slide_Form!=null) {

            // Ajoute le code pour afficher / masquer la zone des filtres lorsqu'on clique sur la loupe ou, lorsque la zone est déjà affichée, lorsqu'on clique sur l'icône X pour fermer la fenêtre.

            var obj = document.getElementById('se_v_enrol_form');

            if (obj!=undefined) {

               $('se_v_enrol_form').addEvent('click', function(e){

                  // L'utilisateur a cliqué sur l'option pour afficher / masquer les filtres

                  if (div.style.display == 'none') { div.style.display = 'block'; } else {div.style.display = 'none'; }

                  e = new Event(e);
                  slide_Form.hide().toggle();

                  e.stop();

               });
            }
         }

      } else { // if (div!=undefined)

         //show_error('enrol.js', 'The container "se_enrol_slide_form" is missing.  Should be impossible.');

      } // if (div!=undefined)

   } catch (err) {

      // Le code ne devrait pas arriver ici.

      show_failure('enrol.js::window.addEvent', err.description);

   } // try catch

});

// ------------------------------------------------------------------------------------------------------------------
// Cache / Affiche les personnes qui ne viendront pas / qui viendront peut-être
// ------------------------------------------------------------------------------------------------------------------

function ShowEverybody()  {
     $$('.se_willcome').each(function(item) { item.setStyle('display', 'table-row'); });
     $$('.se_notcome').each(function(item)  { item.setStyle('display', 'table-row'); });
     $$('.se_perhaps').each(function(item)  { item.setStyle('display', 'table-row'); });
     return;
} // function ShowCancel()

function ShowWillCome()  {
     $$('.se_willcome').each(function(item) { item.setStyle('display', 'table-row'); });
     $$('.se_notcome').each(function(item)  { item.setStyle('display', 'none');      });
     $$('.se_perhaps').each(function(item)  { item.setStyle('display', 'none');      });
     return;
} // function ShowCancel()

function ShowCancel()  {
     $$('.se_notcome').each(function(item)  { item.setStyle('display', 'table-row'); });
     $$('.se_willcome').each(function(item) { item.setStyle('display', 'none');      });
     $$('.se_perhaps').each(function(item)  { item.setStyle('display', 'none');      });
     return;
} // function ShowCancel()

function ShowPerhaps() {
     $$('.se_perhaps').each(function(item)  { item.setStyle('display', 'table-row'); });
     $$('.se_willcome').each(function(item) { item.setStyle('display', 'none');      });
     $$('.se_notcome').each(function(item)  { item.setStyle('display', 'none');      });
     return;
} // function ShowPerhaps()

// ------------------------------------------------------------------------------------------------------------------
//
// Code appelé par la vue frontend qui permet d'afficher la liste des participations de quelqu'un.   
// La fonction est appellée lorsqu'on sélectionne un nom depuis la liste des participants.
//
// ------------------------------------------------------------------------------------------------------------------

function submit_filters(pressbutton) {

   var Contact_id = 0;
   var User_id    = 0;

   try {

      // Récupère la valeur correspondant au participant sélectionné.  Cette valeur est construite sous la forme : contact_id suivi d'un underscore et du user_id
      // (voir la fonction getAllParticipants définie dans la table Joomla com_sportingevents/tables/course_classement.php)

      if ($(pressbutton)!=null) {

         var Value = $(pressbutton).value;

         // -1 signifie que l'utilisateur n'a pas sélectionné de participants.

         if (Value!=-1) {

            // La donnée récupérée est, p.e., "0_64".   0 pour le contact_id et 64 pour le user_id.

            Contact_id = Value.substr(0, Value.indexOf('_'));
            User_id    = Value.substr(Value.indexOf('_')+1);

            if (!((User_id=='0') && (Contact_id=='0'))) {

               // Tout semble OK : nous avons soit un user_id soit un contact_id soit les deux.

               // Définition de l'URL pour récupérer la liste des inscriptions de la personne sélectionnée.

               var url = se_form_event_baseurl+"index2.php?option=com_sportingevents&format=raw&task=ajax_loadEnrolments&user_id="+User_id+"&contact_id="+Contact_id;

               if (getQuerystring('debug',0)>=6) alert('File enrol.js - Function submit_filters() - URL\n\n'+url);

               var options = { update : $('se_ajax_participants'), onFailure : function(response) { show_failure(url, response);}, onSuccess : function() {}};

               var objParticipants = new Ajax(url, options);

               $('se_ajax_participants').innerHTML = "<img src='"+se_form_event_baseurl+"components/com_sportingevents/assets/images/loading.gif'/>";
//               $('se_Enrolments').innerHTML = "<img src='"+se_form_event_baseurl+"components/com_sportingevents/assets/images/loading.gif'/>";
               objParticipants.request();

            } else { // if (!((User_id=='0') && (Contact_id=='0'))) {

               // Le code ne devrait pas arriver ici.   Cela voudrait dire que la fonction getAllParticipants aurait construit une entrée dans la liste des participants pour un contact_id et un user_id
               // tous deux à 0 ce qui est impossible.

            } // if (!((User_id=='0') && (Contact_id=='0'))) {

         } // if (Value!=-1)

      } else { // Ce n'est pas normal, le champs "Participants" doit exister car c'est lui qui contient la référence de l'utilisteur (son User_ID et Contact_ID)
      
         show_failure('enrol.js::submit_filters()', 'The input hidden field '+pressbutton+' is missing  Should be impossible.');         

      }

   } catch(err) {

      // Le code ne devrait pas arriver ici.
      show_failure('enrol.js::submitbutton()', err.description);
      
   } // try {

} // function submitbutton(pressbutton)

// ------------------------------------------------------------------------------------------------------------------
//
// Permet de changer de type d'inscription de "Je vais venir" à "Je ne viendrais pas" / "Je ne sais pas si je vais venir"
//
// ------------------------------------------------------------------------------------------------------------------

function EnrolType(id, eventid, enroltype) {

//   if ($('se_ajax_participants')) $('se_ajax_participants').innerHTML = "<img src='"+se_form_event_baseurl+"components/com_sportingevents/assets/images/loading.gif'/>";

   url = se_form_event_baseurl+'index2.php?option=com_sportingevents&task=ajax_setEnrolType&id='+id+'&event_id='+eventid+'&EnrolType='+enroltype+'&'+se_token+'=1';

   if (getQuerystring('debug',0)>=7) alert('enrol.js - function EnrolType\n\n'+url);

   var options = { update : $('se_ajax_participants'), onFailure : function(response) { show_failure(url, response);}, onSuccess : function() {}};

   var objEvent = new Ajax(url, options);
   objEvent.request();

} // function EnrolType(id, enroltype)

// ------------------------------------------------------------------------------------------------------------------
//
// Fonction appellée lorsque l'utilisateur clique sur "Je vais prendre part à l'évènement"
//
// ------------------------------------------------------------------------------------------------------------------

function ClickParticipate(enroltype) {

   //if (document.se_enrolForm.chkWillParticipate.checked==true) {

   // La case vient d'être cochée ==> il faut inscrire la personne

   refresh_participants(enroltype, '');

   //} else {

      // Sinon, il faut la désinscrire

//      refresh_participants('removeParticipation', '');

   //} // if (document.se_enrolForm.chkWillParticipate.checked==true)

} // function ClickParticipate()

// ------------------------------------------------------------------------------------------------------------------
//
// Fonction appellée lorsque l'utilisateur qui s'est déjà inscrit clique sur l'icône pour se désinscrire.
// Icône à droite de son "classement"
//
// ------------------------------------------------------------------------------------------------------------------

function cancel_enrolment(id, event_id) {

   // Le numéro ID du classement doit être indiqué dans la variable classement_id afin que le controlleur sâche quel record supprimer.

//   document.se_enrolForm.classement_id.value = id;
//   document.se_enrolForm.chkWillParticipate.checked=false;

   // 1 = L'inscription doit être considérée comme annulée

   refresh_participants(1, '&classement_id='+id+'&event_id='+event_id);

   if (document.se_enrolForm!=undefined) {
      if (document.se_enrolForm.chkWillParticipate!=undefined) { document.se_enrolForm.chkWillParticipate.checked=false };
   }

} // function cancel_enrolment(id)

// ------------------------------------------------------------------------------------------------------------------
//
// Lorsque l'utilisateur va s'inscrire à un évènement et que cette inscription est l'inscription standard de SportingEvents
// (soit la case à cocher "Je participerais (ou pas) à l'évènement); la fonction ci-dessous va se charger d'inscrire / désinscrire l'utilisateur
// puis mettre à jour la liste des participants au travers d'une requête Ajax
//
// ------------------------------------------------------------------------------------------------------------------

function refresh_participants(EnrolType, sExtraParams) {

var form = document.se_enrolForm;

//   if ($('se_ajax_participants')) $('se_ajax_participants').innerHTML = "<img src='"+se_form_event_baseurl+"components/com_sportingevents/assets/images/loading.gif'/>";

   // Construction des paramètres en prenant en considération les champs cachés du formulaire.
   // Ces champs sont créés par SportingEventsClassShowEvent::ShowEnrolForm

   sParams='';

   if (form!=undefined) {

      for (var i=0;i<form.elements.length;i++) {
         el = form.elements[i];
         if ((el.name !='option') && (el.name !='task') && (el.name !='ajax_classement_id') && ((el.type=="hidden") || (el.type=="text"))) {

            // On récupère le champs pour construire l'URL qui sera utilisée seulement si la variable n'est pas déjà précisée dans sExtraParams

            if (sExtraParams.indexOf(el.name)<0) sParams += '&'+el.name+'='+ el.value;
         }
      } // for (var i=0;i<form.elements.length;i++) {
   }

   sParams += sExtraParams;

   // La variable se_caller est une variable cachée dans le formulaire appelant et contient le code 1 si la page à l'écran est de type "Liste des inscriptions de quelqu'un".
   // La valeur sera 0 si la page est une page de description d'un évènement.
   //
   // Dans le premier cas, après la suppression de l'inscription, il faut revenir à la liste des inscriptions
   // Dans le second cas, il faut réafficher la liste des inscriptions pour l'évènement en cours d'affichage
   //
   // La variable se_caller est p.e. initialisée par la page \views\enrolments\tpml\default.php puisqu'il faut revenir à la liste des inscriptions d'une personne dès lors que p.e. une
   // inscription a été supprimée.

   if (typeof se_caller == 'undefined') se_caller=0;

   // Construit l'URL qui permet la suppression de l'inscription / l'inscription

   url = se_form_event_baseurl+'index2.php?option=com_sportingevents&task=ajax_enrol'+sParams+"&caller="+se_caller+"&enroltype="+EnrolType;

   if (getQuerystring('debug',0)>=7) alert('enrol.js - function refresh_participants\n\n'+url);

   var options = { update : $('se_ajax_participants'), onFailure : function(response) { show_failure(url, response);},
      onSuccess :
      function() {

         // se_classement_id est un champs hidden qui reprend le ID de l'inscription qui vient d'être faite

         if ($('se_classement_id').value) form.classement_id.value=$('se_classement_id').value;
      }};

   var objEvent = new Ajax(url, options);
   objEvent.request();

} // function refresh_participants() {

// ------------------------------------------------------------------------------------------------------------------
//
// Fonction appellée lorsque l'utilisateur (qui est un éditeur / rédacteur) affiche une page de description d'un évènement et accepte une inscription en souffrance.
// Le paramètre id est le ID du classement soit le record à valider.
//
// ------------------------------------------------------------------------------------------------------------------

function accept_pending(id, token) {

   if (typeof se_caller == 'undefined') se_caller=0;

   if ($('se_ajax_participants')!=undefined) {

      url = se_form_event_baseurl+'index2.php?option=com_sportingevents&task=ajax_acceptPending&classement_id='+id+'&'+token+'=1&caller='+se_caller;

      if (getQuerystring('debug',0)>=7) alert('enrol.js - function accept_pending\n\n'+url);

      var options = {update : $('se_ajax_participants'), onFailure : function(response) { show_failure(url, response);}, onSuccess : function() {}};

      var objEvent = new Ajax(url, options);
      objEvent.request();

   } else {

      show_failure('enrol.js::accept_pending', 'div se_ajax_participants is missing.  Should be impossible.');

   }

} // function accept_pending(id) {

// ------------------------------------------------------------------------------------------------------------------
//
// Fonction appellée lorsque l'utilisateur (qui est un éditeur / rédacteur) affiche une page de description d'un évènement et publie/dépublie une inscription.
// Le paramètre id est le ID du classement soit le record à publier/dépublier.
//
// ------------------------------------------------------------------------------------------------------------------

function publish(id, event_id, publish, token) {

   if (typeof se_caller == 'undefined') se_caller=0;
   url = se_form_event_baseurl+'index2.php?option=com_sportingevents&task=ajax_publish&event_id='+event_id+'&classement_id='+id+'&publish='+publish+'&'+token+'=1&caller='+se_caller;

   if (getQuerystring('debug',0)>=7) alert('enrol.js - function publish\n\n'+url);

   var options = { update : $('se_ajax_participants'), onFailure : function(response) { show_failure(url, response);}, onSuccess : function() { }};
   var objEvent = new Ajax(url, options);
   objEvent.request();

} // function accept_pending(id) {
