X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=inline;f=web%2Fcommons.js;h=4c0ea73cde5de5f76be16ac0606a2a07a7e744c6;hb=36d1e27085681388ea4989bdd62aad522ddf0dc6;hp=2495cb69f2af60cec515b49b796147efe3728478;hpb=fa82ba0deaaab26b5b9efe37c392a34cbec50a66;p=brisk.git
diff --git a/web/commons.js b/web/commons.js
index 2495cb6..4c0ea73 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
@@ -22,9 +22,14 @@
*/
var PLAYERS_N = 3;
-var EXIT_BAN_TIME = 900;
+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 dec2hex(d, padding)
+{
+ var hex = Number(d).toString(16);
+ padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
-function $(id) { return document.getElementById(id); }
+ 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;
@@ -249,12 +278,12 @@ function send_mesg(mesg)
// alert("xhr_wr: "+xhr_wr+" is_conn: "+is_conn);
xhr_wr.open('GET', 'index_wr.php?'+(is_conn ? 'sess='+sess+'&' : '')+'mesg='+mesg, (is_conn ? true : false));
+ xhr_wr.setRequestHeader("If-Modified-Since", new Date().toUTCString());
xhr_wr.onreadystatechange = function() { return; };
- if (typeof(console) == 'object') {
- if (typeof(console.log) == 'function') {
+ if (typeof(g_debug) == 'number' && g_debug > 0
+ && typeof(console) == 'object' && typeof(console.log) == 'function') {
var ldate = new Date();
console.log(ldate.getTime()+':MESG:'+mesg);
- }
}
xhr_wr.send(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);
@@ -330,6 +376,11 @@ function act_chatt(value)
}
/* Stat: ROOM */
+function act_ping()
+{
+ send_mesg("ping");
+}
+
function act_sitdown(table)
{
send_mesg("sitdown|"+table);
@@ -405,6 +456,178 @@ function act_logout(exitlock)
send_mesg("logout|"+exitlock);
}
+function ModerateItem(item_ar)
+{
+ var tr, td;
+ 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];
+
+ tr = document.createElement("tr");
+ 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,
+
+ tr_get: function () {
+ return this.tr;
+ }
+}
+
+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", "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() {
+ 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;
+
+ console.log(typeof(this.item));
+ mi = new ModerateItem(item);
+ this.item.push(mi);
+
+ this.table.appendChild(mi.tr_get());
+
+ }
+ // 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;
@@ -412,6 +635,7 @@ function act_reloadroom()
document.location.assign("index.php");
}
+
function act_shutdown()
{
var c = 0;
@@ -425,7 +649,7 @@ function postact_logout()
{
// alert("postact_logout");
try {
- xhr_rd.abort();
+ hstm.abort();
} catch (e) {}
// eraseCookie("sess");
@@ -687,11 +911,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;
@@ -700,7 +919,29 @@ function globst() {
this.comms = new Array;
}
+globst.prototype = {
+ st: -1,
+ st_loc: -1,
+ st_loc_new: -1,
+ comms: null,
+ sleep_hdl: null,
+ sleep: function(delay) {
+ st.st_loc_new++;
+
+ if (!this.the_end) {
+ this.sleep_hdl = setTimeout(function(obj){ if (obj.st_loc_new > obj.st_loc) { obj.st_loc++; obj.sleep_hdl = null; }},
+ delay, this);
+ }
+ },
+
+ abort: function() {
+ if (this.sleep_hdl != null) {
+ clearTimeout(this.sleep_hdl);
+ this.sleep_hdl = null;
+ }
+ }
+}
function remark_step()
{
@@ -765,6 +1006,32 @@ var chatt_lines_n = 0;
var CHATT_MAXLINES = 40;
+function user_decorator(user)
+{
+ var name;
+ var flags = user[BSK_USER_FLAGS];
+ var flags_vlt = user[BSK_USER_FLGVL];
+ if ((flags & 0x03) != 0)
+ name = ""+user[BSK_USER_NICK]+"";
+ else
+ name = user[BSK_USER_NICK];
+
+ return (name);
+}
+
+function user_dec_and_state(el)
+{
+ var content = "";
+ var val_el;
+
+ content = user_decorator(el);
+ content += state_add(el[BSK_USER_FLAGS], el[BSK_USER_FLGVL],
+ (typeof(el[BSK_USER_SCOL]) != 'undefined' ? el[BSK_USER_SCOL] : null));
+
+ return (content);
+}
+
+
/* PRO CHATT */
function chatt_sub(dt,data,str)
{
@@ -772,39 +1039,34 @@ function chatt_sub(dt,data,str)
var name;
var flags;
var isauth;
-
- flags = data[0];
- if (flags & 0x02)
- name = ""+data[1]+"";
- else
- name = data[1];
- // 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 = "";
- for (i = 0 ; i < (CHATT_MAXLINES - 1) ; i++) {
- chatt_lines[i] = chatt_lines[i+1];
- $("txt").innerHTML += chatt_lines[i];
+ 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)
+ must_scroll = true;
+
+ // alert("ARRIVA NAME: "+ name + " STR:"+str);
+ if (chatt_lines_n == CHATT_MAXLINES) {
+ $("txt").innerHTML = "";
+ for (i = 0 ; i < (CHATT_MAXLINES - 1) ; i++) {
+ chatt_lines[i] = chatt_lines[i+1];
+ $("txt").innerHTML += chatt_lines[i];
+ }
+ chatt_lines[i] = dt+name+": "+str+ "
";
+ $("txt").innerHTML += chatt_lines[i];
}
- chatt_lines[i] = dt+""+name+" "+str+ "
";
- $("txt").innerHTML += chatt_lines[i];
- }
- else {
- chatt_lines[chatt_lines_n] = dt+""+name+" "+str+ "
";
- $("txt").innerHTML += chatt_lines[chatt_lines_n];
- chatt_lines_n++;
- }
- // $("txt").innerHTML;
-
+ else {
+ chatt_lines[chatt_lines_n] = dt+name+": "+str+ "
";
+ $("txt").innerHTML += chatt_lines[chatt_lines_n];
+ chatt_lines_n++;
+ }
+ // $("txt").innerHTML;
- if (must_scroll) {
- $("txt").scrollTop = 10000000;
- }
- // alert("scTOP "+$("txt").scrollTop+" scHEIGHT: "+$("txt").scrollHeight+" HEIGHT: "+getStyle($("txt"),"height", "height") );
+
+ if (must_scroll) {
+ $("txt").scrollTop = 10000000;
+ }
+ // alert("scTOP "+$("txt").scrollTop+" scHEIGHT: "+$("txt").scrollHeight+" HEIGHT: "+getStyle($("txt"),"height", "height") );
}
/*
@@ -835,54 +1097,20 @@ function eraseCookie(name) {
createCookie(name,"",-1);
}
-var onunload_times = 0;
-
-
function onbeforeunload_cb () {
return("");
}
-function onunload_cb_old () {
- var u = 0;
-
- // if (nonunload == true)
- // return true;
-
- if (onunload_times == 0) {
- // MLANG " Vuoi veramente abbandonare la briscola ?\n(clicca annulla o cancel se vuoi ricaricare la briscola)"
- var res = window.confirm(mlang_commons['brileav'][g_lang]);
- if (res == true) {
- the_end = true;
- act_shutdown();
- // while (1)
- // u++;
- }
- else {
- try {
- document.location.href = self.location; // = self.location;
- // alert ("passiamo di qui"+self.location);
- return (false);
- } catch (e) {
- // MLANG "Ripristino della briscola fallito, per non perdere la sessione ricaricare la pagina manualmente."
- alert(mlang_commons['brireco'][g_lang]);
- }
- }
- onunload_times++;
- }
-
- return(false);
-}
-
function onunload_cb () {
- the_end = true;
+ if (typeof(hstm) != "undefined")
+ hstm.the_end = true;
act_shutdown();
return(false);
}
-
function room_checkspace(emme,tables,inpe)
{
nome = "";
@@ -1074,3 +1302,85 @@ function set_checked_value(radioObj, newValue) {
}
}
}
+
+function url_append_arg(url, name, value)
+{
+ var pos, sep, pref, rest;
+
+ if ((pos = url.indexOf('?'+name+'=')) == -1) {
+ pos = url.indexOf('&'+name+'=');
+ }
+ if (pos == -1) {
+ if ((pos = url.indexOf('?')) != -1)
+ sep = '&';
+ else
+ sep = '?';
+
+ return (url+sep+name+"="+encodeURIComponent(value));
+ }
+ else {
+ pref = url.substring(0, pos+1);
+ rest = url.substring(pos+1);
+ // alert("rest: "+rest+" pos: "+pos);
+ if ((pos = rest.indexOf('&')) != -1) {
+ rest = rest.substring(pos);
+ }
+ else {
+ rest = "";
+ }
+ return (pref+name+"="+encodeURIComponent(value)+rest);
+ }
+}
+
+function url_append_args(url)
+{
+ var i, ret;
+
+ ret = url;
+ for (i = 1 ; i < arguments.length-1 ; i+= 2) {
+ ret = url_append_arg(ret, arguments[i], arguments[i+1]);
+ }
+
+ return (ret);
+}
+
+function url_complete(parent, url)
+{
+ var p, p2, rest;
+ var host = "", path = "";
+
+ // host extraction
+ p = parent.indexOf("://");
+ if (p > -1) {
+ rest = parent.substring(p+3);
+ p2 = rest.indexOf("/");
+ if (p2 > -1) {
+ host = parent.substring(0, p+3+p2);
+ rest = parent.substring(p+3+p2);
+ }
+ else {
+ host = rest;
+ rest = "";
+ }
+ }
+ else {
+ rest = parent;
+ }
+
+ // path extraction
+ p = rest.lastIndexOf("/");
+ if (p > -1) {
+ path = rest.substring(0, p+1);
+ }
+
+ // alert("host: ["+host+"] path: ["+path+"]");
+ if (url.substring(0,6) == 'http:/' || url.substring(0,7) == 'https:/') {
+ return (url);
+ }
+ else if (url.substring(0,1) == '/') {
+ return (host+url);
+ }
+ else {
+ return (host+path+url);
+ }
+}