-/**
- * Evenement déclanché lors de l'insertion du lien de la conversation dans le message courant.
- */
-Conversation.prototype.eventLien = function(fun)
-{
- var thisConversation = this
-
- $("#conversations #" + this.getId() + " .titre .lien").click(
- function()
- {
- fun(thisConversation.num)
- }
- )
-}
-
-/**
- * Evenement déclanché lors de la fermeture de la conversation.
- */
-Conversation.prototype.eventFermer = function(fun)
-{
- var thisConversation = this
-
- $("#conversations #" + this.getId() + " .titre .fermer").click(
- function()
- {
- fun(thisConversation.num)
- }
- )
-}
-
-/**
- * @funNext appelé lorsque l'on passe à la page suivante (de 2 à 1 par exemple)
- * @funPrev appelé lorsque l'on passe à la page précédente (de 1 à 2 par exemple)
- * @funReset appelé lorsque l'on souhaite revenir à la page une
- */
-Conversation.prototype.setFunPage = function(funNext, funPrev, funReset)
-{
- var thisConversation = this
-
- $("#conversations #" + this.getId() + " .next").click(
- function() { funNext(thisConversation.num) }
- )
- $("#conversations #" + this.getId() + " .prev").click(
- function() { funPrev(thisConversation.num) }
- )
- $("#conversations #" + this.getId() + " .numPage").click(
- function() { funReset(thisConversation.num) }
- )
-}
-
-/**
- * Retourne l'id de la conversation sous la forme (par exemple) "conv3".
- */
-Conversation.prototype.getId = function()
-{
- return "conv" + this.id
-}
-
-Conversation.prototype.ajouterMessage = function(message)
-{
- this.messages.push(message)
- this.messagesParId[message.id] = message
- if (this.messages.length > this.nbMessageMax)
- delete this.messagesParId[this.messages.shift().id]
-}
-
-/**
- * FIXME : méthode très lourde. ne serait-ce pas mieux de virer d'un coup l'élément conversation et d'en remettre un vide ?
- */
-Conversation.prototype.viderMessages = function()
-{
- this.messages = []
- this.messagesParId = {}
- this.idDernierMessageAffiche = 0
- $("#conversations #" + this.getId() + " .message").remove()
-}
-
-Conversation.prototype.idMessageFromString = function(idString)
-{
- return parseInt(idString.substr(4 + this.getId().length), 36)
-}
-
-/**
- * Après l'ajout d'un ou plusieurs message cette méthode est appelée afin
- * d'afficher les messages non-affichés.
- * FIXME : méthode super lourde, à optimiser.
- */
-Conversation.prototype.flush = function()
-{
- var thisConversation = this
-
- // est-ce que le prochain message est pair ? (permet d'alterner le style des messages)
- var messagePair = (this.idDernierMessageAffiche == 0 ? true :
- ($("#" + this.getId() + " .messages div:first").attr("class").search("messagePair") == -1)
- )
-
- // construction de l'XHTML des messages
- var XHTML = ""
- for (var i = 0; i < this.messages.length; i++)
- if (this.messages[i].id > this.idDernierMessageAffiche)
- {
- XHTML += this.messages[i].XHTML(messagePair, this.getId())
- messagePair = !messagePair
- }
-
- var DOM = $(XHTML)
-
- // pour chaque nouveau message au niveau du document on crée ses événements
- DOM.each(function() { thisConversation.attacherEventsSurMessage(this) })
- DOM.prependTo("#" + this.getId() + " .messages")
-
- // enlève les messages exedentaires
- var nbMessagesAffiche = $("#" + this.getId() + " .message").size()
- if (nbMessagesAffiche > this.nbMessageMax)
- $("#conversations #" + this.getId() + " .messages .message").slice(this.nbMessageMax, nbMessagesAffiche).remove()
-
- if (this.messages.length > 0)
- this.idDernierMessageAffiche = this.messages[this.messages.length-1].id
-
- // met à jour la racine de la conversation
- this.majRacine()
-}
-
-Conversation.prototype.attacherEventsSurMessage = function(element)
-{
- // l'id du message
- var idMess = this.idMessageFromString($(element).attr("id"))
-
- this.util.infoBulle("Extraction de la conversation à partir de ce message", $(".extraire", element))
- this.util.infoBulle("Extraction de la conversation complète", $(".extraireCompletement", element))
-
- var thisConversation = this
- $(".lienConv", element).click(
- function(event)
- {
- // FIXME : ya pas mieux ?
- var racine = $(event.target).text()
- thisConversation.conversations.ouvrirConversation(parseInt(idString.substring(1, racine.length - 1), 36))
- return false
- }
- )
-
- $(element).click(
- function(event)
- {
- if ($(event.target).is("a") || $(event.target).parents("#outilsBan").length > 0) return
-
- // extraction d'une conversation
- if ($(event.target).is(".extraire"))
- {
- thisConversation.conversations.ouvrirConversation(idMess)
- return
- }
-
- if ($(event.target).is(".extraireCompletement"))
- {
- thisConversation.conversations.ouvrirConversation(thisConversation.messagesParId[idMess].racineId)
- return