+/**
+ * Ajuste la largeur des conversations en fonction de leur nombre. modifie l'attribut CSS 'width'.
+ */
+Messages.prototype.ajusterLargeurConversations = function()
+{
+ jQuery("#conversations .conversation").css("width", 100 / this.conversations.length + "%")
+}
+
+/**
+ * Demande à toutes les conversations de se flusher (afficher les messages non-affichés).
+ */
+Messages.prototype.flushAll = function()
+{
+ for (var i = 0; i < this.conversations.length; i++)
+ this.flush(i)
+}
+
+/**
+ * Demande à une conversation de se flusher.
+ */
+Messages.prototype.flush = function(numConv)
+{
+ var thisMessages = this
+
+ this.conversations[numConv].flush(
+ function(racine) // appelé lorsqu'un utilisateur click sur un lien vers une conversation
+ {
+ thisMessages.ouvrirConversation(racine)
+ }
+ )
+}
+
+Messages.prototype.ouvrirConversation = function(racine)
+{
+ if (this.client.ajouterConversation(racine))
+ this.rafraichirMessages(true)
+ else
+ this.util.messageDialogue("Cette conversation est déjà ouverte")
+}
+
+Messages.prototype.viderMessages = function()
+{
+ // Obsolète
+ //this.idDernierMessage = null
+
+ for (var i = 0; i < this.conversations.length; i++)
+ this.conversations[i].viderMessages()
+}
+
+/**
+ * Arrete l'attente courante s'il y en a une.
+ */
+Messages.prototype.stopAttenteCourante = function()
+{
+ if (this.attenteCourante != null)
+ this.attenteCourante.abort()
+}
+
+/**
+ * Met à jour les messages de manière continue.
+ * (AJAX-Comet-style proof)
+ * @param vider vide tous les messages avant d'afficher les nouveaux
+ */
+Messages.prototype.rafraichirMessages = function(vider)
+{
+ var thisMessages = this // caisupair javacrypte
+
+ if (vider == undefined)
+ vider = false
+
+ this.stopAttenteCourante()
+
+ if (vider)
+ for (var i = 0; i < this.conversations.length; i++)
+ this.conversations[i].idDernierMessageAffiche = 0\r
+
+ dumpObj(this.getJSONrafraichirMessages())
+ this.attenteCourante = jQuery.ajax({
+ type: "POST",
+ url: "request",
+ dataType: "json",
+ data: this.util.jsonVersAction(this.getJSONrafraichirMessages()),
+ success:
+ function(data)
+ { \r
+ ;;; dumpObj(data)\r
+
+ if (vider)
+ thisMessages.viderMessages()
+
+ // ajoute les messages reçus à leur conversation respective
+ for (var numConv = 0; numConv < data["conversations"].length; numConv++)
+ {
+ // ya pas de nouveaux message -> on passe à la prochaine conversation FIXME : marche pas
+ //if (data["conversations"][numConv]["messages"].length == 0) continue
+
+ if (! thisMessages.ajouterMessages(data["conversations"][numConv], numConv))
+ {
+ thisMessages.util.messageDialogue("La conversation {" + thisMessages.client.conversations[numConv -1].root.toString(36) + "} n'existe pas")
+ thisMessages.client.supprimerConversation(numConv - 1)
+ }
+ }
+
+ // rappel de la fonction dans 100 ms
+ setTimeout(function(){ thisMessages.rafraichirMessages() }, 100);
+ },
+ error:
+ function(XMLHttpRequest, textStatus, errorThrown)
+ {
+ setTimeout(function(){ thisMessages.rafraichirMessages() }, 1000);
+ }
+ })
+}