/*

   Code javascript des écrans de gestion; côté Admin.

*/

// ---------------------------------------------------------------------------------------------------------
//
// Cette fonction ajax utilisée dans la partie admin, dans l'écran d'envoi d'email lorsque le webmaster a sélectionné un évènement.
// Dans le onchange de la liste déroulante,cette fonction va être appellée afin de récupérer des données liées à l'évènement sélectionné et d'en afficher le contenu dans une DIV
//
// En fonction du paramètre sTaskName (nom de la fonction dans le controlleur; côté admin)
//
//     "ajax_load_event"       ==> va générer un tableau résumé de l'évènement (titre, date de début, date de fin, ...)
//     "ajax_load_ranking"     ==> va charger la liste des personnes qui sont inscrites à cet évèment; sous forme d'un tableau
//     "ajax_load_mailpreview" ==> va charger le template du mail et y reprendre les données du premier inscrit de telle manière qu'il soit possible de voir le mail qui sera envoyé; avant son envoi réel
//
// Le paramètre sDivName va contenir le nom de la DIV dont le contenu devra être adapté par le résultat de cette fonction JS
//
// ---------------------------------------------------------------------------------------------------------

function ajxLoad(sDivName, sTaskName, scbxName) {

   // Retrouve le numéro de l'évènement.

   if (scbxName=='') scbxName = 'event_id';

   var cbx = document.getElementById(scbxName);

   if (cbx!=undefined) {

      var ndx = cbx.selectedIndex;

      // Retrouve les informations supplémentaires en fonction de la tâche à effectuer

      if (sTaskName=='ajax_load_mailpreview') {
         var file = document.getElementById('email_id').value;      // Retrouve le template du mail à utiliser
      } else if (sTaskName=='ajax_load_contacts') {
         var event_id = document.getElementById('event_id').value;  // Retrouve le numéro de l'évènement
      } else if (sTaskName=='ajax_loadMonthlyView') {
         var year  = document.frmPlanning.ajax_year.value;
         var month = document.frmPlanning.ajax_month.value;
      }// if (sTaskName=='ajax_load_mailpreview')

      // On exécute le code ci-dessous dès lors qu'une valeur différente de zéro à été sélectionnée ou, dans tous les cas pour les tâches ajax_load_contacts et ajax_LoadCalendar

      if ((sTaskName=='ajax_load_contacts') ||(sTaskName=='ajax_LoadCalendar') || (ndx!=0)) {

         // Appelle la fonction dans le controlleur et met ensuite à jour la DIV

         if (sTaskName=='ajax_load_mailpreview') {
            id = cbx.options[ndx].value;
            SportingEvents_Ajax_Update(sDivName, '?option=com_sportingevents&task='+sTaskName+'&id='+id+'&file='+file);
         } else if (sTaskName=='ajax_load_contacts') {
            id = cbx.options[ndx].value;
            SportingEvents_Ajax_Update(sDivName, '?option=com_sportingevents&task='+sTaskName+'&id='+id+'&event_id='+event_id);
         } else if (sTaskName=='ajax_loadMonthlyView') {
            SportingEvents_Ajax_Update(sDivName, '?option=com_sportingevents&task='+sTaskName+'&year='+year+'&month='+month);
         } else {
            id = cbx.options[ndx].value;
            SportingEvents_Ajax_Update(sDivName, '?option=com_sportingevents&task='+sTaskName+'&id='+id);
         }
                 

      } // if (ndx!=0) {

   } else {

      if ((getQuerystring('debug',0)>=1) && (scbxName!='intern_album_id')) alert('Debug mode - view_ajax.js - ajxLoad : the combobox '+scbxName+' doesn\'t exists.   ajxLoad require that the combobox with events is so-called');

   } // if (cbx!=undefined)

   return true;

} // function ajxLoadEvent()

// ---------------------------------------------------------------------------------------------------------
//
// Cette fonction va permettre de mettre à jour une combobox sur base de ce qui est encodé dans une autre; liée.
//
// Par exemple : lorsqu'on change de pays, il faut mettre à jour la liste des villes.
//
// Dabs le cadre de SportingEvents les relations sont les suivantes :
//
//    SPORT   : Lorsqu'on change de sport, il faut mettre à jour les listes distances, parcours et sections
//
//    SECTION : Lorsqu'on sélectionne une section, il faut afficher les catégories de cette section-là.
//
// Deux paramètres : 
//
//    master  : Master est p.e. sport_id soit le nom de la combobox reprennant les sports
//    child   : Child, p.e. distance_id, doit être initialisé avec le nom de la liste déroulante qu'il faut mettre à jour.
//
// ---------------------------------------------------------------------------------------------------------

function ajxRefreshCombo(master, child, tbl) {

   var cbxMaster = null;
   var cbxChild  = null;
   var bContinue = false;

   // Retrouve la valeur du master.

   cbxMaster =document.getElementById(master);

   if (cbxMaster==null) {
      alert('Error in script view_ajax.js : the master combobox '+master+' doesn\'t exists in the form.  Please verify the call to the ajxRefreshCombo function in the source code of the form.');
   } else {
      cbxChild =document.getElementById(child);
      if (cbxChild==null) {
         if ((child!='intern_album_id') && (child!='distance_id') && (child!='parcours_id') && (child!='ressource_id') && (child!='place_id') && (child!='section_id') && (child!='category_id')) {
            alert('Error in script view_ajax.js : the child combobox *'+child+'* doesn\'t exists in the form.  Please verify the call to the ajxRefreshCombo function in the source code of the form.');
         }
      } else {
        bContinue = true;
      } // if (cbxChild==null)
   } // if (cbxMaster==null)


   var url = se_form_event_baseurl+'index2.php?option=com_sportingevents&task=ajax&field='+child+'&master='+master+'&id='+cbxMaster.value+'&debug='+getQuerystring('debug',0);

   // Ajout d'un paramètre supplémentaire qui est la liste des ID des options à sélectionner par défaut dans la liste déroulante qui sera mise-à-jour par la fonction Ajax.
   // Ce paramètre est nécessaire pour le pluging plg_sportingevents_form

   default_id =document.getElementById('form_comp_fields_id');
   if (default_id!=null) url += '&default_id='+default_id.value;

   // Ajout d'un paramètre supplémentaire qui est le nom de la table.   Ce paramètre est nécessaire pour le pluging plg_sportingevents_form

   if (tbl!=null) url += '&tbl='+tbl;

   if (getQuerystring('debug',0)>=6) alert('Debug mode - view_ajax.js - URL that will be used to refresh '+child+' will be :\n\n'+url);

   var options = {
      update    : $(cbxChild),
      onFailure : function(response) { show_failure(url, response);},
      onSuccess : function(response) { }
    }; // var options

    var objRequest= new Ajax(url, options);
    objRequest.request();

} // function ajxRefreshCombo(master, child)

