
/* $Id: class_event.js 9 2009-01-11 06:03:21Z john $ */

// Required Language vars: 3000080,3000081,3000082,3000083,3000084,3000085,3000093,3000097,3000153,3000154,3000170,3000219,3000223,3000225,3000229,1086, 3000708,3000709,3000710,3000775,3000791,3001011

var jeton_09_07_2010_2 = true;

// Jean 03/12/2009
var currentSlidePosition = 0;

SocialEngineAPI.Event = new Class({
  
  // Class
    Implements: [Options],
  
  
  
  // Properties
  Base: {},
  
  
  options: {
    'ajaxURL' : 'event_ajax.php',
    'ajaxMethod' : 'post',
    'ajaxSecure' : false,
    
    'defaultView' : false
  },
  
  
  eventExists: false,
  
  
  eventInfo: {},
  
  
  userRank: 0,
  
  
  IsMember: false,
  
  
  IsMemberWaiting: false,
  
  
  currentConfirmID: 0,

  notChangePageAfterDelete: 0, // Jean 18/04/2010


  currentInvites: false,
  
  
  visibleTab: 0,
  
  
  rsvpLanguageVars: {
    '-2'  : 3000785, // N'a pas encore répondu à l'invitation (eventmember_status = 0 et eventmember_approved = 1)
    '-1'  : 3000080, // Attend encore une validation de sa demande (Awaiting Approval)
    //'0' : 3000791, // Je n'ai pas encore répondu à l'invitation
    //'4' : 3000085, // I'll be late

    '5'   : 3000714, // Désolé, mais je ne pourrai pas participer à ce tournage
    '6'   : 3000713, // Je voudrais bien venir, mais je ne puis confirmer avec certitude
    '7'   : 3000712  // Je confirme ma participation
/*
    '5'   : 3000710, // Ne pourra être présent sur le tournage
    '6'   : 3000709, // Hésite encore, confirmera plus tard
    '7'   : 3000708  // A confirmé sa présence
*/
  },

/*
// Jean 14/08/2009
  bookmarkLanguageVars: {
    '1'   : 3000632, // Je me porte volontaire pour participer à ce sujet
    '2'   : 3000100, // Je souhaite marquer ce sujet pour le retrouver plus tard
    '3'   : 3000634  // Je souhaite être prévenu(e) si un sujet similaire ou connexe est traité...
  },
*/

  // Jean 15/12/2009
  eventMemberLanguageVars: {
    'wanttakepart'  : 3000632, // Je me porte volontaire pour participer à ce sujet
    'vulontsimilar' : 3000928, // Je veux bien qu'on me sollicite pour participer sur un sujet similaire ou connexe
    'wantattend'    : 3000938, // Je voudrais bien assister c'est possible ?
    'working'       : 3000938, // Je travaille dessus en ce moment
    'wantwatch'     : 3000937, // Prévenez-moi quand c'est en ligne !
    'warnifsimilar' : 3000634, // Je souhaite être prévenu(e) si un sujet similaire ou connexe est traité...
    'regret'        : 3000631, // Si j’avais su, j’aurais bien voulu participer !
    'bookmark'      : 3000100, // Je souhaite marquer ce sujet pour le retrouver plus tard
    'sponsor'       : 3510323 // Ma société pourrait peut-être sponsoriser ce sujet - Donnez-moi des infos !
  },


  // Initialize
  initialize: function(eventInfo, options)
  {
    var bind = this;
    
    // Options
    if( $type(options)=="object" )
    {
      if( $type(options.defaultView) && options.defaultView=='' )
        delete options.defaultView;
      
      this.setOptions(options);
    }
    
    // Event info stuff
    if( eventInfo && $type(eventInfo)=="object" )
    {
      this.eventExists = eventInfo.event_exists;
      delete eventInfo.event_exists;
      
      this.IsMember = eventInfo.is_member;
      delete eventInfo.is_member;
      
      this.IsMemberWaiting = eventInfo.is_user_waiting;
      delete eventInfo.is_user_waiting;
      
      this.UserRank = eventInfo.user_rank;
      delete eventInfo.user_rank;
      
      this.eventInfo = eventInfo;
    }

    // Load currently visible tab
    var currentVisibleTab = Cookie.read('eventVisibleTab');

    if( this.options.defaultView )
      currentVisibleTab = this.options.defaultView;
    else if( !$type(currentVisibleTab) || !currentVisibleTab )
      currentVisibleTab = 'profile';

    // Jean 06/08/2009 : par sécurité, on n'affiche pas d'onglet inexistant
    window.addEvent('domready', function()
    {
      if ($('event_tabs_'+ currentVisibleTab))
        if( $('event_tab_table') )
          bind.loadProfileTab(currentVisibleTab);
    });
  },
  
  
  
  
  // Profile Tabs
  loadProfileTab: function(tabName)
  {
    var bind = this;
    $('event_tab_table').getElements('.event_tab').each(function(tabElement)
    {
    
      //alert(tabElement.id + ' ## '+ 'event_tabs_'+tabName);
      if( tabElement.id=='event_tabs_'+tabName )
      {
        if( !tabElement.hasClass('event_tab_active') )
          tabElement.addClass('event_tab_active');
        
        if ($('event_' + tabName))
         // Jean 09/04/2010 : on peut aussi faire du visibility hidden 
         {
          if ($('event_' + tabName).style.visibility == "hidden")
            $('event_' + tabName).style.visibility = "inherit";
          else
            $('event_' + tabName).style.display = "block";
         }
        Cookie.write('eventVisibleTab', bind.visibleTab = tabName);
      }
      else
      {
        if( tabElement.hasClass('event_tab_active') )
          tabElement.removeClass('event_tab_active');
        
        var otherTabName = tabElement.id.replace('_tabs_', '_');
        if (otherTabName != "" && otherTabName != "null" && $(otherTabName))
         // Jean 09/04/2010 : on peut aussi faire du visibility hidden 
         {
          if ($(otherTabName).style.visibility == "inherit")
            $(otherTabName).style.visibility = "hidden";
          else
            $(otherTabName).style.display = "none";
         }
      }
    });
  },


  // Delete
  deleteShow: function(eventID, notChangePageAfter)
  {
    this.currentConfirmID = ( eventID || this.eventInfo.event_id );
    this.notChangePageAfterDelete = notChangePageAfter;
    TB_show(this.Base.Language.Translate(3000093), '#TB_inline?height=100&width=300&inlineId=confirmeventdelete', '', '../images/trans.gif');
    // Jean 07/05/2010
    if ($("btn_delete_submit")) $("btn_delete_submit").focus();
  },



  deleteConfirm: function()
  {
    eventID = this.currentConfirmID;

    // Remove Smoothbox
    TB_remove();
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventdelete',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        //alert($type(window.redirectOnDelete) + ' ' + $type(parent.window.redirectOnDelete) + ' ' + $type(parent.redirectOnDelete));
        
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          if (!bind.notChangePageAfterDelete)
           {
            // event, user_event_edit - Redirect on delete
            if( $type(window.redirectOnDelete)=="function" )
              window.redirectOnDelete();
           }
          // Jean 18/04/2010
          else if ($('tasklist_container'))
           {
            // On recharge la liste des tâches
            //bind.getTaskList(bind.eventInfo.event_id, false, null, true);
            $('task_container_'+ eventID).style.display = 'none';
           }

          // user_event - Remove row
          if( $('seEvent_' + eventID) )
          {
            $('seEvent_' + eventID).destroy();

            // Display no event message
            if( !$$('.seEvent').length && $('seEventNullMessage') )
            {
              $('seEventNullMessage').style.display = 'block';
            }
          }

          // user_event - Fix that calendar
          var eventMonthShow = $('seEventMonthShow_' + eventID);
          if( eventMonthShow )
          {
            var eventMonthDay = eventMonthShow.title;
            var eventCellElement = $('event_cell' + eventMonthDay);
            eventMonthShow.destroy();
            
            // Fix color
            if( eventCellElement && eventCellElement.className!='event_cell3' && !eventCellElement.getElements('a').length )
            {
              $('event_cell' + eventMonthDay).className = 'event_cell1'; 
            }
          }
        }
      }
    });

    request.send();

    // Reset
    currentConfirmDeleteID = 0;
  },
  
  

  // Jean 26/11/2009
  cloneEvent: function(eventID)
   {
    var bind = this;
    if (confirm(bind.Base.Language.Translate(3510250)))
     {
      // Ajax
      var request = new Request.JSON({
        'method' : 'post',
        'url' : this.options.ajaxURL,
        'data' : {
          'task' : 'eventclone',
          'event_id' : eventID
        },
        'onComplete':function(responseObject)
        {
          if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" || !responseObject.neweventID )
          {
            if (responseObject && responseObject.is_debug) alert(responseObject.error);
            else alert(bind.Base.Language.Translate(3000153));
          }
          else
          {
           //document.location = responseObject.eventURL ? responseObject.eventURL : SocialEngine.URL.url_base +'event/'+  responseObject.neweventID +'/';
           document.location = SocialEngine.URL.url_base +'user_event_edit.php?event_id='+ responseObject.neweventID +'&clone=ok';
          }
        }
      });
      
      request.send();

     }
   },


  // Jean 15/02/2010
  exportEvent: function(eventID)
   {
    var hauteurDoc = typeof( window.innerWidth ) == 'number' ?
                             // IE
                             window.innerHeight
                             // Firefox
                             : document.documentElement.clientHeight;
    if (hauteurDoc == 0)
      hauteurDoc = document.documentElement.offsetHeight;

    TB_show(this.Base.Language.Translate(3510247), 'user_event_edit_webtv.php?event_id='+ eventID +'&banner=no&TB_iframe=true&height='+ (hauteurDoc ? (hauteurDoc - 160) : '520') +'&width=1100', '', '../images/trans.gif');
    TB_init();
   },


  // Accept Request
  memberAccept: function(userID)
  {
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmemberaccept',
        'event_id' : this.eventInfo.event_id,
        'user_id' : userID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
         }
        else
         {
          // alerte : "Un email lui a été envoyé pour l'informer de cette décision"
          alert(bind.Base.Language.Translate(3001011));

          // Refresh window, at least for now
          if( document.event_members_form )
            document.event_members_form.submit();
          else
            window.location.reload( false );
         }
      }
    });
    
    request.send();
  },
  
  
  
  
  // Deny Request
  memberReject: function(userID)
  {
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmemberreject',
        'event_id' : this.eventInfo.event_id,
        'user_id' : userID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // alerte : "Un email lui a été envoyé pour l'informer de cette décision"
          alert(bind.Base.Language.Translate(3001011));

          // Refresh window, at least for now
          if( document.event_members_form )
            document.event_members_form.submit();
          else
            window.location.reload( false );
        }
      }
    });
    
    request.send();
  },
  
  
  
  
  // Deny Request
  memberDelete: function(userID)
  {
    this.currentConfirmID = userID;
    TB_show(this.Base.Language.Translate(3000154), '#TB_inline?height=100&width=300&inlineId=confirmeventmemberdelete', '', '../images/trans.gif');
  },
  
  
  memberDeleteConfirm: function()
  {
    userID = this.currentConfirmID;
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmemberdelete',
        'event_id' : this.eventInfo.event_id,
        'user_id' : userID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // Jean 19/08/2009 : gestion de la suppression du user dans l'onglet d'invité d'un event
          if ($('div_guest_'+ userID))
           {
            $('div_guest_'+ userID).destroy();
            try { TB_remove(); } catch (e) {;}
           }
          else if ($('div_contrib_'+ userID))
           {
            $('div_contrib_'+ userID).destroy();
            try { TB_remove(); } catch (e) {;}
           }
          else if( document.event_members_form )
            document.event_members_form.submit();
          else
            window.location.reload( false );
        }
      }
    });
    
    request.send();
  },
  
  
  
  
  // Cancel Invite
  memberCancel: function(userID)
  {
    this.currentConfirmID = userID;
    TB_show(this.Base.Language.Translate(3000223), '#TB_inline?height=100&width=300&inlineId=confirmeventmembercancel', '', '../images/trans.gif');
  },


  memberCancelConfirm: function()
  {
    userID = this.currentConfirmID;
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmembercancel',
        'event_id' : this.eventInfo.event_id,
        'user_id' : userID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // Jean 19/08/2009 : gestion de la suppression du user dans l'onglet d'invité d'un event
          if ($('div_guest_'+ userID))
           {
            $('div_guest_'+ userID).destroy();
            try { TB_remove(); } catch (e) {;}
           }
          else if ($('div_interested_'+ userID))
           {
            $('div_interested_'+ userID).destroy();
            try { TB_remove(); } catch (e) {;}
           }
          else if( document.event_members_form )
            document.event_members_form.submit();
          else
            window.location.reload( false );
        }
      }
    });
    
    request.send();
  },
  
  
