X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=793ff4eb6619d6e9b982e41e53e751aaef861524;hb=4f47e5eff24ed42d837878132b2bc15b240211eb;hp=99a2983fdc342941f9366287cffe998da4e40f1d;hpb=22d0d66d55607bc8941922fc1bf4d818664abbc2;p=brisk.git
diff --git a/web/commons.js b/web/commons.js
index 99a2983..793ff4e 100644
--- a/web/commons.js
+++ b/web/commons.js
@@ -1,7 +1,7 @@
/*
* brisk - commons.js
*
- * Copyright (C) 2006-2011 Matteo Nastasi
+ * Copyright (C) 2006-2012 Matteo Nastasi
* mailto: nastasi@alternativeoutput.it
* matteo.nastasi@milug.org
* web: http://www.alternativeoutput.it
@@ -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' : '%.',
@@ -38,11 +43,33 @@ var mlang_commons = { 'imgload_a' : { 'it' : 'Immagine caricate ',
'btn_sit' : { 'it' : 'Mi siedo.',
'en' : 'Sit down.' },
'btn_exit' : { 'it' : 'Esco.',
- 'en' : 'Exit.' }
-
- };
+ 'en' : 'Exit.' },
+ 'tit_list' : { '0' : { 'it' : '',
+ 'en' : '' },
+ '1' : { 'it' : '(solo aut.)',
+ 'en' : '(only aut.)' },
+ '2' : { 'it' : '(isolam.to)',
+ 'en' : '(isolation)' } }
+ };
+
+function $() {
+ if (arguments.length == 1)
+ return document.getElementById(arguments[0]);
+ else
+ return (arguments[0]).document.getElementById((arguments[1]));
+}
-function $(id) { return document.getElementById(id); }
+function dec2hex(d, padding)
+{
+ var hex = Number(d).toString(16);
+ padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
+
+ while (hex.length < padding) {
+ hex = "0" + hex;
+ }
+
+ return hex;
+}
function getStyle(x,IEstyleProp, MozStyleProp)
{
@@ -235,8 +262,10 @@ function safestatus(a)
}
function createXMLHttpRequest() {
- try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
- try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
+ if (typeof(ActiveXObject) != 'undefined') { // Konqueror complain as unknown object
+ try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
+ try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
+ }
try { return new XMLHttpRequest(); } catch(e) {}
alert("XMLHttpRequest not supported");
return null;
@@ -266,17 +295,28 @@ function send_mesg(mesg)
}
/*
- request to server
+ sync request to server
server_request([arg0=arg1[, arg2=arg3[, ...]]])
+ if var name == '__POST__' than all other vars will be managed as POST content
+ and the call will be a POST
*/
function server_request()
{
var xhr_wr = createXMLHttpRequest();
- var i, collect = "";
+ var i, collect = "", post_collect = null, is_post = false;
if (arguments.length > 0) {
for (i = 0 ; i < arguments.length ; i+= 2) {
- collect += (i == 0 ? "" : "&") + arguments[i] + "=" + encodeURIComponent(arguments[i+1]);
+ if (arguments[i] == "__POST__") {
+ is_post = true;
+ post_collect = "";
+ i -= 1;
+ continue;
+ }
+ if (is_post)
+ post_collect += (post_collect == "" ? "" : "&") + arguments[i] + "=" + encodeURIComponent(arguments[i+1]);
+ else
+ collect += (i == 0 ? "" : "&") + arguments[i] + "=" + encodeURIComponent(arguments[i+1]);
}
}
// alert("Args: "+arguments.length);
@@ -285,9 +325,15 @@ function server_request()
// console.log("server_request:preresp: "+xhr_wr.responseText);
- xhr_wr.open('GET', 'index_wr.php?'+(is_conn ? 'sess='+sess+'&' : '')+collect, false);
+ if (is_post) {
+ xhr_wr.open('POST', 'index_wr.php?'+(is_conn ? 'sess='+sess+'&' : '')+collect, false);
+ xhr_wr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
+ }
+ else {
+ xhr_wr.open('GET', 'index_wr.php?'+(is_conn ? 'sess='+sess+'&' : '')+collect, false);
+ }
xhr_wr.onreadystatechange = function() { return; };
- xhr_wr.send(null);
+ xhr_wr.send(post_collect);
if (xhr_wr.responseText != null) {
// console.log("server_request:resp: "+xhr_wr.responseText);
@@ -410,13 +456,232 @@ function act_logout(exitlock)
send_mesg("logout|"+exitlock);
}
+function ModerateItem(item_ar)
+{
+ var tr, td, date;
+
+ 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];
+
+ date = new Date();
+ date.setTime(this.time * 1000);
+
+ tr = document.createElement("tr");
+ td = document.createElement("td");
+ // FIXME a more readable date here
+ // td.innerHTML = date.xxxx;
+ td.innerHTML = this.time % 100000;
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.innerHTML = this.where;
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.innerHTML = this.usrid;
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.innerHTML = this.name;
+ tr.appendChild(td);
+
+ td = document.createElement("td");
+ td.innerHTML = this.cont;
+ tr.appendChild(td);
+
+ this.tr = tr;
+}
+
+ModerateItem.prototype = {
+ time: 0,
+ usrid: 0,
+ where: -1,
+ name: "",
+ cont: "",
+
+ tr: null,
+ sel: false,
+
+ tr_get: function () {
+ return this.tr;
+ },
+
+ sel_get: function () {
+ return this.sel;
+ },
+
+ sel_set: function (v) {
+ if (this.sel != v) {
+ this.sel = v;
+ this.tr.className = (v ? 'selected' : 'normal');
+ }
+ }
+}
+
+function Moderate()
+{
+ this.item = new Array();
+}
+
+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", "_blank", "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) {
+ this.tout = setTimeout(function (obj) { obj.win_waitonload(); }, 250, this);
+ }
+ else {
+ this.post_onload();
+ }
+ },
+
+ post_onload: function() {
+ var tr, td, remtr;
+
+ this.win.anc = this;
+ this.table = $(this.win, 'moder_tab');
+
+ // for (i = 0 ; i < 3 ; i++) {
+ // tr = document.createElement("tr");
+ // for (e = 0 ; e < 2 ; e++) {
+ // td = document.createElement("td");
+ // td.innerHTML = "Content "+((i * 2)+e);
+ // tr.appendChild(td);
+ // }
+ // this.table.appendChild(tr);
+ // if (i == 0)
+ // remtr = tr;
+ // }
+ // this.table.removeChild(remtr);
+
+ this.enabled = true;
+ },
+
+ onunload: function() {
+ act_moderate();
+ },
+
+ is_enabled: function() {
+ return (this.enabled);
+ },
+
+ add: function(item) {
+ var mi;
+
+ mi = new ModerateItem(item);
+ mi.tr.className = 'normal';
+
+ var self;
+ self = this;
+ mi.tr.onclick = function () { self.row_select(mi); };
+
+ this.item.push(mi);
+ this.table.appendChild(mi.tr_get());
+ },
+
+ row_select: function(mi) {
+ for (idx in this.item) {
+ if (this.item[idx] == mi) {
+ this.item[idx].sel_set(!this.item[idx].sel_get());
+ }
+ else {
+ this.item[idx].sel_set(false);
+ }
+ }
+ // mi.tr.className = "selected";
+ }
+}
+
+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()
{
+ if (g_moder.is_enabled()) {
+ g_moder.disable();
+ }
window.onunload = null;
window.onbeforeunload = null;
document.location.assign("index.php");
}
+
function act_shutdown()
{
var c = 0;
@@ -429,6 +694,11 @@ function act_shutdown()
function postact_logout()
{
// alert("postact_logout");
+
+ if (g_moder.is_enabled()) {
+ g_moder.disable();
+ }
+
try {
hstm.abort();
} catch (e) {}
@@ -692,12 +962,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;
@@ -796,11 +1060,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 = ""+user[1]+"";
+ name = ""+user[BSK_USER_NICK]+"";
else
- name = user[1];
+ name = user[BSK_USER_NICK];
return (name);
}
@@ -811,7 +1076,8 @@ function user_dec_and_state(el)
var val_el;
content = user_decorator(el);
- content += state_add(el[0]);
+ content += state_add(el[BSK_USER_FLAGS], el[BSK_USER_FLGVL],
+ (typeof(el[BSK_USER_SCOL]) != 'undefined' ? el[BSK_USER_SCOL] : null));
return (content);
}
@@ -824,7 +1090,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)