new listen preferences reload and init managed
[brisk.git] / web / room.js
index e8b19ea..476429a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  brisk - room.js
  *
- *  Copyright (C) 2006-2009 Matteo Nastasi
+ *  Copyright (C) 2006-2012 Matteo Nastasi
  *                          mailto: nastasi@alternativeoutput.it 
  *                                  matteo.nastasi@milug.org
  *                          web: http://www.alternativeoutput.it
 
 
 /* 
+
    data = [ [ flags, name ],  ... ]
    
 */
 
+
+var l_list_all = 0x00;
+var l_list_auth = 0x01;
+var l_list_isol = 0x02;
+
+function client_prefs()
+{
+}
+
+client_prefs.prototype = {
+    listen: -1
+}
+
 function state_add(flags)
 {
-    var content = "";
-    var st, name = "";
-    var tit = "";
+    var content = "", supercont = "";
+    var st, superst, name = "", supername = "", supersfx = "";
+    var tit = "", supertit = "";
+
 
     if ((flags & 0xf00) != 0) {
         st = flags & 0xf00;
@@ -65,12 +80,63 @@ function state_add(flags)
             name = "st_eye.png";
             tit = (g_lang == 'en' ? "I'm here!" : "sono presente!");
             break;
+        case 0x800:
+            name = "st_rabbit.png";
+            tit = (g_lang == 'en' ? "Rabbit time" : "sono a spasso col coniglio");
+            break;
+        case 0x900:
+            name = "st_soccer.png";
+            tit = (g_lang == 'en' ? "Soccer time" : "c'è la partita!!");
+            break;
+        case 0xa00:
+            name = "st_baby.png";
+            tit = (g_lang == 'en' ? "Children time" : "ho il pupo da accudire");
+            break;
+        case 0xb00:
+            name = "st_mop.png";
+            tit = (g_lang == 'en' ? "Mop time" : "sto rassettando");
+            break;
+        case 0xc00:
+            name = "st_babbo.png";
+            tit = (g_lang == 'en' ? "Sto dando i regali" : "sto dando i regali");
+            break;
+        case 0xd00:
+            name = "st_renna.png";
+            tit = (g_lang == 'en' ? "in giro per regali" : "in giro per regali");
+            break;
+        case 0xe00:
+            name = "st_pupaz.png";
+            tit = (g_lang == 'en' ? "Neve a gogò" : "neve a gogò");
+            break;
+        case 0xf00:
+            name = "st_visch.png";
+            tit = (g_lang == 'en' ? "aspettando sotto al vischio" : "aspettando sotto al vischio");
+            break;
         default:
             break;
         }
+    }
+
+    if ((flags & 0xf0000) != 0) {
+        superst = flags & 0xf0000;
         if (name != "") {
-            content += '&nbsp;<img title="'+tit+'" class="unbo" src="img/'+name+'">';
+            supersfx = "_side";                
         }
+
+        switch (superst) {
+        case 0x20000:
+            supername = "superuser"+supersfx+".png";
+            supertit = (g_lang == 'en' ? "Brisk Supporter" : "Brisk Supporter");
+            break;
+        }
+    }
+
+    if (supername != "") {
+        content += '&nbsp;<img title="'+supertit+'" class="inline" src="img/'+supername+'">';
+    }
+    
+    if (name != "") {
+        content += '&nbsp;<img title="'+tit+'" class="inline" src="img/'+name+'">';
     }
 
     return content;
