managed close moderate window event and the moderate message argument
[brisk.git] / web / commons.js
index 4cf95dc..1dcb266 100644 (file)
@@ -25,6 +25,11 @@ var PLAYERS_N = 3;
 var EXIT_BAN_TIME = 3600;
 var cookiepath = "/brisk/";
 
+var BSK_USER_FLAGS = 0;
+var BSK_USER_FLGVL = 1;
+var BSK_USER_NICK  = 2;
+var BSK_USER_SCOL  = 3;
+
 var mlang_commons = { 'imgload_a' : { 'it' : 'Immagine caricate ', 
                                       'en' : 'Loaded images ' },
                       'imgload_b' : { 'it' : '%.', 
@@ -47,7 +52,12 @@ var mlang_commons = { 'imgload_a' : { 'it' : 'Immagine caricate ',
                                                'en' : '(isolation)' } }
                     };
 
-function $(id) { return document.getElementById(id); }
+function $() {
+    if (arguments.length == 1)
+        return document.getElementById(arguments[0]);
+    else
+        return (arguments[0]).document.getElementById((arguments[1]));
+}
 
 function dec2hex(d, padding)
 {
@@ -446,6 +456,138 @@ function act_logout(exitlock)
     send_mesg("logout|"+exitlock);
 }
 
+function ModerateItem(item_ar)
+{
+    this.time  = item_ar[0];
+    this.usrid = item_ar[1];
+    this.where = item_ar[2];
+    this.name  = item_ar[3];
+    this.cont  = item_ar[4];
+}
+
+ModerateItem.prototype = {
+    time: 0,
+    usrid: 0,
+    where: -1,
+    name: "",
+    cont: ""
+}
+
+function Moderate()
+{
+}
+
+Moderate.prototype = {
+    win:  null,
+    table: null,
+    enabled: false,
+    item: null,
+
+    cur: -1,
+
+    disable: function () {
+        if (this.tout) {
+            clearTimeout(this.tout);
+            this.tout = 0;
+        }
+        if (this.win) {
+            this.win.onbeforeunload = null;
+            this.win.close();
+            this.win = null;
+        }
+    },
+
+    activate: function (enable) {
+        if (this.enabled == enable) {
+            return true;
+        }
+        if (enable) {
+            this.disable();
+
+            this.win = window.open("moderation.php", "Moderazione", "width=800,height=600,toolbar=no,location=no,menubar=no,status=no");
+            if (this.win == null) {
+                this.disable();
+                return false;
+            }
+            // to finish initialization we wait for popup page onload event ...
+            this.win_waitonload();
+        }
+        else {
+            this.disable();
+            this.enabled = false;
+        }
+
+    },
+
+    win_waitonload: function () {
+        if (typeof(this.win.is_loaded)  == 'undefined' || this.win.is_loaded != true) {
+            console.log("not ready");
+            this.tout = setTimeout(function (obj) { obj.win_waitonload(); }, 250, this);
+        }
+        else {
+            console.log("ready now!");
+            this.post_onload();
+        }
+    },
+
+    post_onload: function() {
+        $(this.win, 'mainbody').innerHTML = "GHE SEMU";
+        this.win.anc = this;
+        this.enabled = true;
+    },
+
+    onunload: function() {
+        act_moderate();
+    },
+
+    is_enabled: function() {
+        return (this.enabled);
+    }// ,
+
+    //add: function(item) {
+    //    this.item.append(new ModerateItem(item));
+    //}
+    // send_mesg("moderate|"+(enable ? "false" | "true"));
+
+}
+
+function moderate(enable)
+{
+    return (g_moder.activate(enable));
+}
+
+var g_moder = new Moderate();
+
+function act_moderate()
+{
+    send_mesg("moderate|"+(g_moder.is_enabled() ? "false" : "true"));
+}
+
+
+
+//         // build table with js
+        
+//         g_moder.item = new Array;
+//         g_moder.table = xxx;
+//     }
+//     else {
+//         if (g_moder == null)
+//             return true;
+
+//         if (g_moder.win != null) {
+//             g_moder.win.close();
+//             g_moder.win = null;
+//         }
+
+//         if (g_moder.item != null) {
+//             // TODO CLEANUP
+//             ;
+//         }
+//         g_moder.cur = -1;
+//     }
+// }
+
+
 function act_reloadroom()
 {
     window.onunload = null;
@@ -453,6 +595,7 @@ function act_reloadroom()
     document.location.assign("index.php");
 }
 
+
 function act_shutdown()
 {
     var c = 0;
@@ -728,12 +871,6 @@ function notify(st, text, tout, butt, w, h)
 {
     notify_ex.call(this, st, text, tout, butt, w, h, false, 0);
 }
-       
-
-function $(id) { 
-    return document.getElementById(id); 
-}
-
 
 function globst() {
     this.st = -1;
@@ -832,11 +969,12 @@ var CHATT_MAXLINES = 40;
 function user_decorator(user)
 {
     var name;
-    var flags = user[0];
+    var flags = user[BSK_USER_FLAGS];
+    var flags_vlt = user[BSK_USER_FLGVL];
     if ((flags & 0x03) != 0)
-        name = "<span class='au" + (flags & 0x03) + "'>"+user[1]+"</span>";
+        name = "<span class='au" + (flags & 0x03) + "'>"+user[BSK_USER_NICK]+"</span>";
     else
-        name = user[1];
+        name = user[BSK_USER_NICK];
 
     return (name);
 }
@@ -847,7 +985,8 @@ function user_dec_and_state(el)
     var val_el;
 
     content = user_decorator(el);
-    content += state_add(el[0],(typeof(el[2]) != 'undefined' ? el[2] : null));
+    content += state_add(el[BSK_USER_FLAGS], el[BSK_USER_FLGVL],
+                         (typeof(el[BSK_USER_SCOL]) != 'undefined' ? el[BSK_USER_SCOL] : null));
     
     return (content);
 }
@@ -860,7 +999,7 @@ function chatt_sub(dt,data,str)
     var name;
     var flags;
     var isauth;
-    var bolder = [ (data[0] | 1), data[1] ];
+    var bolder = [ (data[BSK_USER_FLAGS] | 1), data[BSK_USER_FLGVL], data[BSK_USER_NICK] ];
     name = user_decorator(bolder);
 
     if ($("txt").scrollTop + parseInt(getStyle($("txt"),"height", "height")) -  $("txt").scrollHeight >= 0)