MOD le logo devient un protoype pour le design officiel
[euphorik.git] / js / pageMinichat.js
index 1f6a118..678dac3 100755 (executable)
@@ -19,8 +19,8 @@ PageMinichat.prototype.contenu = function()
 <form method="post" action="">\
    <p>\
       <input class="captcha" name="captcha" type="text" size="8" maxlength="8"></input>\
-      <input class="pseudo" name="pseudo" type="text" size="12" maxlength="50" value="&lt;nick&gt;"></input>\
-      <input class="message" name="message" type="text" size="80" maxlength="500" value=""></input>\
+      <input class="pseudo" name="pseudo" type="text" maxlength="50" value="&lt;nick&gt;"></input>\
+      <input class="message" name="message" type="text" maxlength="500" value=""></input>\
       <button class="smiles"></button>\
       <button class="return"></button>\
    </p>\
@@ -46,7 +46,7 @@ PageMinichat.prototype.charger = function()
    {    
       $("body").append(
          '<div id="outilsBan">' +
-         '<form><p><input id="raison" name="raison" type="text" size="10" maxlength="200"></input></p></form>' +
+         '<form action=""><p><input id="raison" name="raison" type="text" size="10" maxlength="200"></input></p></form>' +
          '<img id="ban" src="img/ban.gif" alt="Ban de 3 jours" />' +
          '<img id="kick" src="img/kick.gif" alt="Ban de 15min" />' +
          '<img id="slap" src="img/slap.gif" alt="Avertissement" />' +
@@ -97,8 +97,12 @@ PageMinichat.prototype.charger = function()
    $("form button.smiles").hover(
       function(e)
       {
-         var offset = $(e.target).offset()
-         $("#smiles").css("top", offset.top).css("left", offset.left).show()
+         var position = $(e.target).offset()
+         // le décalage pour ne pas dépasser à droite (10 correspond à la marge pour éviter de coller le bord)
+         var decalage = $("body").width() - $("#smiles").width() - position.left - 10
+         decalage = decalage > 0 ? 0 : decalage
+         
+         $("#smiles").css("top", position.top).css("left", position.left + decalage).show()
       },
       function(e){}
    )
@@ -123,7 +127,7 @@ PageMinichat.prototype.charger = function()
             $("form input.message").val()
          )
             
-         $("form input.message")[0].focus()
+         $("form input.message").focus()
       }
       
    $("form").keypress(
@@ -488,10 +492,10 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
       if (this.messages[i].id > this.idDernierMessageAffiche)
       {      
          var message = this.messages[i]
-         
+        
          // construit l'identifiant de la personne
          var identifiant = 
-            this.client.nickFormat == "nick" ? this.formateur.traitementComplet(message.pseudo) : 
+            this.client.nickFormat == "nick" || message.login == "" ? this.formateur.traitementComplet(message.pseudo) : 
             (this.client.nickFormat == "login" ? this.formateur.traitementComplet(message.login) : 
             this.formateur.traitementComplet(message.pseudo) + "<span class=\"login\">(" + this.formateur.traitementComplet(message.login) +")</span>" )
          
@@ -501,7 +505,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
          XHTMLrepondA = "<span class=\"repondA\">" + XHTMLrepondA + "</span>"
          
          XHTML += 
-            "<div id=\"" + message.id.toString(36) + "\" class=\"" + (messagePair ? "messagePair" : "messageImpair") + " message" +
+            "<div id=\"mess" + message.id.toString(36) + "\" class=\"" + (messagePair ? "messagePair" : "messageImpair") + " message" +
                (this.messages[i].appartientAuClient ? " proprietaire" : "")  +
                (this.messages[i].clientARepondu ? " repondu" : "") +
                (this.messages[i].estUneReponse ? " reponse" : "") +
@@ -510,9 +514,9 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
             "\">" +
                "<div class=\"extraire\">&gt;</div>" +
                "[<span class=\"date\">" + message.date + "</span>]" +
-               "<span class=\"pseudo\" id=\"user" + message.auteurId + "\">" + identifiant + "</span>:" +
+               "<span class=\"pseudo\"><span class=\"id\" style=\"display: none\">" + message.auteurId + "</span class=\"ident\">" + identifiant + "</span>:" +
                XHTMLrepondA +
-               "<span class=\"contenu\">" + (message.systeme ? this.formateur.remplacerBalisesHTML(message.contenu) : this.formateur.traitementComplet(message.contenu, message.pseudo)) + "</span>" +
+               "<span class=\"contenu\">" + this.formateur.traitementComplet(message.contenu, message.pseudo) + "</span>" +
             "</div>"
             
          messagePair = !messagePair
@@ -527,7 +531,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
       $("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty()
 
    // ajoute les événements liés à chaque nouveau message
-   $("#conversations #" + this.getId() + " .message").filter(function(){return parseInt($(this).attr("id"), 36) > thisConversation.idDernierMessageAffiche}).each(
+   $("#conversations #" + this.getId() + " .message").filter(function(){ return parseInt($(this).attr("id").substr(4), 36) > thisConversation.idDernierMessageAffiche }).each(
       function()
       {
          $(".lienConv", this).click(
@@ -547,8 +551,8 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
             $(".pseudo", this).hover(
                function(e)
                {     
-                  var userId =  parseInt($(this).attr("id").substr(4))
-                  var element = $(e.target)
+                  var userId =  parseInt($(".id", this).text())
+                  var element = $(this)
                   var h = element.height()
                   var offset = element.offset()
                   var outils = $("#outilsBan").css("top", offset.top - 2).css("left", offset.left - 2).height(h < 16 ? 16 : h).width(element.width() + 16 * 3 + 4 + 64).show()
@@ -584,7 +588,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
                if ($(event.target).is("a")) return
                
                // l'id du message
-               var idMess = $(this).attr("id")
+               var idMess = $(this).attr("id").substr(4)
                
                // extraction d'une conversation
                if ($(event.target).is(".extraire"))
@@ -595,7 +599,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
             
                var valCourant = $("input.message").val()
                if (valCourant == undefined) valCourant = ""
-               var tag = $(".pseudo", this).text()  + "{" + idMess + "}" + ">"
+               var tag = $(".pseudo span.ident", this).text()  + "{" + idMess + "}" + ">"
                if (valCourant.indexOf(tag, 0) == -1)
                   $("input.message").val(tag + " " + valCourant)
                thisConversation.util.setCaretToEnd($("form input.message")[0])
@@ -628,7 +632,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv)
 Conversation.prototype.afficherConversation = function(element)
 {
    // cherche le message selectionné
-   var id = parseInt($(element).attr("id"), 36)
+   var id = parseInt($(element).attr("id").substr(4), 36)
    
    var message = this.messagesParId[id]
    if (message == undefined) return
@@ -640,7 +644,7 @@ Conversation.prototype.afficherConversation = function(element)
       function()
       {
          var jq = $(this)
-         if (!mess.hasOwnProperty(parseInt(jq.attr("id"), 36)))
+         if (!mess.hasOwnProperty(parseInt(jq.attr("id").substr(4), 36)))
             jq.addClass("cache")
          else         
             jq.removeClass("cache")
@@ -713,8 +717,8 @@ Messages.prototype.getJSONConversations = function()
   */
 Messages.prototype.ajouterMessages = function(elements, numConversation)
 {
-   if (elements["messages"].length == 0 && typeof(this.conversations[numConversation]) == "undefined")
-      return false
+   if (elements["messages"].length == 0)
+      return this.conversations[numConversation] != undefined
 
    for (var i = 0; i < elements["messages"].length; i++)
       this.ajouterMessage(elements["messages"][i], numConversation)
@@ -836,8 +840,9 @@ Messages.prototype.supprimerConversation = function(num)
   * Ajuste la largeur des conversations en fonction de leur nombre. modifie l'attribut CSS 'width'.
   */
 Messages.prototype.ajusterLargeurConversations = function()
-{
-      $("#conversations .conversation").css("width", 100 / this.conversations.length + "%")
+{\r
+   // le "- 0.01" evite que IE se chie dessus lamentablement et affiche les conversations les unes au dessus des autres
+   $("#conversations .conversation").css("width", (100 / this.conversations.length) - 0.01 + "%")
 }
 
 /**
@@ -910,6 +915,7 @@ Messages.prototype.rafraichirMessages = function(vider)
             case "new_troll" :
                thisMessages.trollIdCourant = data["troll_id"]
                $("#trollCourant .troll").html(thisMessages.formateur.traitementComplet(data["content"]))
+               $("#trollCourant .troll a[@rel*=lightbox]").lightBox()
                break
                
             case "new_messages" :