//---------------------------------------------------------------------------------
// Jean 19/08/2009 : on déplace les instructions pour l'invitation de 'event.tpl' à 'class_event.js'
    tabUserName: Array(),
    tabInfosAutres: Array(),
    tabFriends: Array(),
    listeInvitedUserID: Array(),
    // Jean 17/06/2010
    lastAffineIntervValue: Array(),
    lastAffineIntervBisValue: Array(),

    inviteMemberSearchContrib: function()
     {
      var nomSaisi = $('affine_intervenants').value;
      var infosSaisies = $('affine_intervenants_autres').value;   // Jean 31/07/2009
      var onlyFriends = $('affine_friends_yes').checked;          // Jean 31/07/2009

      $('btn_supp_rech_interv').src = (nomSaisi == '' ? 'images/icons/action_delete1.gif' : 'images/icons/action_delete2.gif');
      $('btn_supp_rech_interv_autres').src = (infosSaisies == '' ? 'images/icons/action_delete1.gif' : 'images/icons/action_delete2.gif');

      // On parcourt les contributeurs
      var nb_res = 0;
      var nb_init = 0;
      var tabUserId = new Array();
      var listeChamps = document.getElementsByTagName('INPUT');

      for (var i=0; i<listeChamps.length; i++)
       {
         var champCourant = listeChamps[i];
         var nomPrenomCourant, infosCourantes;
         var trouveFriends, trouveNomPrenom, trouveAutre;
         var res, userID;

         if (champCourant.id && (res = champCourant.id.match(/^uzer_(.+)$/)))
          {
           userID = res[1];
           if (tabUserId[userID]) continue;
           tabUserId[userID] = true;
           nb_init ++;
           trouveFriends = (!onlyFriends || this.tabFriends['user_'+ userID]);
           if (!trouveFriends)
             trouveNomPrenom = false;
           else
           {
            nomPrenomCourant = this.tabUserName['user_'+ userID];
            infosCourantes = this.tabInfosAutres['user_'+ userID];
            if (nomSaisi == '') trouveNomPrenom = true;
            else trouveNomPrenom = (retireAccents(nomPrenomCourant.toLowerCase()).indexOf(retireAccents(nomSaisi.toLowerCase())) > -1);
           }
           if (!trouveNomPrenom) trouveAutre = false;
           else if (infosSaisies == '') trouveAutre = true;
           // Jean 31/07/2009 : recherche par thématique/centre d'intérêt
           else trouveAutre = (retireAccents(infosCourantes.toLowerCase()).indexOf(retireAccents(infosSaisies.toLowerCase())) > -1);

           trouve = trouveFriends && trouveNomPrenom && trouveAutre;
           if (trouve) nb_res++;

           $('div_uzer_'+ userID).style.display = trouve ? '' : 'none';
          }
       }
      if (nb_res == nb_init)
        $('zone_nb_res').innerHTML = nb_init +' '+ SocialEngine.Language.Translate(3000720);  // "n contributeurs en tout"
      else
        $('zone_nb_res').innerHTML = '<font style="color: #C46200;"><b>'+ nb_res +' '+ SocialEngine.Language.Translate(/*SocialEngine.Event.allFriends ? 3000721 : */3510164) +'</b> '+ nb_init +'</font>';  // "n contributeur(s) trouvé(s) sur m"
      clearTimeout(to3);
      $('loading_rech_interv').style.visibility = 'hidden';
      $('loading_rech_interv_autres').style.visibility = 'hidden';
      to3 = setTimeout("if ($('affine_intervenants').value == '' && $('affine_intervenants_autres').value == '') $('zone_nb_res').innerHTML = '&nbsp;';", 2000);
     },


     inviteMemberMajListeContrib: function(uzerId, isChecked)
      {
       // Jean 19/08/2009
       SocialEngine.Profile.infoBulle_hide();

       //parent.SocialEngine.Event.memberInviteUpdate(uzerId, isChecked); 
       this.listeInvitedUserID = new Array();

       var listeChamps = $('invite_friendlist').getElementsByTagName('INPUT');
       var listeContribTxt = "";

       // On parcourt les contributeurs
       for (var i=0; i<listeChamps.length; i++)
        {
         var champCourant = listeChamps[i];
         var res;
         if (!champCourant.id || !(res = champCourant.id.match(/^uzer_(.+)$/)))
           continue;

         var contribID = res[1];

         if (champCourant.checked)
          {
           this.listeInvitedUserID[this.listeInvitedUserID.length] = champCourant.value;
           if (listeContribTxt != "") listeContribTxt += ", ";
           var nomPrenomCourant = this.tabUserName['user_'+ contribID];
           listeContribTxt += '<span style="background-color: ;">'+ nomPrenomCourant.replace(/^ +/, "").replace(/ +$/, "");
           // Jean 18/08/2009
           listeContribTxt += '<a style="margin-left: 1px;"'
                           +    ' href="javascript: ;"'
                           +    ' onclick="$(\'uzer_'+ contribID +'\').checked = false;'
                           +              '$(\'div_uzer_'+ contribID +'\').style.background = \'\';'
                           +              'SocialEngine.Event.inviteMemberMajListeContrib();">'
                           +  '<img src="images/icons/action_delete2.gif" border="0" align="absmiddle" /></a>';
           listeContribTxt += '</span>';

           $('div_uzer_'+ contribID).style.backgroundColor = "#FFE242";
          }
         else
          $('div_uzer_'+ contribID).style.backgroundColor = (this.dicoProfileCatId[contribID] == "1" ? "#FBF4F0;" : "");
        }

       if (listeContribTxt.length > 3500)
         $("liste_contribs_str").innerHTML = listeContribTxt.substring(0, 800) +'...';
       else
         $("liste_contribs_str").innerHTML = listeContribTxt == "" ? "<i>"+ SocialEngine.Language.Translate(3000654) +"</i>" : listeContribTxt;  // aucun

       try
       { $('affine_intervenants').focus(); }
       catch (e) {;}

       return true;
      },


    // Jean 26/06/2009
    inviteMemberCheckAllContrib: function()
     {
       this.listeInvitedUserID = new Array();

       var listeChamps = document.getElementsByTagName('INPUT');

       // "Tout le monde" ?
       var everyBodyTxt = ("<b>"+ SocialEngine.Language.Translate(3000718) +"</b>").toUpperCase();
       var toutCocher = $("liste_contribs_str").innerHTML.toUpperCase() != everyBodyTxt;

       // On parcourt les contributeurs
       for (var i=0; i<listeChamps.length; i++)
        {
         var champCourant = listeChamps[i];
         var res;
         if (!champCourant.id || !(res = champCourant.id.match(/^uzer_(.+)$/)))
           continue;
         // Jean 15/06/2010
         if (champCourant.disabled)
           continue;

         var contribID = res[1];
         champCourant.checked = toutCocher;
         if (toutCocher) this.listeInvitedUserID[this.listeInvitedUserID.length] = champCourant.value;
         $('div_uzer_'+ contribID).style.background = toutCocher ? "#FFE242" : "";
        }
       // On affiche "Tout le monde" ou "aucun", selon...
       $("liste_contribs_str").innerHTML = toutCocher ? everyBodyTxt : "<i>"+ SocialEngine.Language.Translate(3000654) +"</i>";

       return true;
     },
//---------------------------------------------------------------------------------

  // Invite
  memberInvitePopulate: function(allFriends, justInviteToAttend)
  {
    if (!$('invite_friendlist'))
     {
      alert('DIV tag "invite_friendlist" not found in ths HTML page !');
      return;
     }

    var eventID = this.eventInfo.event_id;

    // Jean 23/06/2009
    var waitImgName = "img_load_invite"+ (justInviteToAttend ? '_attend' : '');
    if (allFriends)
      waitImgName += '_members';
    if ($(waitImgName)) $(waitImgName).style.visibility = "visible";

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        // Jean samedi 16 mai 2009 : c'est là qu'on va étendre la possibilité d'inviter d'autres contributeurs que ses amis à participer
        // (cf. fichier 'event_ajax.php')
        'task' : 'get_contributeurs',
//        'task' : 'getfriends',
        'event_id' : this.eventInfo.event_id,
        'all_friends' : allFriends ? "1" : ""
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          bind.memberInviteShow(eventID, $H(responseObject.friends), allFriends, justInviteToAttend);
        }
      }
    });
    
    request.send();
  },

  // Jean 15/06/2010
  dicoProfileCatId: Array(),

  memberInviteShow: function(eventID, friendsObject, allFriends, justInviteToAttend)
  {
    this.currentConfirmID = eventID;
    this.currentInvites = new Array();

    // Remove any existing friends
    $('invite_friendlist').empty();

    // Generate HTML
    var bind = this;
    if( $A(friendsObject.getKeys()).length>0 )
    {
     // Jean 23/06/2009
     var waitImgName = "img_load_invite"+ (justInviteToAttend ? '_attend' : '');
     if (allFriends)
       waitImgName += '_members';
     if ($(waitImgName)) $(waitImgName).style.visibility = "hidden";

     // Jean 31/07/2009
     if (isSafari && $("zone_video"))
       $("zone_video").style.display = 'none';

// Jean 16/06/2009
      var strHtml = '';

      var afficherPhotos = !allFriends || friendsObject.length < 200;

      friendsObject.each(function(userInfos, indice)
      {
       var userID = userInfos['user_id'];
       bind.dicoProfileCatId[userID] = userInfos['user_profilecat_id'];
       strHtml += "<div class='browse_result invit_box "+ (userInfos['already_invited'] == "1" ? " already_invited" : "") +"'"
                    + " id='div_uzer_"+ userID +"'"
                    + " style='"+ (userInfos['already_invited'] != "1" ? 'cursor: pointer;' : '') +"float: left;  width: "+ (afficherPhotos ? "215" : "215") +"px; height: "+ (afficherPhotos ? "100" : "100") +"px; text-align: "+ (afficherPhotos ? "center" : "center") +"; overflow: hidden; "+ (userInfos['user_profilecat_id'] == "1" ? " background-color: #FBF4F0;" : "")
                           + "'";
       if (userInfos['already_invited'] != "1")
         strHtml += ' onmouseover="this.style.background = \'#FFE242\'; SocialEngine.Profile.infoBulle_show(null,'+ userID +',500,event);"'
                   +' onmouseout="if (!$(\'uzer_'+ userID +'\').checked) this.style.background = \'\'; SocialEngine.Profile.infoBulle_hide();"'
                   +' onclick="$(\'uzer_'+ userID +'\').checked = !$(\'uzer_'+ userID +'\').checked; SocialEngine.Event.inviteMemberMajListeContrib($(\'uzer_'+ userID +'\').value, $(\'uzer_'+ userID +'\').checked);"';
       strHtml += '>';

       // Jean 31/05/2010 : on ajoute les infos perso
       strHtml += '<table cellspacing="0" cellpadding="1" border="0" class="people_to_invite">';
       strHtml += '  <tr>';
       strHtml += '   <td style="width: '+ (afficherPhotos ? "100" : "75") +'px; text-align: center;" valign="top" align="middle">';

       // Case à cocher
       strHtml += '    <input type="checkbox"';
       strHtml += '           name="invites[]"';
       if (userInfos['already_invited'] == "1")
        {
         strHtml += ' disabled';
         // Cette personne a déjà été invitée
         strHtml += ' onclick="alert(SocialEngine.Language.Translate(3000782))"';
        }
       else
         strHtml += '         onclick="this.checked = !this.checked; SocialEngine.Event.inviteMemberMajListeContrib(this.value, this.checked);"';
       strHtml += '           value="'+ userID +'"';
       strHtml += '           id="uzer_'+ userID +'"';
       strHtml += '     />';

       // Jean 24/01/2010 : on affiche les photos seulement si nombre limité // Jean 03/06/2010 : ou si contributeur
       if (afficherPhotos || userInfos['user_profilecat_id'] == "1")
         strHtml += ' <img src="'+ userInfos['photo_src'] +'" class="photo" style="display: block; margin-left: auto; margin-right: auto;" width="60" height="60" border="0">';

       strHtml += userInfos['displayname'];
       strHtml += '   </td>';
       strHtml += '   <td valign="top" align="left">';

       // Déjà invité(e) !
       if (userInfos['already_invited'] == "1")
         strHtml += '<div class="already_invited_txt">'+ bind.Base.Language.Translate(3000813) +'</div>';

       // Jean 03/06/2010 - "Contributeur" / Niveau utilisateur
       if (userInfos['user_profilecat_id'] == "1" || isExtranet)
         strHtml += '<div class="contributor_txt">'+ (isExtranet ? userInfos['user_level_name'] : bind.Base.Language.Translate(3510560)) +'</div>';

       if (userInfos['all_infos']['bio'] && userInfos['all_infos']['bio'].length > 47) userInfos['all_infos']['bio'] = userInfos['all_infos']['bio'].substring(0, 45) +'...';

       if (userInfos['all_infos']['minibio'] != "" || userInfos['all_infos']['bio'] != "" || userInfos['all_infos']['societe'] != "" || userInfos['all_infos']['interests'] != "")
        {
         strHtml += ' <table cellspacing="0" cellpadding="0" border="0" class="people_to_invite_infos">';

         // SOCIÉTÉ
         if (userInfos['all_infos']['societe'] != "")
           strHtml += '   <tr><td class="societe">'+ userInfos['all_infos']['societe'] +'</td></tr>';

         // MINI-BIO
         if (userInfos['all_infos']['minibio'] != "")
           strHtml += '   <tr><td>'+ userInfos['all_infos']['minibio'] +'</td></tr>';
         else if (userInfos['all_infos']['bio'] != "")
           strHtml += '   <tr><td>'+ userInfos['all_infos']['bio'] +'</td></tr>';

         // CENTRES D INTÉRÊTS
         if (userInfos['all_infos']['interests'] != "")
          strHtml += '   <tr><td>'+ userInfos['all_infos']['interests'] +'</td></tr>';

         strHtml += ' </table>';
        }
       else
         strHtml += ' <div style="width: 100%; text-align:center; font-size: 25px; padding-top: 35px; font-weight: bold; color: #D3D3D3;">?</div>';

       strHtml += '   </td>';
       strHtml += '  </tr>';
       strHtml += ' </table>';

       var strInfosAutres = '';
       for (var lib in userInfos['all_infos'])
        { strInfosAutres += userInfos['all_infos'][lib] +', '; }
       if (userInfos['is_friend'] == "1")
         SocialEngine.Event.tabFriends['user_'+ userID] = true;
       SocialEngine.Event.tabUserName['user_'+ userID] = userInfos['displayname'];
       SocialEngine.Event.tabInfosAutres['user_'+ userID] = strInfosAutres;
       strHtml += '</script>';

       strHtml += '</div>';
      });

      strHtml += '</div>';

// Jean 16/06/2009
      if ($('invite_friendlist')) $('invite_friendlist').innerHTML = strHtml;
      
      //$('eventMemberInviteSelectAll').onclick = '';

      $('inviteForm').style.display = '';
      $('noFriends').style.display = 'none';
      $('inviteResults').style.display = 'none';
    }
    
    else
    {
      $('inviteForm').style.display = 'none';
      $('noFriends').style.display = '';
      $('inviteResults').style.display = 'none';
    }

    // Jean 17/06/2010
    if ($('btn_submit_invite_to_see_and_comment'))
      $('btn_submit_invite_to_see_and_comment').style.display = justInviteToAttend ? 'none' : 'inline';
    if ($('btn_submit_invite_to_take_part'))
      $('btn_submit_invite_to_take_part').style.display = justInviteToAttend ? 'none' : 'inline';
    if ($('btn_submit_invite_to_attend'))
      $('btn_submit_invite_to_attend').style.display = justInviteToAttend ? 'inline' : 'none';

    var hauteurDoc = typeof( window.innerWidth ) == 'number' ?
                             // IE
                             window.innerHeight
                             // Firefox
                             : document.documentElement.clientHeight;
    if (hauteurDoc == 0)
      hauteurDoc = document.documentElement.offsetHeight;

    TB_show(this.Base.Language.Translate(allFriends ? 3510163 : (justInviteToAttend ? 3510609 : 3000225)), '#TB_inline?height='+ (hauteurDoc ? (hauteurDoc - 100) : '680') +'&width=1000&inlineId=eventmemberinvite', '', '../images/trans.gif', true);
    if (hauteurDoc && $('table_header_invites')) $('scroll_invites').style.height = Math.max(0, hauteurDoc - $('table_header_invites').offsetHeight - $('buttons_memberInviteSend').offsetHeight - 150);
    SocialEngine.Event.allFriends = allFriends;

    try
     { $('affine_intervenants').focus(); }
    catch (e) {;}
  },
  
  /*
  memberInviteUpdate: function(userID, state)
  {
    //alert(userID + ', ' + state);
    state = ( state ? true : false );
    if( state && !this.currentInvites.contains(userID) )
      this.currentInvites.include(userID);
    else if( !state && this.currentInvites.contains(userID) )
      this.currentInvites.erase(userID);
  },
  */
  
  memberInviteSend: function(approvedValue)
  {
    //alert('currentInvites : '+ currentInvites);
    // Ajax
    var bind = this;

    if (!approvedValue)
      approvedValue = 1;

    if (this.listeInvitedUserID == 0)
    {
     alert(bind.Base.Language.Translate(3000775));
     return;
    }

    // 19/06/2009 : On évite de cliquer 36 fois sur le bouton
   if ($('buttons_memberInviteSend')) $('buttons_memberInviteSend').style.display = 'none';
   if ($('loading_memberInviteSend')) $('loading_memberInviteSend').style.display = 'inline';

   // Jean 08/12/2009
   if (buttonMemberInviteSend) buttonMemberInviteSend.style.display = 'none';
   if (waitMemberInviteSend) waitMemberInviteSend.style.display = 'inline';

   var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmemberinvite',
        'approved_value' : approvedValue,
        'event_id' : this.eventInfo.event_id,
        'invites' : this.listeInvitedUserID /*this.currentInvites*/
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        else
        {
          if (responseObject.invites_sent.length == 0)
           {
            // Jean 08/12/2009
            if (buttonMemberInviteSend) buttonMemberInviteSend.style.display = 'inline';
            if (waitMemberInviteSend) waitMemberInviteSend.style.display = 'none';

            alert(bind.Base.Language.Translate(SocialEngine.Event.listeInvitedUserID.length > 1 ? 3000781 : 3000782) +".");

            if ($('buttons_memberInviteSend')) $('buttons_memberInviteSend').style.display = 'inline';
            if ($('loading_memberInviteSend')) $('loading_memberInviteSend').style.display = 'none';
           }
          else
           {
            alert(
                  responseObject.invites_sent.length +(" "+ bind.Base.Language.Translate(responseObject.invites_sent.length == 1 ? 3000783 : 3000784) +".")
                + (responseObject.invites_sent.length < SocialEngine.Event.listeInvitedUserID.length ?
                     ("\n\n"+ bind.Base.Language.TranslateFormatted(3000780, [SocialEngine.Event.listeInvitedUserID.length - responseObject.invites_sent.length])) : "")
                );
            try {TB_remove();} catch (e) {;}

            // Jean 19/08/2009
            if( document.event_members_form )
              document.event_members_form.submit();
           }

          // Show invites sent
          $('inviteResults').innerHTML = bind.Base.Language.TranslateFormatted(3000229, [responseObject.invites_sent]);
          $('inviteForm').style.display = 'none';
          $('noFriends').style.display = 'none';
          $('inviteResults').style.display = '';
        }
      }
    });
    
    request.send();
  },
  
  
  // Jean 17/11/2009 : Pour inviter 1 seule personne à un tournage
  oneMemberInviteSend: function(user_id)
  {
    // Ajax
    var bind = this;

    if (!user_id)
    {
     alert(bind.Base.Language.Translate(3000775));
     return;
    }

    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventmemberinvite',
        'event_id' : this.eventInfo.event_id,
        'invites' : [user_id]
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
         }
        else
         {
          if (responseObject.invites_sent.length == 0)
           {
            alert(bind.Base.Language.Translate(SocialEngine.Event.listeInvitedUserID.length > 1 ? 3000781 : 3000782) +".");
           }
          else
           {
            alert(
                  responseObject.invites_sent.length +(" "+ bind.Base.Language.Translate(responseObject.invites_sent.length == 1 ? 3000783 : 3000784) +".")
                + (responseObject.invites_sent.length < SocialEngine.Event.listeInvitedUserID.length ?
                     ("\n\n"+ bind.Base.Language.TranslateFormatted(3000780, [SocialEngine.Event.listeInvitedUserID.length - responseObject.invites_sent.length])) : "")
                );
            try {TB_remove();} catch (e) {;}
           }
         }
      }
    });
    
    request.send();
  },
  
  
  
  
  //oliv 3 juin 08
  envoyerAmi: function(eventID)
  {
    this.currentConfirmID = ( eventID || this.eventInfo.event_id );

    TB_show(this.Base.Language.Translate(3000575), '#TB_inline?height=400&width=600&inlineId=confirmEnvoyerAmi', '', '../images/trans.gif', 1);  //this.Base.Language.Translate(100051056)
  },

  EnvoyerAmiConfirm: function()
  {

    var bind = this;
    eventID = this.currentConfirmID;
    inviteemails = $('invite_emailsField').value;
    invitemessage = $('invite_messageField').value;
    invitesubject = $('invite_subjectField').value;

    if(inviteemails !="" && invitemessage!=""){

    $('buttons_EnvoyerAmiConfirm').style.display='none';
    $('loading_EnvoyerAmiConfirm').style.display='inline';

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'envoyermailami',
        'invite_emails' : inviteemails,
        'invite_message' : invitemessage,
        'invite_subject' : invitesubject,
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
          $('buttons_EnvoyerAmiConfirm').style.display = 'inline';
          $('loading_EnvoyerAmiConfirm').style.display = 'none';
         }
        else
         {
          TB_remove();
          // Votre recommandation est bien partie... Merci beaucoup pour ce coup de pouce !
          alert(bind.Base.Language.Translate(3510145));
          // Remove Smoothbox  
          //alert('OK');
          //request.send();
          /*
          if( document.event_members_form )
            document.event_members_form.submit();
            */
         }
      }
    });
    
    //request.send();
    request.send();
    // Reset
    //currentConfirmDeleteID = 0;
    }else{ 
       alert(bind.Base.Language.Translate(3000574));
    }
  },

  //end oliv 3 juin09




