chat reset in user class
[brisk.git] / web / commons.js
index c857390..3b79ddc 100644 (file)
@@ -1,7 +1,10 @@
 /*
  *  brisk - commons.js
  *
- *  Copyright (C) 2006 matteo.nastasi@milug.org
+ *  Copyright (C) 2006-2008 Matteo Nastasi
+ *                          mailto: nastasi@alternativeoutput.it 
+ *                                  matteo.nastasi@milug.org
+ *                          web: http://www.alternativeoutput.it
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -107,8 +110,50 @@ function getStyle(x,IEstyleProp, MozStyleProp)
 
 })()
 
+function addEvent(obj,type,fn)
+{
+    if (obj.addEventListener) {
+        obj.addEventListener( type, fn, false);
+    }
+    else if (obj.attachEvent) {
+        obj["e"+type+fn] = fn;
+        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
+        obj.attachEvent( "on"+type, obj[type+fn] );
+    }
+    else
+        throw new Error("Event registration not supported");
+}
+
+function removeEvent(obj,type,fn)
+{
+    if (obj.removeEventListener) {
+        obj.removeEventListener( type, fn, false );
+    }
+    else if (obj.detachEvent) {
+        obj.detachEvent( "on"+type, obj[type+fn] );
+        obj[type+fn] = null;
+        obj["e"+type+fn] = null;
+    }
+}
+
     // var card_pos = RANGE 0 <= x < cards_ea_n
 
+function show_bigpict(obj, act, x, y)
+{
+   var big;
+
+   // alert("offsetTop: "+obj.offsetTop+"  offsetLeft: "+obj.offsetLeft+"obj.id: "+obj.id);
+   big = $(obj.id+"_big");
+   if (act == "over") {
+       big.style.left = obj.offsetLeft + x+"px";
+       big.style.top  = obj.offsetTop  + y+"px";
+       big.style.visibility = "visible";
+       }
+   else {
+       big.style.visibility = "hidden";
+       }
+}
+
 function rnd_int(min, max) {
   return Math.floor(Math.random() * (max - min + 1) + min);
 }
@@ -701,15 +746,15 @@ function set_names(so,ea,ne,nw,we)
 {
 //    alert("EA: "+ea);
     $("name").innerHTML = so; 
-    $("name").title = so
+    $("name").title = unescapeHTML(so)
     $("name_ea").innerHTML = ea;
-    $("name_ea").title = ea;
+    $("name_ea").title = unescapeHTML(ea);
     $("name_ne").innerHTML = ne;
-    $("name_ne").title = ne;
+    $("name_ne").title = unescapeHTML(ne);
     $("name_nw").innerHTML = nw;
-    $("name_nw").title = nw;
+    $("name_nw").title = unescapeHTML(nw);
     $("name_we").innerHTML = we;
-    $("name_we").title = we;
+    $("name_we").title = unescapeHTML(we);
 
     return;
 }
@@ -796,6 +841,13 @@ var CHATT_MAXLINES = 40;
 /* PRO CHATT */
 function chatt_sub(name,str)
 {
+    var must_scroll = false;
+
+    // alert ($("txt").scrollTop + parseInt(getStyle($("txt"),"height", "height")) -  $("txt").scrollHeight);
+
+  if ($("txt").scrollTop + parseInt(getStyle($("txt"),"height", "height")) -  $("txt").scrollHeight >= 0)
+      must_scroll = true;
+
   // alert("ARRIVA NAME: "+ name + "  STR:"+str);
   if (chatt_lines_n == CHATT_MAXLINES) {
     $("txt").innerHTML = "";
@@ -811,8 +863,13 @@ function chatt_sub(name,str)
     $("txt").innerHTML += chatt_lines[chatt_lines_n];
     chatt_lines_n++;
   }
-  $("txt").innerHTML;
-  $("txt").scrollTop = 10000000;
+  // $("txt").innerHTML;
+
+
+  if (must_scroll) {
+      $("txt").scrollTop = 10000000;
+  }
+  // alert("scTOP "+$("txt").scrollTop+"  scHEIGHT: "+$("txt").scrollHeight+" HEIGHT: "+getStyle($("txt"),"height", "height") );
 }
 
 /*
@@ -899,14 +956,44 @@ function room_checkspace(emme,tables,inpe)
     $("esco").innerHTML = "<input class=\"button\" name=\"logout\" type=\"button\" value=\"Esco.\" onclick=\"window.onunload = null; act_logout();\" type=\"button\">";
 }
 
+function  unescapeHTML(cont) {
+    var div = document.createElement('div');
+    var memo = "";
+    var i;
+
+    div.innerHTML = cont;
+    if (div.childNodes[0]) {
+        if (div.childNodes.length > 1) {
+            if (div.childNodes.toArray)
+                alert("si puo");
+            else {
+                var length = div.childNodes.length, results = new Array(length);
+            while (length--)
+                results[length] = div.childNodes[length];
+                
+            for (i=0 ; i<results.length ; i++)
+               memo = memo + results[i].nodeValue;
+            }
+
+            return (memo);
+        }
+        else {
+            return (div.childNodes[0].nodeValue);
+        }
+    }
+    else {
+        return ('');
+    }
+}
+
 function playsound(tag, sound) {
    // g_withflash is a global var
    if (g_withflash) {
       $(tag).innerHTML = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '+
 'codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0" id="mysound" WIDTH=1 HEIGHT=1>' +
-'<PARAM NAME="movie" VALUE="playsound.swf"><PARAM NAME="PLAY" VALUE="true"><PARAM NAME="LOOP" VALUE="false">' +
+'<PARAM NAME="movie" VALUE="../playsound.swf"><PARAM NAME="PLAY" VALUE="true"><PARAM NAME="LOOP" VALUE="false">' +
 '<PARAM NAME=FlashVars VALUE="streamUrl='+sound+'">' +
-'<EMBED swliveconnect="true" name="mysound" src="playsound.swf" FlashVars="streamUrl='+sound+'" PLAY="true" LOOP="false" '+
+'<EMBED swliveconnect="true" name="mysound" src="../playsound.swf" FlashVars="streamUrl='+sound+'" PLAY="true" LOOP="false" '+
 ' WIDTH=1 HEIGHT=1 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></OBJECT>';
    }
 }