X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=793ff4eb6619d6e9b982e41e53e751aaef861524;hb=4f47e5eff24ed42d837878132b2bc15b240211eb;hp=e3e904c884096900aafef8d2afd570e627ca050b;hpb=a3283507f41a75746f3aa99d948b125b711717b0;p=brisk.git
diff --git a/web/commons.js b/web/commons.js
index e3e904c..793ff4e 100644
--- a/web/commons.js
+++ b/web/commons.js
@@ -1,7 +1,7 @@
/*
* brisk - commons.js
*
- * Copyright (C) 2006-2008 Matteo Nastasi
+ * Copyright (C) 2006-2012 Matteo Nastasi
* mailto: nastasi@alternativeoutput.it
* matteo.nastasi@milug.org
* web: http://www.alternativeoutput.it
@@ -19,14 +19,17 @@
* not, write to the Free Software Foundation, Inc, 59 Temple Place -
* Suite 330, Boston, MA 02111-1307, USA.
*
- * $Id$
- *
*/
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' : '%.',
@@ -40,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)
{
@@ -237,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;
@@ -251,7 +278,13 @@ 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(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);
if (!is_conn) {
@@ -261,14 +294,29 @@ function send_mesg(mesg)
}
}
+/*
+ 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);
@@ -277,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);
@@ -322,6 +376,11 @@ function act_chatt(value)
}
/* Stat: ROOM */
+function act_ping()
+{
+ send_mesg("ping");
+}
+
function act_sitdown(table)
{
send_mesg("sitdown|"+table);
@@ -397,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;
@@ -416,8 +694,13 @@ function act_shutdown()
function postact_logout()
{
// alert("postact_logout");
+
+ if (g_moder.is_enabled()) {
+ g_moder.disable();
+ }
+
try {
- xhr_rd.abort();
+ hstm.abort();
} catch (e) {}
// eraseCookie("sess");
@@ -558,6 +841,11 @@ slowimg.prototype = {
}
}
+function div_show(div)
+{
+ div.style.top = parseInt((document.body.clientHeight - parseInt(getStyle(div,"height", "height"))) / 2) + document.body.scrollTop;
+ div.style.visibility = "visible";
+}
function notify_ex(st, text, tout, butt, w, h, is_opa, block_time)
{
@@ -640,7 +928,7 @@ notify_ex.prototype = {
clo: null,
clodiv: null,
butt: null,
- tblkid: null,
+ tblkid: null,
unblock: function()
{
@@ -674,11 +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;
@@ -687,7 +970,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()
{
@@ -752,6 +1057,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)
{
@@ -759,39 +1090,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") );
}
/*
@@ -822,54 +1148,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 = "";
@@ -1022,3 +1314,124 @@ function formsub_hilite(obj)
addEvent(obj, "blur", function () { this.className = 'input_sub'; });
}
+// return the value of the radio button that is checked
+// return an empty string if none are checked, or
+// there are no radio buttons
+function get_checked_value(radioObj) {
+ if(!radioObj)
+ return "";
+ var radioLength = radioObj.length;
+ if(radioLength == undefined)
+ if(radioObj.checked)
+ return radioObj.value;
+ else
+ return "";
+ for(var i = 0; i < radioLength; i++) {
+ if(radioObj[i].checked) {
+ return radioObj[i].value;
+ }
+ }
+ return "";
+}
+
+// set the radio button with the given value as being checked
+// do nothing if there are no radio buttons
+// if the given value does not exist, all the radio buttons
+// are reset to unchecked
+function set_checked_value(radioObj, newValue) {
+ if(!radioObj)
+ return;
+ var radioLength = radioObj.length;
+ if(radioLength == undefined) {
+ radioObj.checked = (radioObj.value == newValue.toString());
+ return;
+ }
+ for(var i = 0; i < radioLength; i++) {
+ radioObj[i].checked = false;
+ if(radioObj[i].value == newValue.toString()) {
+ radioObj[i].checked = true;
+ }
+ }
+}
+
+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);
+ }
+}