@@ -83,7 +149,7 @@ var standup_data_old = null;
 
 function table_add(curtag, td)
 {
-    var tbody  = null, tr;
+    var tbody  = null, tr, ct;
 
     do {
         // console.log("wt: "+curtag.tagName);
@@ -201,34 +267,31 @@ function table_walk(curtag)
 
 function j_stand_tdcont(el)
 {
-    var content = "";
-
-    if (el[0] & 0x01)
-        content += '<b>';
-    
-    if (el[0] & 0x02)
-        content += '<i>';
-    
-    content += el[1];
-    
-    if (el[0] & 0x02)
-        content += '</i>';
-    
-    if (el[0] & 0x01)
-        content += '</b>';
-            
-    content += state_add(el[0]);
-    
-    return (content);
+    return (user_dec_and_state(el));
 }
 
-function j_stand_cont(data)
+function j_stand_cont(ddata)
 {
-    var i;
+    var i, ii;
     var content;
     var st = 0, name = "";
     var curtag, nextag;
 
+    var data;
+
+    if (g_listen & l_list_isol) {
+        data = new Array();
+
+        for (i = 0, ii = 0 ; ii < ddata.length ; ii++) {
+            if ((ddata[ii][0] & 0x02) == 0) {
+                continue;
+            }
+            data[i++] = ddata[ii];
+        }
+    }
+    else
+        data = ddata;
+
     if (standup_data_old == null || data.length < 4) {
     // if (standup_data_old == null) {
         
@@ -243,6 +306,8 @@ function j_stand_cont(data)
             if ((i % 4) == 3)
                 content += '</tr>';
         }
+        if ((i % 4) < 3)
+            content += '</tr>';
         content += '</table>';
         
         $("standup").innerHTML = content;
@@ -380,7 +445,7 @@ function esco_cb() {
     window.onbeforeunload = null; 
     window.onunload = null; 
     // nonunload = true; 
-    act_logout();
+    act_logout(0);
  };
 
 
@@ -391,20 +456,9 @@ function j_tab_cont(table_idx, data)
     var content = '';
 
     for (i = 0 ; i < data.length ; i++) {
-        if (data[i][0] & 0x01)
-            content += '<b>';
-
-        if (data[i][0] & 0x02)
-            content += '<i>';
-
-        content += data[i][1];
-        
-        if (data[i][0] & 0x02)
-            content += '</i>';
-
-        if (data[i][0] & 0x01)
-            content += '</b>';
-        content += state_add(data[i][0]);
+        // content += user_decorator(data[i]);
+        // content += state_add(data[i][0]);
+        content += j_stand_tdcont(data[i]);
 
         content += '<br>';
     }
@@ -650,23 +704,119 @@ function j_pollbox(form)
     return (false);
 }
 
+function prefs_assign(content)
+{
+    var prefs_new;
+    var s;
+
+    s = "prefs_new = " + content;
+    eval(s);
+
+    return (prefs_new);
+}
+
+var prefs_list_idx  = new Array( 0x00, 0x01, 0x02 );
+var prefs_list_id   = new Array( "all", "auth", "isol" );
+
+function prefs_apply(prefs_new)
+{
+    if (typeof(g_prefs) == 'undefined')
+        return false;
+
+    /* listen management */
+    if (g_prefs.listen != prefs_new.listen) {
+        for (i = 0 ; i < prefs_list_idx.length ; i++) {
+            set_checked_value($('ra_listen_'+prefs_list_id[i]), prefs_new.listen);
+            if (prefs_new.listen == prefs_list_idx[i]) {
+                $('list_'+prefs_list_id[i]).style.color = 'red';
+                $('list_info').innerHTML = mlang_commons['tit_list'][i][g_lang];
+            }
+            else {
+                $('list_'+prefs_list_id[i]).style.color = 'black';
+            }
+        }
+
+        g_prefs.listen = prefs_new.listen;
+        relo = true;
+    }
+}
+
+function prefs_load(content)
+{
+    var prefs_new;
 
+    if ((prefs_new = prefs_assign(content)) == null)
+        return false;
 
+    return prefs_apply(prefs_new);
+}
 
-function list_set(what, setco, info)
+function list_set(what, is_update, info)
 {
+    var i;
+    var relo = false;
+    var old_st = readCookie("CO_list");
+    
     if (what == 'auth') {
         $('list_auth').style.color = 'red';
+        $('list_isol').style.color = 'black';
+        $('list_all').style.color = 'black';
+        if (old_st == 'isolation')
+            relo = true;
+        g_listen = l_list_auth;
+    }
+    else if (what == 'isolation') {
+        $('list_auth').style.color = 'black';
+        $('list_isol').style.color = 'red';
         $('list_all').style.color = 'black';
+        if (old_st != 'isolation')
+            relo = true;
+        g_listen = l_list_isol;
     }
     else {
         $('list_auth').style.color = 'black';
+        $('list_isol').style.color = 'black';
         $('list_all').style.color = 'red';
+        if (old_st == 'isolation')
+            relo = true;
+        g_listen = l_list_all;
     }
+
+    set_checked_value($('ra_listen_auth'), what);
+    set_checked_value($('ra_listen_isol'), what);
+    set_checked_value($('ra_listen_all'),  what);
+
     $('list_info').innerHTML = info;
-    if (setco) {
+    if (is_update) {
         createCookie("CO_list", what, 24*365, cookiepath);
     }
+
+
+    if (relo || !is_update) {
+        for (i = g_tables_auth_n ; i < g_tables_n ; i++) {
+            
+            if (i % 4 == 0) {
+                $('tr_noauth'+i).style.display = (what == 'isolation' ? 'none' : '');
+            }
+            
+            $('td_noauth'+i).style.display = (what == 'isolation' ? 'none' : '');
+        }
+        if (what == 'isolation') {
+            tra.hide_noauth();
+        }
+        else {
+            tra.show_noauth();
+        }
+            
+        if (false) {
+            // ricalculation of standup area
+            if (standup_data_old != null) {
+                standup_data = standup_data_old;
+                standup_data_old = null;
+                j_stand_cont(standup_data);
+            }
+        }
+    }
 }
 
 function sideslide(domobj, height, step)