X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=1dcb26613c1f16c2f62fb87f8c5e38293486d126;hb=46b0825543d5a3ed5088ef7d9213f639a9dd8a63;hp=704c481b06a6b6bfff0604999631bb06611d68c0;hpb=9c50675b7a9e8cea4eb7ff31f00e82ee4500a366;p=brisk.git diff --git a/web/commons.js b/web/commons.js index 704c481..1dcb266 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) { @@ -262,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); @@ -281,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); @@ -326,6 +376,11 @@ function act_chatt(value) } /* Stat: ROOM */ +function act_ping() +{ + send_mesg("ping"); +} + function act_sitdown(table) { send_mesg("sitdown|"+table); @@ -401,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; @@ -408,6 +595,7 @@ function act_reloadroom() document.location.assign("index.php"); } + function act_shutdown() { var c = 0; @@ -421,7 +609,7 @@ function postact_logout() { // alert("postact_logout"); try { - xhr_rd.abort(); + hstm.abort(); } catch (e) {} // eraseCookie("sess"); @@ -683,11 +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; @@ -696,7 +879,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() { @@ -761,6 +966,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) { @@ -768,39 +999,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") ); } /* @@ -831,54 +1057,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 = ""; @@ -1070,3 +1262,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); + } +}