// Jean 04/12/2009 : fonction générique pour gérer les différents types de bookmarking (event_member_xxx)
  interestConfirm: function(interestType, value, eventID)
  {
    // Jean 25/01/2010 : si pas loggué...
    if (!isLogged)
     {
      go_login();
      return;
     }

    if (!eventID) eventID = ( this.currentConfirmID || this.eventInfo.event_id );
    if (!eventID) return;

    if (isExtranet)
     {
      // Jean 03/06/2010 : En mode extranet, si on déclaré avoir terminé sa partie, alors c'est qu'on n'est plus en train de travailler dessus
      if (interestType == 'wantattend' && value == 1)
       {
        if ($('seEventProfileWorkingOnIt'))
          $('seEventProfileWorkingOnIt').checked = false;
        else if ($('seEventProfileWorkingOnIt_'+ eventID))
          $('seEventProfileWorkingOnIt_'+ eventID).checked = false;
       }
      // L'inverse
      if (interestType == 'working' && value == 1)
       {
        if ($('seEventProfileWantToAttend'))
          $('seEventProfileWantToAttend').checked = false;
        else if ($('seEventProfileWantToAttend_'+ eventID))
          $('seEventProfileWantToAttend_'+ eventID).checked = false;
       }
     }

    // Remove Smoothbox
    if( $('TB_overlay') ) TB_remove();

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventinterest',
        'event_id' : eventID,
        'interest_type' : interestType,
        'value' : value
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        else
        {
          // Jean 14/08/2009 : on met à jour l'affichage des différents boutons seulement après réception du message de retour par le serveur
          if ($('edit_link')) $('edit_link').style.display = (responseObject.user_can_edit ? '' : 'none');
          if ($('eventProfileMenuInvite')) $('eventProfileMenuInvite').style.display = (responseObject.user_can_invite ? '' : 'none');

          if ($('TR_actions')) $('TR_actions').style.display = (responseObject.user_can_invite
                                                             || responseObject.user_can_edit
                                                             || responseObject.user_can_request
                                                             || responseObject.user_can_cancel_request ? '' : 'none');

          if ($('eventProfileMenuCancel')) $('eventProfileMenuCancel').style.display = responseObject.user_can_cancel_request ? '' : 'none';

          // Jean 12/01/2010
          if ($('zoneVolontariatBis') && interestType == "wanttakepart")
            $('zoneVolontariatBis').style.display = value == 1 ? 'none' : '';

          // Jean 22/03/2010
          if (interestType == "sponsor")
           {
            if ($('zoneSponsoring')) $('zoneSponsoring').style.display = (value == 1 ? 'none' : '');
            if ($('why_not_sponsor_'+ eventID)) $('why_not_sponsor_'+ eventID).style.display = (value == 1 ? 'none' : '');
            if (value == 1)
              // Merci à vous ! Un mail détaillant les tarifs et modalités liés au sponsoring de plateaux TV vient de vous être envoyé.
              alert(bind.Base.Language.Translate(3510327));
           }

          /*
          if ($('eventProfileMenuLeave'))
            $('eventProfileMenuLeave').style.display = (interestType == 0 ? 'none' : '');
          if ($('eventProfileMenuRequest'))
            $('eventProfileMenuRequest').style.display = (responseObject.user_can_cancel_request ? '' : 'none');
          */

          // event - Save success messages
          zoneSuccess = null;
          if ($('seEventProfileBookmarkSuccess'))
            zoneSuccess = $('seEventProfileBookmarkSuccess');
          else if ($('seEventProfileBookmarkSuccess_'+ eventID))
            zoneSuccess = $('seEventProfileBookmarkSuccess_'+ eventID);

          if( zoneSuccess )
          {
            zoneSuccess.style.display = 'block';
            zoneSuccess.slide('hide').slide('in');
            (function(){ zoneSuccess.slide('show').slide('out'); }).delay(2000);
          }
        }
      }
    });

    request.send();
    
    // Reset
    this.currentConfirmID = 0;
  },


  // RSVP
  rsvpShow: function(eventID)
  {
    this.currentConfirmID = ( eventID || this.eventInfo.event_id );
    TB_show(this.Base.Language.Translate(3000097), '#TB_inline?height=150&width=350&inlineId=confirmeventrsvp', '', '../images/trans.gif');
  },


  rsvpConfirm: function(eventRsvp, myUserId)
  {
    // Jean 25/01/2010 : si pas loggué...
    if (!isLogged)
     {
      go_login();
      return;
     }

    eventID = ( this.currentConfirmID || this.eventInfo.event_id );
    
    // Remove Smoothbox
    if( $('TB_overlay') ) TB_remove();
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventrsvp',
        'event_id' : eventID,
        'event_rsvp' : eventRsvp
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // Jean 14/08/2009 : on met à jour l'affichage des différents boutons seulement après réception du message de retour par le serveur
          if ($('edit_link')) $('edit_link').style.display = (responseObject.user_can_edit ? '' : 'none');
          if ($('eventProfileMenuRequest')) $('eventProfileMenuRequest').style.display = 'none';
          if ($('eventProfileMenuCancel')) $('eventProfileMenuCancel').style.display = responseObject.user_can_cancel_request ? '' : 'none';

          // event - Switch profile buttons (for join)
          if( $('eventProfileMenuLeave') )
          {
            // Show leave button for all but leader
            //if( bind.UserRank<3 ) $('eventProfileMenuLeave').style.display = '';

            // Show invite button if allowed
          if ($('eventProfileMenuInvite')) $('eventProfileMenuInvite').style.display = (responseObject.user_can_invite ? '' : 'none');
            //$('eventProfileMenuRSVP').style.display = '';
          }
          
          // Jean 18/08/2009
          if ($('TR_actions')) $('TR_actions').style.display = (responseObject.user_can_invite
                                                             || responseObject.user_can_edit
                                                             || responseObject.user_can_request
                                                             || responseObject.user_can_cancel_request ? '' : 'none');
          
          // event - Save success messages
          var objDivRSVPSuccess = $('seEventProfileRSVPSuccess');
          if( objDivRSVPSuccess )
          {
            objDivRSVPSuccess.style.display = 'block';
            objDivRSVPSuccess.slide('hide').slide('in');
            (function(){ objDivRSVPSuccess.slide('show').slide('out'); }).delay(2000);
          }
          
          // update buttons visibility (page 'user_event.tpl')
          if( $('seEvent_' + eventID) )
          {
            // User should never be able to join an invite only event through the user_event page
            if ($('seEvent_' + eventID).getElement('.seEventUserOptionJoin'))
              $('seEvent_' + eventID).getElement('.seEventUserOptionJoin').style.display = 'none';
            if ($('seEvent_' + eventID).getElement('.seEventUserOptionRsvp'))
              $('seEvent_' + eventID).getElement('.seEventUserOptionRsvp').style.display = '';
            //$('seEvent_' + eventID).getElement('.seEventUserOptionLeave').style.display = '';
            if ($('seEvent_' + eventID).getElement('.seEventStatusAccept'))
              $('seEvent_' + eventID).getElement('.seEventStatusAccept').style.display = 'none';
            if ($('seEvent_' + eventID).getElement('.seEventStatusRSVP'))
              $('seEvent_' + eventID).getElement('.seEventStatusRSVP').style.display = '';
            if ($('seEvent_' + eventID).getElement('.seEventUserOptionEdit'))
              $('seEvent_' + eventID).getElement('.seEventUserOptionEdit').style.display = (responseObject.user_can_edit ? '' : 'none');
          }
          
          // update response (page 'user_event.tpl')
          if( $('seEventRSVP_' + eventID) )
          {
            if (responseObject.event_rsvp_lvid)
              $('seEventRSVP_' + eventID).innerHTML = bind.Base.Language.Translate(responseObject.event_rsvp_lvid);
            else
              $('seEventRSVP_' + eventID).innerHTML = bind.Base.Language.Translate(bind.rsvpLanguageVars[eventRsvp]);
            // Jean 14/08/2009
            $('seEventRSVP_' + eventID).parentNode.className = 'rsvp_'+ eventRsvp;
          }

          // Jean 19/08/2009 : pour 'event.tpl'
          if ($('seEventProfileRSVP_'+ eventRsvp))
            $('seEventProfileRSVP_'+ eventRsvp).checked = true;
          if ($('eventProfileMenuRSVP'))
            $('eventProfileMenuRSVP').style.display = 'none';
          if ($('rsvp_lvid_guest_'+ myUserId))
           {
            $('rsvp_lvid_guest_'+ myUserId).innerHTML = bind.Base.Language.Translate(bind.rsvpLanguageVars[eventRsvp]);
            $('rsvp_lvid_guest_'+ myUserId).style.background = "#DB6D11";
            $('rsvp_lvid_guest_'+ myUserId).style.borderColor = "white";
            $('rsvp_lvid_guest_'+ myUserId).style.color = "white";
           }
          // Jean 19/08/2009
        }
      }
    });
    
    request.send();
    
    // Reset
    this.currentConfirmID = 0;
  },
  

  // Annuler ma demande de participation
  cancelShow: function(eventID)
  {
    this.currentConfirmID = ( eventID || this.eventInfo.event_id );
    TB_show(this.Base.Language.Translate(3000170), '#TB_inline?height=100&width=300&inlineId=confirmeventrequestcancel', '', '../images/trans.gif');
  },
  
  
  cancelConfirm: function()
  {
    eventID = this.currentConfirmID;
    
    // Remove Smoothbox
    TB_remove();
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventrequestcancel',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // event - Show/hide profile menu icons
          if( $('eventProfileMenuRequest') ) $('eventProfileMenuRequest').style.display = '';
          if( $('eventProfileMenuCancel') )  $('eventProfileMenuCancel').style.display = 'none';
          if( $('eventProfileMenuLeave') )  $('eventProfileMenuLeave').style.display = 'none';

          if ($('seEventProfileBookmark_1')) $('seEventProfileBookmark_1').checked = false;

          // user_event - Remove event row
          if( $('seEvent_' + eventID) )
            $('seEvent_' + eventID).destroy();

          // user_event - Fix that calendar
          var eventMonthShow = $('seEventMonthShow_' + eventID);
          if( eventMonthShow )
          {
            var eventMonthDay = eventMonthShow.title;
            var eventCellElement = $('event_cell' + eventMonthDay);
            eventMonthShow.destroy();

            // Fix color
            if( eventCellElement && eventCellElement.className!='event_cell3' && !eventCellElement.getElements('a').length )
            {
              $('event_cell' + eventMonthDay).className = 'event_cell1'; 
            }
          }
        }
      }
    });
    
    request.send();
    
    // Reset
    this.currentConfirmID = 0;
  },
  
  
  
  
  // Join (N'EST PLUS UTILISÉE : DORÉNAVANT, ON JOINT UN EVENT VIA BOOKMARK OU RSVP)
  join: function(eventID, eventRSVP)
  {
    if( !eventID ) eventID = this.eventInfo.event_id;
    
    // Remove Smoothbox - for month view, might mess things up?
    if( $('TB_overlay') ) TB_remove();
    
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventjoin',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // event - Switch profile buttons
          if( $('eventProfileMenuLeave') )
          {
            if( bind.eventInfo.event_inviteonly )
            {
              $('eventProfileMenuRequest').style.display = 'none';
              $('eventProfileMenuCancel').style.display = '';
            }
            
            else
            {
              $('eventProfileMenuLeave').style.display = '';
              $('eventProfileMenuRSVP').style.display = '';
              if( bind.eventInfo.event_invite ) $('eventProfileMenuInvite').style.display = '';
              // Jean 18/08/2009
              if ($('TR_actions')) $('TR_actions').style.display = '';
            }
          }
          
          // user_event - Switch buttons
          else if( $('seEvent_' + eventID) )
          {
            // User should never be able to join an invite only event through the user_event page
            $('seEvent_' + eventID).getElement('.seEventUserOptionJoin').style.display = 'none';
            $('seEvent_' + eventID).getElement('.seEventUserOptionRsvp').style.display = '';
            $('seEvent_' + eventID).getElement('.seEventUserOptionLeave').style.display = '';
            $('seEvent_' + eventID).getElement('.seEventStatusAccept').style.display = 'none';
            $('seEvent_' + eventID).getElement('.seEventStatusRSVP').style.display = '';
          }
          
          // Send RSVP if set
          if( $type(eventRSVP) )
          {
            bind.rsvpConfirm(eventRSVP);
          }
        }
      }
    });
    
    request.send();
    
    // Reset
    this.currentConfirmID = 0;
  },
  
  
  
  
  // Demande une autorisation de participer
  request: function(eventID)
  {
    // Jean 25/01/2010 : si pas loggué...
    if (!isLogged)
     {
      go_login();
      return;
     }

    if( !eventID ) eventID = this.eventInfo.event_id;
    
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventrequestsend',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
        {
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
        }
        
        else
        {
          // event - Switch profile buttons
          if( $('eventProfileMenuRequest') ) $('eventProfileMenuRequest').style.display = 'none';
          if( $('eventProfileMenuCancel') )  $('eventProfileMenuCancel').style.display = '';
        }
      }
    });
    
    request.send();
    
    // Reset
    this.currentConfirmID = 0;
  },


  // Jean 03/12/2009 : pour changer les slides (fonction réservée aux CM)
  changeSlide: function(eventID, offset, nbTotalSlides)
   {
    if (offset == 0)
      return;

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventslidechange',
        'event_id' : eventID,
        'current_slide_position' : currentSlidePosition,
        'offset' : offset
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          /*
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
          */
         }
        else
         {
           if (responseObject.url_slide)
            {
             if (responseObject.new_current_slide_position != currentSlidePosition)
              {
               var html = '<IMG src="'+ responseObject.url_slide +'" border=0 />';
               $('event_slide_content').innerHTML = html;
               currentSlidePosition = responseObject.new_current_slide_position;
               bind.loadProfileTab('slide');
              }
            }
           else
            {
             $('event_slide_content').innerHTML = '';
             currentSlidePosition = 0;
            }
           if ($('liste_acces_slide').selectedIndex != responseObject.new_current_slide_position)
             $('liste_acces_slide').selectedIndex   = responseObject.new_current_slide_position;
           $('btn_slide_start').style.display  = responseObject.new_current_slide_position == 0 ? 'inline' : 'none';
           $('btn_slide_cancel').style.display = responseObject.new_current_slide_position > 0 ? 'inline' : 'none';
           $('btn_slide_prev').style.visibility   = responseObject.new_current_slide_position > 1 ? 'inherit' : 'hidden';
           $('btn_slide_next').style.visibility   = responseObject.new_current_slide_position < nbTotalSlides ? 'inherit' : 'hidden';

          //alert(responseObject.url_slide);
         }
      }
    });
    request.send();
   },

  // Jean 03/12/2009
  initSlide: function(eventID)
   {
    this.changeSlide(eventID, null, null);
   },

  // Jean 03/12/2009 : pour changer les slides (fonction réservée aux CM)
  scruteSlides: function(eventID, nbTotalSlides)
   {
    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'eventscruteslides',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          /*
          if (responseObject.is_debug) alert(responseObject.error);
          else alert(bind.Base.Language.Translate(3000153));
          */
         }
        else
         {
           if (responseObject.url_slide)
            {
             if (responseObject.current_slide_position != currentSlidePosition)
              {
               var html = '<IMG src="'+ responseObject.url_slide +'" border=0 />';
               $('event_slide_content').innerHTML = html;
               currentSlidePosition = responseObject.current_slide_position;
               bind.loadProfileTab('slide');
              }
            }
           else
            {
             $('event_slide_content').innerHTML = '';
            }
          //alert(responseObject.url_slide);
           if ($('btn_slide_next'))
            {
             if ($('liste_acces_slide').selectedIndex != responseObject.current_slide_position)
               $('liste_acces_slide').selectedIndex  = responseObject.current_slide_position;
             $('btn_slide_start').style.display  = responseObject.current_slide_position == 0 ? 'inline' : 'none';
             $('btn_slide_cancel').style.display = responseObject.current_slide_position > 0 ? 'inline' : 'none';
             $('btn_slide_prev').style.visibility   = responseObject.current_slide_position > 1 ? 'inherit' : 'hidden';
             $('btn_slide_next').style.visibility   = responseObject.current_slide_position < nbTotalSlides ? 'inherit' : 'hidden';
            }
         }
      }
    });
    request.send();
   },

  lastTaskDeadline: null,

  lastLoadedTaskList: null,

  dicoTasks: null,

  // Jean 17/04/2010 : charge la liste des tâches
  getTaskList: function(eventID, notDisplayLoadingImg, taskIdToShow, forceMAJ)
   {
    if (!notDisplayLoadingImg && $('tasklist_container'))
      $('tasklist_container').innerHTML = '<img src="images/icons/language_tool_loader.gif" border="0" style="width: 32px; height: 32px; margin: 20px;" align="absmiddle" />';

    if (this.lastLoadedTaskList && !forceMAJ)
     {
      this.affichageTaskList(this.lastLoadedTaskList, eventID, taskIdToShow);
      return;
     }

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'get_tasklist',
        'subtasks' : $('onlyMainTasks') && $('onlyMainTasks').checked ? '1' : '0',
        'event_id' : eventID,
        'sort' : $('tasklistSort').value
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          bind.lastLoadedTaskList = responseObject.tasklist;

          bind.dicoTasks = new Array();
          bind.dicoSubTasks = new Array();
          bind.dicoSubSubTasks = new Array();

          // référencement des numéros de tâches
          for (var i=0; i<bind.lastLoadedTaskList.length; i++)
           {
            var w_task = bind.lastLoadedTaskList[i];
            bind.dicoTasks[w_task.event.event_info.event_id] = w_task;

            // référencement des numéros de sous-tâches
            if (w_task.event.sub_tasks)
             {
              for (var j=0; j<w_task.event.sub_tasks.length; j++)
               {
                var sub_task = w_task.event.sub_tasks[j];
                bind.dicoTasks[sub_task.event.event_info.event_id] = sub_task;

                // référencement des numéros de sous-sous-tâches
                if (sub_task.event.sub_tasks)
                 {
                  for (var k=0; k<sub_task.event.sub_tasks.length; k++)
                   {
                    var sub_sub_task = sub_task.event.sub_tasks[k];
                    bind.dicoTasks[sub_sub_task.event.event_info.event_id] = sub_sub_task;
                   }
                 }
               }
             }
           }
          bind.affichageTaskList(bind.lastLoadedTaskList, eventID, taskIdToShow);
         }
       }
    });
    request.send();
   },

  affichageTaskList: function(tasklistObject, eventID, taskIdToShow)
   {
    this.nbTasks = 0;
    this.nbTotalTasks = 0;
    this.nbSubTasks = 0;
    this.nbClients = 0;
    this.nbTags = 0;
    this.nbClosedTasks = 0;
    this.nbNonClosedTasks = 0;
    this.nbFinishedTasks = 0;
    this.nbNonFinishedTasks = 0;
    this.nbWorkingTasks = 0;
    this.atLeastOneRealizedTask = false;
    this.atLeastOneTasker = false;

    var html = this.taskListDisplay_rec(tasklistObject, eventID, taskIdToShow);

    // on dédouble le lien vers l'ajout d'une tâche
    if ($('zone_add_task_form') && this.nbTasks > 0)
      html += '<br /><div id="zone_add_task_form_bis" style="text-align: left;">'+ $('zone_add_task_form').innerHTML +'</div>';

    if ($('zone_cartouche_tasks'))
      $('zone_cartouche_tasks').style.display = this.nbTasks > 0 || $('zone_cartouche_tasks').value != "" ? 'block' : 'none';

    if ($('showTaskers_label'))
      $('showTaskers_label').style.color = this.atLeastOneTasker ? "" : "#BBBBBB";

    if ($('showDoneDates_label'))
      $('showDoneDates_label').style.color = this.atLeastOneRealizedTask ? "" : "#BBBBBB";
/*
    if (this.nbSubTasks > 0 && $('label_onlyMainTasks'))
      $('label_onlyMainTasks').style.color = "";
*/
    if (this.nbClients > 0 && $('showClients_label'))
      $('showClients_label').style.color = '';

    if (this.nbTags > 0 && $('showTags_label'))
      $('showTags_label').style.color = '';

    if (this.nbClosedTasks > 0)
     {
      //if ($('showClosedTasks_label')) $('showClosedTasks_label').style.color = this.atLeastOneRealizedTask ? "" : "#BBBBBB";
      if ($('zone_showDoneDates')) $('zone_showDoneDates').style.display = 'inline';
     }
    else if ($('zone_showDoneDates'))
      $('zone_showDoneDates').style.display = 'none';

    if ($('zone_cpt_sub_tasks') && $('onlyMainTasks') && $('onlyMainTasks').checked)
      $('zone_cpt_sub_tasks').innerHTML = '&nbsp;('+ this.nbSubTasks +')';
    else
      $('zone_cpt_sub_tasks').innerHTML = '';

    if ($('zone_nb_tasks'))
      $('zone_nb_tasks').innerHTML = '&nbsp;('+ this.nbTasks +')';

    $('tasklist_container').innerHTML = html;

    Tips1 = new Tips($$('.Tips1'));

    // Jean 14/06/2010 : On affiche un total par item dans la liste déroulante d'affinage
    $('option_closed_tasks').text   = $('option_closed_tasks').text.replace(/\.\.\./, this.nbClosedTasks);
    $('option_finished_tasks').text = $('option_finished_tasks').text.replace(/\.\.\./, this.nbFinishedTasks);
    $('option_working_tasks').text  = $('option_working_tasks').text.replace(/\.\.\./, this.nbWorkingTasks);
    // Jean 22/06/2010
    $('option_non_finished_tasks').text  = $('option_non_finished_tasks').text.replace(/\.\.\./, this.nbNonFinishedTasks);
    $('option_non_closed_tasks').text  = $('option_non_closed_tasks').text.replace(/\.\.\./, this.nbNonClosedTasks);
    // Jean 05/07/2010
    $('option_all_tasks').text  = $('option_all_tasks').text.replace(/\.\.\./, this.nbTotalTasks);

    // On mémorise dans les cookies les préférences d'affinage
    if (self.memTaskListPrefInCookies) memTaskListPrefInCookies();
   },

  taskListDisplay_rec: function(listeEvents, origEventId, taskIdToShow, depth)
   {
    var html = '';
    if (!depth) depth = 0;

    for (var i=0; i<listeEvents.length; i++)
     {
      var event = listeEvents[i].event;

      var isTaskDoneForMe = /*event.is_user_speaker &&*/ event.event_info.eventmember_wantattend == "1";
      var isTaskClosed = event.event_info.event_daterealized;
      var isTacheBarree = event.user_can_delete && isTaskClosed || (!event.user_can_delete && isTaskDoneForMe);
      var isTaskDoneForSbdy = event.event_info.nb_wantattend > 0;
      var isSbdyWorkinOnTask = event.event_info.nb_working > 0;

      this.nbTotalTasks ++;

      if (isTaskClosed) this.nbClosedTasks ++;
      // Jean 22/06/2010
      else this.nbNonClosedTasks ++;
      if (isTaskDoneForSbdy) this.nbFinishedTasks ++;
      // Jean 22/06/2010
      else this.nbNonFinishedTasks ++;
      if (isSbdyWorkinOnTask) this.nbWorkingTasks ++;

      // Jean 20/05/2010 : s'il faut n'afficher que les tâches en cours
      //if (isTaskClosed && $('showClosedTasks') && !$('showClosedTasks').checked)
      // Jean 14/06/2010
      if (!isTaskClosed && $('tasklistRestrict') && $('tasklistRestrict').value == 'closed')
        continue;
      // Jean 14/06/2010
      if (event.event_info.nb_working == 0 && $('tasklistRestrict') && $('tasklistRestrict').value == 'working')
        continue;
      // Jean 14/06/2010
      if (event.event_info.nb_wantattend == 0 && $('tasklistRestrict') && $('tasklistRestrict').value == 'finished')
        continue;
      // Jean 22/06/2010
      if (event.event_info.nb_wantattend > 0 && $('tasklistRestrict') && $('tasklistRestrict').value == 'non_finished')
        continue;
      // Jean 22/06/2010
      if (isTaskClosed && $('tasklistRestrict') && $('tasklistRestrict').value == 'non_closed')
        continue;

      // Jean 04/07/2010
      if ($('tasklistFilter') && $('tasklistFilter').value != "")
       {
        var searchInLowerCase = retireAccents($('tasklistFilter').value.toLowerCase());
        if (!(
            event.event_info.event_title && event.event_info.event_title != ""
         && retireAccents( event.event_info.event_title.toLowerCase()       ).indexOf(searchInLowerCase) > -1
          ||
            event.event_info.event_client_name && event.event_info.event_client_name != ""
         && retireAccents( event.event_info.event_client_name.toLowerCase() ).indexOf(searchInLowerCase) > -1
          ||
            event.event_info.event_tags && event.event_info.event_tags != ""
         && retireAccents( event.event_info.event_tags.toLowerCase()        ).indexOf(searchInLowerCase) > -1
          ))
         {
          continue;
         }
       }

      if (depth > 0) this.nbSubTasks++;

      if (event.event_info.event_tags) this.nbTags++;

      // Si la tâche courante est une simple tâche, ou qu'il faut afficher les sous-tâches
      if (depth == 0 || !$('onlyMainTasks') || $('onlyMainTasks').checked)
       {
        if (event.event_info.event_intervenants.match(/[0-9]/))
          this.atLeastOneTasker = true;

        if (isTaskClosed)
          this.atLeastOneRealizedTask = true;

        html += '<div id="task_container_'+ event.event_info.event_id +'"';
        html += '     class="task_item_'+ (isTaskClosed ? (isTaskClosed ? 'done' : 'done_for_me') : 'waiting') +'"';
        html += '     style="'+ (this.nbTasks % 2 == 0 ? 'background: #F4F9FF;' : '') + (this.nbTotalTasks > 1 ? 'border-top: 1px solid #ECF4FF;' : '') +';';

        // Mise en valeur durant un bref instant de la ligne qu'on vient de modifier
        if (taskIdToShow == event.event_info.event_id)
         {
          html += 'font-weight: bold; background-color: #EDFF84;';
          setTimeout("$('task_container_"+ event.event_info.event_id +"').style.fontWeight = 'normal'; $('task_container_"+ event.event_info.event_id +"').style.background = '';", 30000);
         }
        html += '">';

        // Si sous-tâche
        if (depth > 0)
         {
          html += '<input type="hidden" id="task_depth_'+ event.event_info.event_id +'" value="'+ depth +'" />';
          html += '<img src="images/sub_comment.png" border="0" style="width: 20px; height: 22px; margin-left:'+ (depth * 20) +'px;" align="absmiddle" />';
         }

        // Pour supprimer cette tâche
        if (event.user_can_delete)
         {
          html += '<a href="javascript:;" onclick="SocialEngine.Event.deleteShow('+ event.event_info.event_id +', true);" title="Supprimer cette tâche">';  // <lang>
          html += '<img src="images/icons/action_delete2.gif" border="0" style="width: 10px; height: 16px;" align="absmiddle" />';
          html += '</a>';
         }
        html += '&nbsp;&nbsp;';

        // Lien vers l'edit complet de la tâche
        if (event.user_can_edit)
         {
          //html += '<a href="user_event_edit.php?event_id='+ event.event_info.event_id +'" title="Éditer tous les champs de cette tâche">';  // <lang>
          html += '<a href="javascript: SocialEngine.Event.editEntireTask('+ origEventId +', '+ event.event_info.event_id +');" title="Modifier cette tâche">';  // <lang>
          html += '<img src="images/icons/event_edit16.gif" border="0" style="width: 16px; height: 16px;" align="absmiddle" />';
          html += '</a>';
         }
        html += '&nbsp;&nbsp;';

        // Lien vers la page détaillée de la tâche
        html += '<a href="task/'+ event.event_info.event_id +'/'+ event.event_info.event_basename +'"';
        // Détails :
        html += ' title="'+ (event.event_info.event_summary != "" ? '<b>'+ this.Base.Language.Translate(907) +'</b><br>'+ event.event_info.event_summary.replace(/\"/g,'&#34;') : '') +'"'
        html += ' class="'+ (event.event_info.event_summary != "" ? 'Tips1' :'') +'">';
        html += '<img src="images/icons/search16.gif" border="0" style="width: 16px; height: 16px;" align="absmiddle" />';
        html += '</a>';

        html += '&nbsp;&nbsp;';

        //html += '<img src="images/icons/event_rsvp16.gif" border="0" align="absmiddle" /> ';
        // Si on a droit de clôturer/déclôturer cette tâche
        if (event.user_can_delete || event.is_user_speaker)
         {
          html += '<input type="checkbox" id="task_done_'+ event.event_info.event_id +'"'+ (isTacheBarree ? ' checked' : '');
          html += '       onclick="SocialEngine.Event.majDoneTask('+ origEventId +', '+ event.event_info.event_id +', this.checked, '+ (isTaskDoneForMe ? 'true' : 'false') +')"';
          html += '       title="'+ (event.user_can_delete ? 'Case cochée ? Tâche terminée !' : "Je déclare que ma partie est terminée !\n\n(le chef de projet clotûrera lui-même cette tâche)") +'"';  // <lang>
          // Jean 03/06/2010 : tâche déclarée comme terminée, mais pas encore clôturée
          if (isTaskDoneForMe && !isTaskClosed)
            html += ' style="background-color: #A8EB92;"';
          html += ' />';
         }

        html += '<span class="task_item_line">';

        html += '<span class="task_item_deadline_line"'+ (!event.event_info.event_datedated ? ' style="display: none;"' : '') +'>';

//if (event.event_info.event_id == 4324) alert(event.event_info.event_date_end);

        // Deadline de la tâche
        var deadlineTxt = getDateStr(event.event_info.event_date_end * 1000);

        // À faire avant le
        html += '&nbsp; '+ this.Base.Language.Translate(3510501) +' ';
        html += '<span id="edit_deadline_container_'+ event.event_info.event_id +'">';
        if (event.user_can_edit)
          html += '<a href="javascript: SocialEngine.Event.editTask(\''+ origEventId +'\', \''+ event.event_info.event_id +'\', \'deadline\');" title="Modifier la deadline de cette tâche" style="color: #D20000; font-weight: bold;">';  // <lang>
        html += deadlineTxt;
        if (event.user_can_edit)
          html += '</a>';
        html += '</span>';
        html += ' : ';

        html += '</span>';

        // On insère les tags devant le titre
        if (event.event_info.event_tags != "" && (!$('showTags') || $('showTags').checked))
          html += '<span class="tasklist_tags">'+ event.event_info.event_tags.replace(/([^, ]+)/g, '<a target="_blank" href="search.php?task=dosearch&t=event&search_text=$1&only_in_titles=on">$1</a>') +"</span> ";

        // Libellé de la tâche
        html += '<span id="edit_title_container_'+ event.event_info.event_id +'">';

        if (event.user_can_edit)
         {
          html += '<a href="javascript: SocialEngine.Event.editTask(\''+ origEventId +'\', \''+ event.event_info.event_id +'\', \'title\');"'
          // Jean 03/06/2010 : tâche déclarée comme terminée, mais pas encore clôturées
          if (isTaskDoneForMe && !isTaskClosed)
            html += ' style="color: #009F00;"';
          html += '   title="Modifier le titre de cette tâche">';  // <lang>
         }
        html += event.event_info.event_title;
        if (event.user_can_edit)
          html += '</a>';
        html += '</span>';

        // Image d'attente
        html += '&nbsp;&nbsp;';
        html += '<img id="img_load_edit_'+ event.event_info.event_id +'" src="images/icons/language_tool_loader_small.gif" border="0" style="width: 16px; height: 16px; display: none;" align="absmiddle" />';

        // Jean 03/06/2010 : si moi ou qq d'autre prétend en avoir terminé pour cette tâche
        html += '&nbsp;&nbsp;';
        html += '<img id="img_task_done_for_me_'+ event.event_info.event_id +'" src="images/icons/unblock16.gif" border="0"';
        html += '     style="width: 16px; height: 16px; display: '+ (isTaskDoneForMe || isTaskDoneForSbdy ? 'inline' : 'none') +';" align="absmiddle"';
        html += '     title="';
        html += (isTaskClosed ?
                   // Cette tâche est clôturée
                   this.Base.Language.Translate(3510647)
                 : (isTaskDoneForMe ?
                      // Je considère que ma partie est terminée.\n\n(J'attends la validation du chef de projet.)
                        this.Base.Language.Translate(3510648)
                      // Au moins un des intervenants considère avoir terminé sa partie.
                      : this.Base.Language.Translate(3510649)
                   )
                 ).replace(/\"/gi, '&34;').replace(/<br>/gi, '\r\n');
        html += '" />';  // <lang>

        // Jean 14/06/2010 : si qq a déclaré travailler sur cette tâche en ce moment
        html += '<img id="img_working_on_task_'+ event.event_info.event_id +'" src="images/icons/unblock16_red.gif" border="0"';
        html += '     style="width: 16px; height: 16px; display: '+ (isSbdyWorkinOnTask ? 'inline' : 'none') +';" align="absmiddle"';
        html += '     title="Au moins un des intervenants travaille sur cette tâche en ce moment" />';  // <lang>

        html += '</span>';

        var displayDoneDate = isTaskClosed && (!$('showDoneDates') || $('showDoneDates').checked);
        var displayNbComments = $('showNbComments') && $('showNbComments').checked && event.event_info.event_totalcomments > 0;
        var displayAuthors = event.author && (!$('showAuthors') || $('showAuthors').checked) && event.event_info.event_datecreated;

        // Infos supplémentairess sur la tâche courante
        if (event.done_by_guy || displayDoneDate || displayNbComments)
         {
          html += '&nbsp;';

          var shtml = '';

  /*            else
            shtml += '[à faire le '+ getDateStr(event.event_info.event_daterealized * 1000);  // <lang>
  */
          // Doit-on montrer les intervenants auxquels ont été affectées les tâches ?
          var displayTaskers = event.done_by_guy && event.done_by_guy.length && (!$('showTaskers') || $('showTaskers').checked);
          if (displayTaskers)
           {
            // À faire par
            shtml += this.Base.Language.Translate(3510502) +' ';

            var strTacherons = new Array();
            for (var j=0; j<event.done_by_guy.length; j++)
             {
              if (!event.done_by_guy[j].user_info.user_id) continue;
              str = '<a href="'+ profile_url_create(event.done_by_guy[j].user_info.user_username, event.done_by_guy[j].user_info.user_displayname) +'"';
              str += '   onmouseover="SocialEngine.Profile.infoBulle_show(null,'+ event.done_by_guy[j].user_info.user_id +',null,event);"';
              str += '   onmouseout="SocialEngine.Profile.infoBulle_hide();"';
              str += '>';
              str += event.done_by_guy[j].user_info.user_displayname +'</a>';
              strTacherons.push(str);
             }
            shtml += strTacherons.join(", ");
           }

          // Jean 06/07/2010 : Doit-on montrer les personnes en copie ?
          var displayCc = event.people_in_cc && event.people_in_cc.length && (!$('showCc') || $('showCc').checked);
          if (displayCc)
           {
            if (displayTaskers) shtml += ' / ';

            // Personne(s) mis(es) en copie :
            shtml += this.Base.Language.Translate(3510599) +' ';

            var strPeopleInCc = new Array();
            for (var j=0; j<event.people_in_cc.length; j++)
             {
              if (!event.people_in_cc[j].user_info.user_id) continue;
              str = '<a href="'+ profile_url_create(event.people_in_cc[j].user_info.user_username, event.people_in_cc[j].user_info.user_displayname) +'"';
              str += '   onmouseover="SocialEngine.Profile.infoBulle_show(null,'+ event.people_in_cc[j].user_info.user_id +',null,event);"';
              str += '   onmouseout="SocialEngine.Profile.infoBulle_hide();"';
              str += '>';
              str += event.people_in_cc[j].user_info.user_displayname +'</a>';
              strPeopleInCc.push(str);
             }
            shtml += strPeopleInCc.join(", ");
           }

          if (displayDoneDate)
           {
            if (displayTaskers || displayCc) shtml += ' / ';
            // Clôturé le xx/xx/xxxx
            strClosedOn = '<span id="edit_donedate_container_'+ event.event_info.event_id +'">';
            if (event.user_can_edit)
              strClosedOn += '<a href="javascript: SocialEngine.Event.editTask(\''+ origEventId +'\', \''+ event.event_info.event_id +'\', \'donedate\');" title="Modifier la date de réalisation effective de cette tâche">';  // <lang>
            strClosedOn += getDateStr(event.event_info.event_daterealized * 1000);  // <lang>
            if (event.user_can_edit)
              strClosedOn += '</a>';
            strClosedOn += '</span>';
            shtml += this.Base.Language.TranslateFormatted(3510589, [strClosedOn]);
           }

          // Jean 19/05/2010 : créé par %1$s le %4$s à %5$s
          if (displayAuthors)
           {
            shtml += (displayTaskers || displayCc || displayDoneDate ? ' / ' : '')
                    +'<font class="task_author" color="#D8570A">'
                    + this.Base.Language.TranslateFormatted(3000216,
                        [event.author.user_info.user_displayname ? event.author.user_info.user_displayname : '',
                         this.Base.URL.url_base + event.author.user_info.user_username +'---'+ retireAccents(event.author.user_info.user_displayname).replace(/[^a-z]/gi, '-'),
                         "",
                         "", getDateStr(event.event_info.event_datecreated * 1000),
                         getHourStr(event.event_info.event_datecreated * 1000)])
                    +'</font>';  // 3510515
           }

          // Jean 07/07/2010
          if (displayNbComments)
           {
            // %1$d commentaires
            shtml += (displayTaskers || displayCc || displayDoneDate || displayAuthors ? ' / ' : '')
                    + '<font style="'+ (event.event_info.event_totalcomments > 0 ? 'font-weight: bold; color: #31993E; background: #F5FFE8;' : 'color: #C9DEC7;') +'">'
                    + this.Base.Language.TranslateFormatted(507, [parseInt(event.event_info.event_totalcomments,10)]) +'</font>';
           }

          // Jean 19/05/2010 : client concerné :
          if (event.event_info.event_client_name)
           {
            this.nbClients++;
            if (event.author && (!$('showClients') || $('showClients').checked))
              html += ' [<font style="color: #FF661C;">'+ this.Base.Language.Translate(3510519) +' <a'+ (event.event_info.event_client_url ? ' href="'+ event.event_info.event_client_url +'" target="_blank"' : '') +' style="color: #FF661C;">'+ event.event_info.event_client_name +'</a></font>]';
           }

          if (shtml != '')
            html += '<br /><img src="images/trans.gif" style="height: 1px; width: 65px;" align="absmiddle"> ('+ shtml +')';
         }

        if (!displayDoneDate)
         {
          html += '<span id="edit_donedate_container_'+ event.event_info.event_id +'" style="display: none;"><a>';
          html += (isTaskClosed ? getDateStr(event.event_info.event_daterealized * 1000) : 0) +'</a></span>';
         }

        html += '</div>';

        html += '<div id="edit_task_container_'+ event.event_info.event_id +'" style="display: none;"></div>';
       }
      this.nbTasks ++;

      // Appel récursif
      if (event.sub_tasks && event.sub_tasks.length > 0)
        html += this.taskListDisplay_rec(event.sub_tasks, origEventId, taskIdToShow, depth+1);
     }

     return html;
   },

  isCreatingTask: false,

  // Jean 18/04/2010 : initialise et affiche le formulaire pour ajouter une tâche à l'event (si <taskID> vaut qqch, alors c'est une modification de tâche, et pas une création)
  addTask: function(eventID, taskID)
   {
    if (taskID)
     {
      if (this.dicoTasks[taskID])
        var taskToEdit = this.dicoTasks[taskID].event;
     }

    // Si un formulaire de mofication de tâche est déjà affiché, alors on le cache
    if (this.currentTaskEditForm)
     {
      this.currentTaskEditForm.slide('out');
      this.currentTaskEditForm.innerHTML = '';
      this.currentTaskEditForm.style.display = 'none';
      this.currentTaskEditForm = null;
     }

    // Si zone déjà présente, alors on la cache
    if ($('new_task_container').innerHTML != '')
     {
      $('new_task_container').slide('out');
      $('new_task_container').innerHTML = '';
      if ($('zone_add_task_form_bis'))
        $('zone_add_task_form_bis').style.display = 'block';
     }
    else
     {
      var html = '';
      html += '<form id="form_task_edit" action="javascript: $(\'img_load_add_task\').style.display = \'inline\'; $(\'img_load_add_task_bis\').style.display = \'inline\'; SocialEngine.Event.'+ (taskID ? 'editEntireTaskConfirm' : 'addTaskConfirm') +'(\''+ eventID +'\''+ (taskID ? ', \''+ taskID +'\'' : '') +');"';
      html += ' style="margin-top: 0px;"';
      html += '>';

      // En mode "modification"
      if (taskID)
        html += '<input type="hidden" id="taskID" value="'+ taskID +'" />';

      var borderRadius = taskID ? '0px 0px 0px 0px' : '10px 10px 0px 0px';

      // Entête du bloc
      html += '<div style="border: 1px solid #B7CEE6; border-bottom: 0px; border-radius: '+ borderRadius +'; -moz-border-radius: '+ borderRadius +'; -khtml-border-radius: '+ borderRadius +'; -webkit-border-radius: '+ borderRadius +'; background: #B7CEE6; color: #394E82; font-weight: bold; padding: 2px 6px 2px 8px;">';
      html += '<div style="float: right;">';

      // Annuler
      html += '<a href="javascript:;" onclick="var DIV = '+ (taskID ? '$(\'edit_task_container_'+ taskID +'\')' : '$(\'new_task_container\')') +'; DIV.slide(\'out\'); DIV.innerHTML = \'\'; $(\'zone_add_task_form_bis\').style.display = \'block\';" style="font-size: 16px;" title="'+ this.Base.Language.Translate(39) +'">X</a>';
      html += '</div>';
      // Titre de l'encart d'ajout / modification de tâche
      html += taskID ? this.Base.Language.Translate(1500170) : $('lb_add_task').innerHTML;
      html += '</div>';

      // Corps du bloc de saisie
      html += '<div style="border: 1px solid #B7CEE6; border-radius: 0px 0px 10px 10px; -moz-border-radius: 0px 0px 10px 10px; -khtml-border-radius: 0px 0px 10px 10px; -webkit-border-radius: 0px 0px 10px 10px; background: #F8FAFC; padding: 8px;"> ';

      html += '<table border="0" cellpadding="4">';

      html += '<tr>';
      html += '<td></td>';
      html += '<td valign="top">';
      // Bouton "Valider"
      html += ' <input id="btn_addtask_submit_bis" type="submit" class="button" value="'+ this.Base.Language.Translate(3000688) +'" style="background: #145FB1; color: white; display: '+ (taskID ? 'inline' : 'none') +';" />';
      // Image d'attente
      html += '<img id="img_load_add_task_bis" src="images/icons/language_tool_loader_small.gif" border="0" style="width: 16px; height: 16px; margin-left: 4px; display: none;" align="absmiddle" />';

      // Lien vers la modif complète de la tâche
      if (taskID)
       {
        html += '<div style="float: right;">';
        html += '<a target="_blank" href="user_event_edit.php?event_id='+ taskID +'" title="Aller dans l\'écran d\'édition complète" style="background: #FEFEFE; border: 1px solid #AAAAAA; padding: 3px 5px 5px 7px;">';  // <lang>
        html += '<img src="images/icons/event_edit16.gif" border="0" style="width: 16px; height: 16px;" align="absmiddle" />';
        html += '</a>';
        html += '</div>';
       }

      html += '</td>';
      html += '</tr>';

      html += '<tr>';
      html += '<td valign="top" align="right" width="135">';
      // Intitulé :
      html += this.Base.Language.Translate(3510495) +'&nbsp;';
      html += '</td>';
      html += '<td valign="top">';
      // Champ texte pour la saisie du titre
      html += ' <input type="text" id="task_title" class="text" style="width: 430px;" maxlength="128"'+ (taskID ? ' value="'+ taskToEdit.event_info.event_title.replace(/\"/g, '&#34;') +'"' : '') +' />';
      html += '</td>';
      html += '</tr>';

      // Jean 06/07/2010
      html += '<tr>';
      html += '<td valign="top" align="right" width="135">';
      // Tags :
      html += 'Tags :&nbsp;';
      html += '</td>';
      html += '<td valign="top">';
      // Champ texte pour la saisie des tags
      html += ' <input type="text" id="task_tags" class="text" style="width: 430px;" maxlength="128"'+ (taskID ? ' value="'+ (taskToEdit.event_info.event_tags ? taskToEdit.event_info.event_tags.replace(/\"/g, '&#34;') : '') +'"' : '') +' />';
      html += '</td>';
      html += '</tr>';

      html += '<tr>';
      html += '<td valign="top" align="right">';
      // Résumé :
      html += 'Résumé :';
      html += '</td>';
      html += '<td valign="top">';
      // Champ multiligne pour la saisie des précisions
      html += ' <textarea id="task_summary" class="text" style="width: 430px; height: 175px;">'+ (taskID ? taskToEdit.event_info.event_summary.replace(/<br>/gi,'\r\n') : '') +'</textarea><br>';
      html += '</td>';
      html += '</tr>';

      html += '<tr>';
      html += '<td valign="top" align="right">';
      // Détails :
      //html += this.Base.Language.Translate(907) +'&nbsp;';
      html += '</td>';
      html += '<td valign="top">';

      var detailsAreOn = taskID && (taskToEdit.event_info.event_client_name
                                 || taskToEdit.event_info.event_client_url
                                 || taskToEdit.event_info.event_client_contacts);

      html += '<input type="checkbox" id="case_details"'+ (detailsAreOn ? ' checked' : '');
      html += '       onclick="$(\'zone_details\').style.display = $(\'case_details\').checked ? \'block\' : \'none\'; if ($(\'zone_details\').style.display != \'none\') $(\'event_client_name\').focus();">';
      //html += ' <img src="images/icons/addfriend16.gif" border="0" align="absmiddle" />';
      // Apporter plus de précisions à la demande...
      html += ' <label for="case_details">'+ this.Base.Language.Translate(3510509) +'</label>';

      html += '<div id="zone_details" style="display: '+ (detailsAreOn ? 'block' : 'none') +'; margin-top: 4px;">';

      //-----------------------------------
      // Jean 19/05/2010 - Champs client
      //-----------------------------------
      html += ' <br />';
      // NOM DU CLIENT :
      html += ' <b>'+ this.Base.Language.Translate(3510437) +'</b>';
      html += ' <br />';
      // AVEC EXACTITUDE SVP - POUR FACILITER LES RECHERCHES
      html += ' <b>'+ this.Base.Language.Translate(3510438) +'</b>';
      html += ' <br />';
      html += ' <input id="event_client_name"';
      html += '        class="text com_manager" type="text"';
      html += '        style="width: 310px;"';
      html += '        '+ (taskID ? ' value="'+ (taskToEdit.event_info.event_client_name ? taskToEdit.event_info.event_client_name.replace(/\"/g, '&#34;') : '') +'"' : '') +' />';
      html += ' <br />';
      // SON SECTEUR D ACTIVITÉ :
      /*
      html += ' '+ this.Base.Language.Translate(3510433) +'';
      html += ' <br />';
      html += ' <select id="event_client_sector_id" class="com_manager just_small">';
      html += '   {section name=sectors_loop loop=$liste_sectors}';
      html += '     <option value='{$smarty.section.sectors_loop.index}'{if $event->event_info.event_client_sector_id == $smarty.section.sectors_loop.index} selected{/if}>{$liste_sectors[sectors_loop]}</option>';
      html += '   {/section}';
      html += ' </select>';
      html += ' <br />';
      */
      // SON SITE WEB :
      html += ' '+ this.Base.Language.Translate(3510432) +'';
      html += ' <br />';
      html += ' <input id="event_client_url"';
      html += '       class="text com_manager" type="text"';
      html += '       style="width: 310px;"';
      html += '       '+ (taskID ? ' value="'+ (taskToEdit.event_info.event_client_url ? taskToEdit.event_info.event_client_url.replace(/\"/g, '&#34;') : '') +'"' : '') +' />';
      // COPIER-COLLER ICI TOUS LES CONTACTS CLIENTS UTILES :
      html += ' <br />';
      html += ' '+ this.Base.Language.Translate(3510440) +'';
      html += ' &nbsp;';
      html += ' <img src="images/icons/help16.gif" title="Uniquement les contacts qui valent d\'être évidemment partagés avec le reste des acteurs du projet." />';
      html += ' <br />';
      html += ' <textarea id="event_client_contacts"';
      html += '           class="text com_manager" type="text"';
      html += '           style="width: 430px; height: 120px; font-size: 11px;">'+ (taskID && taskToEdit.event_info.event_client_contacts ? taskToEdit.event_info.event_client_contacts.replace(/<br>/gi,'\r\n') : '') +'</textarea>';
      html += '</div>';
      //--------------------------------------------------------

      html += '</td>';
      html += '</tr>';

      html += '<tr>';
      html += '<td valign="top" align="right">';
      // Date butoir :
      html += this.Base.Language.Translate(3510500) +'&nbsp;';
      html += '</td>';
      html += '<td valign="top">';
      // Champ texte pour la saisie de la date
      html += ' <select id="task_date_end" class="small">';
      // aucune
      html += ' <option value="">'+ this.Base.Language.Translate(3000669) +'</option>';

      // Génération du choix de la date butoir
      var duree_jour = 1000*3600*24;
      var nb_jours_projet = 200;
      if (this.eventInfo.event_datedated)
        nb_jours_projet = (this.eventInfo.event_date_end - this.eventInfo.event_date_start + 1) / (3600*24);

      var plage = duree_jour * nb_jours_projet;
      var today = new Date();
      var finPlage = new Date();
      finPlage.setTime(this.eventInfo.event_datedated ? this.eventInfo.event_date_end * 1000 : today.getTime() + plage);

      // En cas de modif d'une tâche, on donne la possibilité de reculer ou d'avancer jusqu'à 3 mois avant ou après
      if (taskID && taskToEdit.event_info.event_datedated && taskToEdit.event_info.event_date_end > 0)
       {
        var nbJoursPlage = 92;
        min = taskToEdit.event_info.event_date_end * 1000 - duree_jour * (nbJoursPlage / 2);
        plage = duree_jour * nbJoursPlage;
       }
      else
        min = finPlage - plage;

      for (var i=min; i < min+plage; i += duree_jour)
       {
        html += '<option value="'+ (i/1000) +'"'+ ((taskID ? (taskToEdit.event_info.event_datedated && taskToEdit.event_info.event_date_end == i/1000) : (this.lastTaskDeadline == (i - duree_jour)/1000)) ? ' selected' : '') +'>'+ getDateStr(i) +'</option>';
       }
      html += ' </select>';
      html += '</td>';
      html += '</tr>';

      // Pour affecter cette tâche à des intervenants ou mettre des personnes en copie
      //******************************************************************************
      html += '<tr>';  //  style="display: none;"
      html += '<td valign="top" align="right">';

      // Affecter à :
      html += this.Base.Language.Translate(3510499) +'&nbsp;';

      html += '</td>';
      html += '<td valign="top" style="padding-top: 0px;">';

      // Case pour tout cocher/décocher
      html += '<div style="padding-bottom: 2px; text-align: right; border-bottom: 1px dashed #8093B3; margin-bottom: 2px;">';
      //html +=  '<span style="background: url(images/sub_comment.png) no-repeat bottom left; width: 200px; height: 40px;"></span>';
      html +=  '<input type="checkbox" id="checkall_taskers" onclick="SocialEngine.Event.checkAllTaskUsers(\'taskers\', this.checked);" />';
      html +=  '<label for="checkall_taskers">'+ this.Base.Language.Translate(3510051) +'</label>';
      html +=  '</div>';

      // Liste des collaborateurs affectables pour cette tâche
      html += '<div style="height: 177px; overflow: auto;">';
      html += $('zone_collab_for_tasklist').innerHTML;
      html += '</div>';

      html += '</td>';
      html += '</tr>';

      if (!taskID)
       {
        html += '<tr>';
        html += '<td valign="top" align="right">';

        // Mettre en copie :
        html += this.Base.Language.Translate(3510590) +'&nbsp;';
        html += '</td>';
        html += '<td valign="top" style="padding-top: 0px;">';

        // Case pour tout cocher/décocher
        html += '<div style="padding-bottom: 2px; text-align: right; border-bottom: 1px dashed #8093B3; margin-bottom: 2px;">';
        html +=  '<input type="checkbox" id="checkall_cc" onclick="SocialEngine.Event.checkAllTaskUsers(\'cc\', this.checked);" />';
        html +=  '<label for="checkall_cc">'+ this.Base.Language.Translate(3510051) +'</label>';
        html +=  '</div>';

        // Liste des collaborateurs qu'on peut mettre en copie de cette tâche
        html += '<div style="height: 177px; overflow: auto;">';
        html += $('zone_cc_for_tasklist').innerHTML;
        html += '</div>';

        html += '</td>';
        html += '</tr>';
       }

      html += '<tr>';
      html += '<td></td>';
      html += '<td valign="top">';
      // Bouton "Valider"
      html += ' <input id="btn_addtask_submit" type="submit" class="button" value="'+ this.Base.Language.Translate(3000688) +'" style="background: #145FB1; color: white; " />';
      // Image d'attente
      html += '<img id="img_load_add_task" src="images/icons/language_tool_loader_small.gif" border="0" style="width: 16px; height: 16px; margin-left: 4px; display: none;" align="absmiddle" />';
      html += '</td>';
      html += '</tr>';

      html += '</table>';


      html += '</div>';

      html += '</form>';

      var DIV = taskID ? $('edit_task_container_'+ taskID) : $('new_task_container');
      DIV.style.display = 'block';
      DIV.innerHTML = html;
      DIV.slide('hide').slide('in');

      // Si on est en mode "modification", on pré-coche chaque user déjà "corvéable" dans cette tâche
      if (taskID)
       {
        for (var j=0; j<taskToEdit.done_by_guy.length; j++)
         {
          if (!taskToEdit.done_by_guy[j].user_info.user_id) continue;
          var case_a_cocher = $('taskers_'+ taskToEdit.done_by_guy[j].user_info.user_id);
          if (!case_a_cocher) continue;
          this.checkTaskUser(case_a_cocher, true);
         }
       }

      if ($('zone_add_task_form_bis'))
        $('zone_add_task_form_bis').style.display = 'none';
/*
      $('btn_addtask_submit').focus();
*/
      //$('task_title').focus();
      setTimeout("$('task_title').focus(); $('"+ DIV.id +"').style.overflow = ''; $('"+ DIV.id +"').parentNode.style.height = null; $('"+ DIV.id +"').style.height = null;", 700);
     }
   },


  // Pour cocher/décocher qq dans une zone donnée
  checkTaskUser: function(checkBox, mustCheck)
   {
    checkBox.checked = mustCheck;
    this.majUserVisibility(checkBox.id, checkBox.id.match(/cc_/) ? checkBox.id.replace(/cc_/, "taskers_") : checkBox.id.replace(/taskers_/, "cc_"));
   },

  // Met en évidence un user caché
  hilightTaskUser: function(checkBox)
   {
    checkBox.parentNode.style.background = checkBox.checked ? '#FDFDF2 url(images/fond_task_user_on.png) no-repeat right' : '';
    //checkBox.parentNode.style.borderColor  = checkBox.checked ? '#EDECC0' : 'transparent';
    checkBox.parentNode.className = checkBox.checked ? 'arrondi_leger' : '';
   },

  // Jean 15/06/2010 : pour cocher/décocher tout le monde dans une zone donnée
  checkAllTaskUsers: function(userPrefix, checkAll)
   {
    var listeInput = document.getElementsByTagName('INPUT');
    for (var i=0; i<listeInput.length; i++)
     {
      var input = listeInput[i];
      if (input.type != 'checkbox') continue;
      if (input.checked == checkAll) continue;
      var tabMatch = input.id.match(eval('/^'+ userPrefix +'_([0-9]+)/'));
      if (!tabMatch) continue;
      this.checkTaskUser(input, checkAll, true);
     }
    // Si on cocher tout, alors on décoche la séection globale de users dans la zone opposée (corvéables <=> personnes en copie)
    if ($('checkall_'+ (userPrefix == "cc" ? 'taskers' : 'cc')) && checkAll)
      $('checkall_'+ (userPrefix == "cc" ? 'taskers' : 'cc')).checked = false;
   },


  // Jean 15/06/2010 : quand on coche/décoche un intervenant dans la création d'une tâche, on doit le décocher/cocher dans la zone du "Cc"
  activateOrNotUser: function(userZoneID, mustActivate)
   {
    // L'intitulé
    $(userZoneID).nextSibling.style.color = mustActivate ? '#D4D4D4' : '';
    // La photo
    $(userZoneID).nextSibling.firstChild.style.opacity = mustActivate ? 0.2 : 1;
    try { $(userZoneID).nextSibling.firstChild.filters.alpha.opacity = mustActivate ? 20 : 100; } catch (e) {;}
   },

  // Jean 15/06/2010 : quand on coche/décoche un intervenant dans la création d'une tâche, on doit le décocher/cocher dans la zone du "Cc"
  majUserVisibility: function(userClickZoneID, userOtherZoneID)
   {
    if (!$(userClickZoneID) || !$(userOtherZoneID)) return;
    // Pas 2 cases cochées en même temps pour le même user
    if ($(userClickZoneID).checked && $(userOtherZoneID).checked)
      $(userOtherZoneID).checked = false;
    // Si 1 case cochée, alors on met l'autre en transparence
    this.activateOrNotUser(userClickZoneID, !$(userClickZoneID).checked && $(userOtherZoneID).checked);
    this.activateOrNotUser(userOtherZoneID, $(userClickZoneID).checked && !$(userOtherZoneID).checked);

    // On met en évidence les users cochés
    this.hilightTaskUser($(userClickZoneID));
    this.hilightTaskUser($(userOtherZoneID));
   },

  // valider l'ajout ou la modification d'une tâche
  // (si <taskID> vaut qqch, alors c'est une modification de tâche, et pas une création)
  addTaskConfirm: function(eventID, taskID)
   {
    // Si finalement, on ne veut plus ajouter de tâche
    if ($('task_title').value == '')
     {
      alert('Vous devez saisir un intitulé !');  // <lang>
      $('img_load_add_task').style.display = 'none';
      $('img_load_add_task_bis').style.display = 'none';
      //$('new_task_container').innerHTML = '';
      return;
     }

    // On mémorise la dernière date saisie
    this.lastTaskDeadline = $('task_date_end').value;

    if (this.isCreatingTask) return;
    this.isCreatingTask = true;

    // On reconstitue la valeur du champ "event_intervenants"
    var task_taskers = new Array();
    var listeInput = document.getElementsByTagName('INPUT');
    for (var i=0; i<listeInput.length; i++)
     {
      var input = listeInput[i];
      if (input.type != 'checkbox') continue;
      if (!input.checked) continue;
      var tabMatch = input.id.match(/^taskers_([0-9]+)/);
      if (!tabMatch) continue;
      task_taskers[task_taskers.length] = tabMatch[1];
     }

    // On constitue la liste des user_id des gens à mettre en copie de cette tâche
    var task_cc = new Array();
    var listeInput = document.getElementsByTagName('INPUT');
    for (var i=0; i<listeInput.length; i++)
     {
      var input = listeInput[i];
      if (input.type != 'checkbox') continue;
      if (!input.checked) continue;
      var tabMatch = input.id.match(/^cc_([0-9]+)/);
      if (!tabMatch) continue;
      task_cc[task_cc.length] = tabMatch[1];
     }

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {

        'task' : taskID ? 'edit_task' : 'add_task',
        'event_id' : eventID,
        'task_id' : taskID,
        'task_title' : $('task_title').value,
        'task_summary' : $('task_summary').value,
        'task_taskers' : '#'+ task_taskers.join('#') +'#',
        'task_cc' : task_cc.join(','),
        'task_date_end' : $('task_date_end').value,

        'event_client_name' : $('event_client_name').value,
        'event_client_url' : $('event_client_url').value,
        'event_client_contacts' : $('event_client_contacts').value,

        'event_tags' : $('task_tags').value
      },
      'onComplete':function(responseObject)
      {
        setTimeout("SocialEngine.Event.isCreatingTask = false;", 1000);
        if( $type(responseObject)!="object" || !responseObject.result )
         {
          alert(responseObject.error);
         }
        else
         {
          // On vide le formulaire
          $('new_task_container').innerHTML = '';

          // On recharge la liste des tâches
          bind.getTaskList(eventID, null, responseObject.new_event_id ? responseObject.new_event_id : taskID, true);
         }
      }
    });
    request.send();
   },

  isEditingTask: false,
  memLastTaskTitleRowHTML: '',
  memLastTaskDeadlineRowHTML: '',
  memLastTaskDonedateRowHTML: '',

  // Jean 18/04/2010 : pour éditer rapidement un champ d'une tâche de manière contextuelle
  editTask: function(eventID, taskID, justField)
   {
    var html = '';
    html += '<form id="form_task_edit" action="javascript:$(\'img_load_edit_'+ taskID +'\').style.display = \'inline\';SocialEngine.Event.contextEditTaskConfirm(\''+ eventID +'\', \''+ taskID +'\');" style="display: inline;">';

    // Valeurs d'origine
    html += '<input type="hidden" id="init_task_title" onblur="$(\'form_task_edit\').submit();" value="'+ $('edit_title_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') +'" />';
    html += '<input type="hidden" id="init_task_deadline" onblur="$(\'form_task_edit\').submit();" value="'+ ($('edit_deadline_container_'+ taskID) ? $('edit_deadline_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') : "") +'" />';
    html += '<input type="hidden" id="init_task_donedate" onblur="$(\'form_task_edit\').submit();" value="'+ $('edit_donedate_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') +'" />';

    // Valeurs à modifier
    var taskDepth = $('task_depth_'+ taskID) ? $('task_depth_'+ taskID).value : 0;
    html += '<input type="'+ (justField != 'title' ? 'hidden' : 'text') +'" id="context_task_title" class="text" style="width: '+ (taskDepth > 0 ? (taskDepth > 1 ? 315 : 335) : 375) +'px;" onblur="$(\'form_task_edit\').submit();" value="'+ $('edit_title_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') +'" />';
    html += '<input type="'+ (justField != 'deadline' ? 'hidden' : 'text') +'" id="context_task_deadline" class="text" style="width: 72px;" onblur="$(\'form_task_edit\').submit();" value="'+ ($('edit_deadline_container_'+ taskID) ? $('edit_deadline_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') : "") +'" />';
    html += '<input type="'+ (justField != 'donedate' ? 'hidden' : 'text') +'" id="context_task_donedate" class="text" style="width: 72px;" onblur="$(\'form_task_edit\').submit();" value="'+ $('edit_donedate_container_'+ taskID).firstChild.innerHTML.replace(/\"/g, '&#34;') +'" />';
    html += '</form>';

    memLastTaskTitleRowHTML = $('edit_title_container_'+ taskID).innerHTML;
    memLastTaskDeadlineRowHTML = $('edit_deadline_container_'+ taskID) ? $('edit_deadline_container_'+ taskID).innerHTML : '';
    memLastTaskDonedateRowHTML = $('edit_donedate_container_'+ taskID).innerHTML;

    if (justField == 'deadline')
     {
      if ($('edit_deadline_container_'+ taskID))
        $('edit_deadline_container_'+ taskID).innerHTML = html;
      $('context_task_deadline').focus();
     }
    else if (justField == 'donedate')
     {
      $('edit_donedate_container_'+ taskID).innerHTML = html;
      $('context_task_donedate').focus();
     }
    else if (justField == 'title')
     {
      $('edit_title_container_'+ taskID).innerHTML = html;
      $('context_task_title').focus();
     }
   },

  // Jean 18/04/2010 : si on change juste l'un ou l'autre champ en saisie contextuelle
  contextEditTaskConfirm: function(eventID, taskID)
   {
    // Si pas de changement
    if ($('init_task_title').value == $('context_task_title').value && $('init_task_deadline').value == $('context_task_deadline').value && $('init_task_donedate').value == $('context_task_donedate').value)
     {
      $('img_load_edit_'+ taskID).style.display = 'none';
      $('edit_title_container_'+ taskID).innerHTML = memLastTaskTitleRowHTML;
      if ($('edit_deadline_container_'+ taskID))
        $('edit_deadline_container_'+ taskID).innerHTML = memLastTaskDeadlineRowHTML;
      $('edit_donedate_container_'+ taskID).innerHTML = memLastTaskDonedateRowHTML;
      return;
     }

    if (this.isEditingTask) return;
    this.isEditingTask = true;

    if ( $('context_task_deadline').value != "" && !$('context_task_deadline').value.match(/[0-9][0-9]?\/[0-9][0-9]?\/[0-9][0-9][0-9]?[0-9]?/) )
     {
      alert('Attention, la date est incorrecte !'); // <lang>
      SocialEngine.Event.isEditingTask = false;
      return;
     }

    var newTitle = $('context_task_title').value;
    var newDeadLine = $('context_task_deadline').value;
    var newDoneDate = $('context_task_donedate').value;

    var newDeadLineTimestamp = strDateToTimestamp(newDeadLine);
    var newDoneDateTimestamp = strDateToTimestamp(newDoneDate);
//alert(this.dicoTasks[taskID].event.event_info.event_datedated);

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'edit_task',
        'task_id' : taskID,
        'task_title' : $('context_task_title').value,
        'task_date_end' : newDeadLine != "" ? newDeadLineTimestamp / 1000 : "0",
        'task_daterealized' : newDoneDate != "" ? newDoneDateTimestamp / 1000 : "0"
      },
      'onComplete':function(responseObject)
      {
        setTimeout("SocialEngine.Event.isEditingTask = false;", 1000);
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          var forceMaj = $('tasklistSort').value != 'by_creat_date';
          if (!forceMaj)
           {
            // On met à jour les nouvelles infos dans la structure en mémoire vive
            bind.dicoTasks[taskID].event.event_info.event_title = newTitle;
            bind.dicoTasks[taskID].event.event_info.event_date_end = newDeadLine == '' ? 0 : newDeadLineTimestamp / 1000;
            bind.dicoTasks[taskID].event.event_info.event_datedated = newDeadLine != '' && newDeadLineTimestamp != 0 ? (new Date()).getTime() : null;
            bind.dicoTasks[taskID].event.event_info.event_daterealized = newDoneDate == '' ? 0 : newDoneDateTimestamp / 1000;
           }
          // On rafraîchit la liste en faisant appel au serveur seulement si le critère de tri choisi risque d'imposer un changement selon les modifs de titre ou de date
          var notDisplayLoadingImg = false;
          bind.getTaskList(eventID, notDisplayLoadingImg, !notDisplayLoadingImg && $('tasklistSort').value != 'by_creat_date' ? taskID : null, forceMaj);
         }
      }
    });
    request.send();
   },

  // Jean 18/04/2010
  majDoneTask: function(eventID, taskID, isDone, isTaskDoneForMe)
   {
    $('img_load_edit_'+ taskID).style.display = 'inline';

    // Ajax
    var bind = this;
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'maj_done_task',
        'task_id' : taskID,
        'task_done' : $('task_done_'+ taskID).checked ? '1' : '0'
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          bind.getTaskList(eventID, true, null, true);
/*
          // Jean 01/06/2010 - Un mail a été envoyé au chef de projet : dès qu'il aura validé que cette tâche est bien terminée, celle-ci sera marquée comme clôturée.
          if ($('task_done_'+ taskID).checked)
            alert(bind.Base.Language.Translate(3510559));
*/
          $('img_task_done_for_me_'+ taskID).style.display = isTaskDoneForMe ? 'inline' : 'none';

         }
      }
    });
    request.send();
   },

  // Initialise le formulaire pour modifier une tâche
  currentTaskEditForm: null,

  editEntireTask: function (eventID, taskID)
   {
    var thisTaskForm = $('edit_task_container_'+ taskID);
    var thisTaskFormIsAlreadyOpen = thisTaskForm == this.currentTaskEditForm;

    // Si un formulaire est déjà affiché, alors on le cache
    if (this.currentTaskEditForm)
     {
      this.currentTaskEditForm.slide('out');
      this.currentTaskEditForm.innerHTML = '';
      this.currentTaskEditForm.style.display = 'none';
      this.currentTaskEditForm = null;
     }

    if (!thisTaskFormIsAlreadyOpen)
     {
      this.addTask(eventID, taskID);
      this.currentTaskEditForm = $('edit_task_container_'+ taskID);
     }
   },

  // Valide la modification d'une tâche
  editEntireTaskConfirm: function(eventID, taskID)
   {
    this.addTaskConfirm(eventID, taskID);
   },

  // Jean 23/04/2010 : pour régler un event/projet à "réalisé"
  setEventRealized: function(eventID)
   {
    var bind = this;

    // Êtes-vous sûr que projet soit vraiment "clôturé" ?
    if (!confirm(bind.Base.Language.Translate(3510469)))
      return;

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'set_event_realized',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          window.location.reload( true );
         }
      }
    });
    request.send();
   },


  majPrivnotes: function(eventID, privNotesContent)
   {
    var bind = this;

    $('btn_privnotes_valid_edit').style.display = 'none';
    $('btn_privnotes_cancel').style.display = 'none';
    $('zone_privnotes_edit').style.display = 'none';
    $('loading_privnotes_valid_edit').style.display = 'block';

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'maj_privnotes',
        'event_id' : eventID,
        'event_privnotes' : privNotesContent
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          $('lien_privnotes_edit').style.display = 'inline';
          $('zone_privnotes_content').style.display = 'block';
          $('zone_privnotes_content').innerHTML = privNotesContent;
          //$('form_privnotes_edit').event_privnotes.value = 'coucou';
          //$('event_privnotes__Frame').contentWindow.document.body.innerHTML = 'coucou';
          $('loading_privnotes_valid_edit').style.display = 'none';
         }
      }
    });
    request.send();
   },


  majSummary: function(eventID, summaryContent)
   {
    var bind = this;

    $('btn_summary_valid_edit').style.display = 'none';
    $('btn_summary_cancel').style.display = 'none';
    $('zone_summary_edit').style.display = 'none';
    $('loading_summary_valid_edit').style.display = 'block';

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'maj_summary',
        'event_id' : eventID,
        'event_summary' : summaryContent
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          $('lien_summary_edit').style.display = 'inline';
          $('zone_summary_content').style.display = 'block';
          $('zone_summary_content').innerHTML = summaryContent.replace(/\n/gi, "<br>");
          $('loading_summary_valid_edit').style.display = 'none';
         }
      }
    });
    request.send();
   },

  majDesc: function(eventID, descContent)
   {
    var bind = this;

    $('btn_desc_valid_edit').style.display = 'none';
    $('btn_desc_cancel').style.display = 'none';
    $('zone_desc_edit').style.display = 'none';
    $('loading_desc_valid_edit').style.display = 'block';

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'maj_desc',
        'event_id' : eventID,
        'event_desc' : descContent
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          $('lien_desc_edit').style.display = 'inline';
          $('zone_desc_content').style.display = 'block';
          $('zone_desc_content').innerHTML = descContent;
          $('loading_desc_valid_edit').style.display = 'none';
         }
      }
    });
    request.send();
   },


  // Jean 21/06/2010 - Ajoute d'office qq à la liste des intervenants
  addAsSpeaker: function(eventID, userID)
   {
    var bind = this;

    // [Et voilà ! - Cliquer <a href="%1$s">ici</a> pour rafraîchir]
    if ($('link_addAsSpeaker_'+ eventID +'_'+ userID))
      $('link_addAsSpeaker_'+ eventID +'_'+ userID).innerHTML = '<img src="images/icons/language_tool_loader.gif" alt="Loading..." title="Loading..." border="0" />';

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'add_as_speaker',
        'event_id' : eventID,
        'user_id' : userID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          // [Et voilà ! - Cliquer <a href="%1$s">ici</a> pour rafraîchir]
          if ($('link_addAsSpeaker_'+ eventID +'_'+ userID))
            $('link_addAsSpeaker_'+ eventID +'_'+ userID).innerHTML = bind.Base.Language.TranslateFormatted(3510617, ['javascript: window.location.reload();']);
         }
      }
    });
    request.send();
   },


   // Jean 24/06/2010
   vote: function(eventID) {

      // Si pas loggué...
      if (!isLogged)
       {
        go_login();
        return;
       }
      $('zone_vote_explain').style.display = 'block';
      $('vote_explain').focus();
   },

   voteConfirm: function(eventID)
    {
      // Si pas loggué...
      if (!isLogged)
       {
        go_login();
        return;
       }

      $('img_loading_vote').style.display = 'inline';
      $('btn_vote_submit').style.display = 'none';

      var vote_value = 0;
      var vote_explain = $('vote_explain').value;

      // On lit la valeur du vote
      var listeInput = document.getElementsByTagName('INPUT');
      for (var i=0; i<listeInput.length; i++)
       {
        var input = listeInput[i];
        if (input.type != 'radio') continue;
        if (!input.checked) continue;
        var tabMatch = input.id.match(/^vote([0-9]+)/);
        if (!tabMatch) continue;
        vote_value = input.value;
        break;
       }

      // On transmet le vote (valeur + explication perso)
      var bind = this;

      // Ajax
      var request = new Request.JSON({
        'method' : 'post',
        'url' : this.options.ajaxURL,
        'data' : {
          'task' : 'vote',
          'event_id' : eventID,
          //'user_id' : userID
          'vote' : vote_value,
          'vote_explain' : vote_explain
        },
        'onComplete':function(responseObject)
        {
          if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
           {
            alert(responseObject.error);
            $('img_loading_vote').style.display = 'none';
            $('btn_vote_submit').style.display = 'inline';
           }
          else
           {
            $('img_loading_vote').style.display = 'none';
            $('btn_vote_submit').style.display = 'inline';
            $('mess_vote_submit').style.display = 'block';
            setTimeout("$('mess_vote_submit').style.display = 'none';", 3000);

            // Le bouton devient "Modifier"
            $('btn_vote_submit').value = bind.Base.Language.Translate(3000245);

            // S'i ls'agit d'une modification, le message devient "Vote modifié, merci !"
            $('mess_vote_submit').innerHTML = bind.Base.Language.Translate(responseObject.old_vote_value > 0 ? 3510672 : 3510668);

            // Si un texte descriptif a été saisi, alors on recharge les commentaires (puisqu'un commentaire aura été posté automatiquement avec ce texte)
            SocialEngine.EventComments.total ++;
            SocialEngine.EventComments.getComments(1);

            // On met en évidence le commentaire généré
            if (responseObject.just_created_or_updated_comment_id)
             {
              bind.highlightArea('comment_'+ responseObject.just_created_or_updated_comment_id);
             }
           }
        }
      });
      request.send();
    },

  // Jean 27/06/2010 : Mise en évidence d'une zone HTML précise
  highlightArea: function(zone_id)
   {
    // Si zone pas encore chargée, on attend
    if (!$(zone_id))
      setTimeout('SocialEngine.Event.highlightArea("'+ zone_id +'");', 200);
    else
     {
      // On bascule si besoin sur l'onglet des commentaires
      SocialEngine.Event.loadProfileTab('profile');

      $(zone_id).lastChild.style.backgroundColor = '#D7FFAE';
      $(zone_id).lastChild.firstChild.firstChild.focus();

      try { window.scrollBy(0,200); } catch (e) {;}

      //alert($(zone_id).lastChild.outerHTML);
      setTimeout('$("'+ zone_id +'").lastChild.style.backgroundColor = ""', 600);
      setTimeout('$("'+ zone_id +'").lastChild.style.backgroundColor = "#D7FFAE"', 1200);
      setTimeout('$("'+ zone_id +'").lastChild.style.backgroundColor = ""', 1800);
      setTimeout('$("'+ zone_id +'").lastChild.style.backgroundColor = "#D7FFAE"', 2400);
      setTimeout('$("'+ zone_id +'").lastChild.style.backgroundColor = ""', 3000);
/*
setTimeout("try { alert($('event_"+ eventID +"_comments').lastChild.outerHTML); $('event_"+ eventID +"_comments').lastChild.style.backgroundColor = '#D7FFAE'; } catch (e) {;}", 2000);
setTimeout("try { $('event_"+ eventID +"_comments').lastChild.style.backgroundColor = '#D7FFAE'; $('event_"+ eventID +"_comments').lastChild.firstChild.firstChild.firstChild.focus(); } catch (e) {;}", 3500);
setTimeout("try { $('event_"+ eventID +"_comments').lastChild.style.backgroundColor = ''; } catch (e) {;}", 13000);
*/
     }
   },


  // Jean 28/06/2010
  afficherResultatsSondage: function(eventID)
   {
    // Image d'attente
    if ($('loading_affich_sondage'))
      $('loading_affich_sondage').style.display = 'inline';
    else
      $('loading_affich_sondage_'+ eventID).style.display = 'inline';

    var bind = this;

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'get_poll_values',
        'event_id' : eventID
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          if ($('loading_affich_sondage'))
            $('loading_affich_sondage').style.display = 'none';
          else
            $('loading_affich_sondage_'+ eventID).style.display = 'none';

          // On dessine chaque barre l'une après l'autre
          if (responseObject.listVoteValues.length == 0)
           {
            // "Désolé, il n'y a pas encore eu de réponse dans ce sondage !"
            $('zone_results_sondage').innerHTML = '<center><br><br><br>'+ bind.Base.Language.Translate(3510690) +'</center>';
           }
          else
           {
            var html = '<br><br><table border="0" cellpadding="10">';

            for (var i=0; i<responseObject.listVoteValues.length; i++)
             {
              var repID = responseObject.listVoteValues[i].value;
              html += '<tr>';
              // L'intitulé de la réponse
              html += '<td valign="right">';
              html += responseObject.listVoteValues[i].title;
              html += '</td>';
              // La barre de couleur (de largeur proportionnelle à nbre de votes)
              html += '<td>';
              html += '<div id="sondage_bar_'+ repID +'"></div>';
              html += '</td>';
              // Y vote(s) | XX%
              html += '<td>';
              html += bind.Base.Language.TranslateFormatted(2500028, [responseObject.listVoteValues[i].nbResults]) + ' <font color="#888888"> &nbsp;|&nbsp; '+ Math.round(responseObject.listVoteValues[i].nbResults * 100 / responseObject.nbVoteMembers) + '%</font>';
              html += '</td>';
              html += '</tr>';
             }

            html += '</table>';
            $('zone_results_sondage').innerHTML = html;
           }
          // On montre la lightbox ("Voir les résultats")
          TB_show(bind.Base.Language.Translate(2500032)+' ('+ responseObject.nbVoteMembers +')', '#TB_inline?height=375&width=820&inlineId=zone_results_sondage', '', '../images/trans.gif');
          TB_init();

          // Effet d'étirement sur chaque barre
          for (var i=0; i<responseObject.listVoteValues.length; i++)
           {
            var repID = responseObject.listVoteValues[i].value;
            var barre = $('sondage_bar_'+ repID);
            barre.className = 'poll_bar'+ (repID % 10);
            barre.style.width = '0px';
            barre.style.overflow = 'hidden';
            barre.style.height = '30px';
            barre.style.width = '0px';
            var largeurBarre = responseObject.listVoteValues[i].nbResults * 500 / responseObject.nbVoteMembers;
            var pollEffect = new Fx.Tween(barre, {duration: 1000, transition: Fx.Transitions.Quad.easeOut});
            pollEffect.start('width', 3, largeurBarre);
           }
         }
      }
    });
    request.send();
   },

  // Jean 30/06/2010 : pour prévenir l'admin que quelqu'un demande un fichier PayLoadz
  payLoadzCommand: function()
   {
    // On montre la lightbox avec saisie de l'adresse mail pour commande fichier source
    TB_show('Commande du fichier source', '#TB_inline?height=175&width=820&inlineId=zone_payloadz_command', '', '../images/trans.gif');
    $('payloadz_email_for_command').focus();
   },

  payLoadzCommandConfirm: function()
   {
    var bind = this;

    var eventID = $('payloadz_event_id').value;
    var emailForCommand = $('payloadz_email_for_command').value;
    $('loading_payloadz_command').style.display = 'inline';

    // Ajax
    var request = new Request.JSON({
      'method' : 'post',
      'url' : this.options.ajaxURL,
      'data' : {
        'task' : 'payloadz_command',
        'event_id' : eventID,
        'payloadz_command_email' : emailForCommand
      },
      'onComplete':function(responseObject)
      {
        if( $type(responseObject)!="object" || !responseObject.result || responseObject.result=="failure" )
         {
          alert(responseObject.error);
         }
        else
         {
          $('loading_payloadz_command').style.display = 'none';
          // "Votre demande a été prise en compte !\n\nVous recevrez un mail dans les plus brefs délais vous indiquant sur quelle page vous pourrez payer puis télécharger le fichier vidéo de cette vidéo."
          alert(bind.Base.Language.Translate(3510693).replace(/\\n/g, '\n'));
          TB_remove();
         }
      }
    });
    request.send();
   }

});


