X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=462ce2e80971d44533e54e487729371117e58bad;hb=refs%2Fheads%2Fmeet-appr;hp=454152a3431fc93207c56812b617bbcd7c9c231b;hpb=e3dee295c72fc8cd5f7f607f94e713b1208a610b;p=brisk.git diff --git a/web/commons.js b/web/commons.js index 454152a..462ce2e 100644 --- a/web/commons.js +++ b/web/commons.js @@ -1,8 +1,8 @@ /* - * brisk - commons.js + * brisk / fieldify - commons.js * - * Copyright (C) 2006-2008 Matteo Nastasi - * mailto: nastasi@alternativeoutput.it + * Copyright (C) 2006-2016 Matteo Nastasi + * mailto: nastasi@alternativeoutput.it * matteo.nastasi@milug.org * web: http://www.alternativeoutput.it * @@ -19,17 +19,64 @@ * not, write to the Free Software Foundation, Inc, 59 Temple Place - * Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ - * */ +var __mop_commons_vers="0.1.0" + var PLAYERS_N = 3; -var EXIT_BAN_TIME = 900; +var EXIT_BAN_TIME = 3600; var cookiepath = "/brisk/"; +var mlang_commons = { 'imgload_a' : { 'it' : 'Immagini caricate ', + 'en' : 'Loaded images ' }, + 'imgload_b' : { 'it' : '%.', + 'en' : '%.' }, + 'gamleav' : { 'it' : 'Sei sicuro di volere lasciare questa mano?' , + 'en' : 'Are you sure to leave this game?' }, + 'brileav' : { 'it' : ' Vuoi veramente abbandonare la briscola ?\n(clicca annulla o cancel se vuoi ricaricare la briscola)', + 'en' : ' Are you really sure to leave briscola ?\n(click cancel yo reload it)' }, + 'brireco' : { 'it' : 'Ripristino della briscola fallito, per non perdere la sessione ricaricare la pagina manualmente.', + 'en' : 'Recovery of briscola failed, to keep the current session reload the page manually.' }, + 'btn_sit' : { 'it' : 'Mi siedo.', + 'en' : 'Sit down.' }, + 'btn_exit' : { 'it' : 'Esco.', + 'en' : 'Exit.' }, + 'tit_list' : { '0' : { 'it' : '', + 'en' : '' }, + '1' : { 'it' : '(solo aut.)', + 'en' : '(only aut.)' }, + '2' : { 'it' : '(isolam.to)', + 'en' : '(isolation)' } }, + 'tos_refu' : { 'it' : 'Rifiutando di sottoscrivere i nuovi termini del servizio non ti sarà più possibile accedere come utente registrato al sito, sei proprio sicuro di voler rifiutare le nuove condizioni d\'uso ?', + 'en' : 'EN Rifiutando di sottoscrivere i nuovi termini del servizio non ti sarà più possibile accedere come utente registrato al sito, sei proprio sicuro di voler rifiutare le nuove condizioni d\'uso ?' + } + }; + function $(id) { return document.getElementById(id); } -function getStyle(x,IEstyleProp, MozStyleProp) +function $C(cls) { return document.getElementsByClassName(cls); } + +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 ends_with(s, suffix) +{ + if (s.indexOf(suffix, s.length - suffix.length) !== -1) { + return true; + } + return false; +} + +function getStyle(x,IEstyleProp, MozStyleProp) { if (x.currentStyle) { var y = x.currentStyle[IEstyleProp]; @@ -46,7 +93,7 @@ function getStyle(x,IEstyleProp, MozStyleProp) /*Copy the default setInterval behavior*/ var nativeSetInterval = window.setInterval; - window.setInterval = function(fn,ms) { + window.setInterval = function(fn,ms) { var param = []; if(arguments.length <= 2) { return nativeSetInterval(fn,ms); @@ -54,16 +101,16 @@ function getStyle(x,IEstyleProp, MozStyleProp) else { for(var i=2;i"; im.onload = update_images; im.onerror = error_images; @@ -220,8 +267,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; @@ -231,10 +280,16 @@ function send_mesg(mesg) { var xhr_wr = createXMLHttpRequest(); var is_conn = (sess == "not_connected" ? false : true); - + // 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.open('GET', 'index_wr.php?&'+(is_conn ? 'sess='+sess : '')+'&stp='+gst.st+'&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) { @@ -244,34 +299,101 @@ function send_mesg(mesg) } } -function server_request() +/* + 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(page, sess) { var xhr_wr = createXMLHttpRequest(); - var i, collect = ""; + var tout = -1; + 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]); + for (i = 2 ; i < arguments.length ; i+= 2) { + 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); + var uri = page + '?' + (sess != null ? 'sess=' + sess + '&' : '') + collect; + if (is_post) { + xhr_wr.open('POST', uri, false); + xhr_wr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); + } + else { + xhr_wr.open('GET', uri, false); + } + if (tout > 0) { + xhr_wr.timeout = tout; + } - var is_conn = (sess == "not_connected" ? false : true); - - // console.log("server_request:preresp: "+xhr_wr.responseText); + xhr_wr.onreadystatechange = function() { + console.log('we are here'); + return; }; + xhr_wr.send(post_collect); - xhr_wr.open('GET', 'index_wr.php?'+(is_conn ? 'sess='+sess+'&' : '')+collect, false); - xhr_wr.onreadystatechange = function() { return; }; - xhr_wr.send(null); - if (xhr_wr.responseText != null) { // console.log("server_request:resp: "+xhr_wr.responseText); return (xhr_wr.responseText); - } + } else return (null); } + +function server_asyncreq(async_req, page, sess) +{ + var xhr_wr = createXMLHttpRequest(); + var tout = -1; + var i, collect = "", post_collect = null, is_post = false; + + if (arguments.length > 0) { + for (i = 3 ; i < arguments.length ; i+= 2) { + if (arguments[i] == "__POST__") { + is_post = true; + post_collect = ""; + i -= 1; + continue; + } + else if (arguments[i] == "__TOUT__") { + tout = arguments[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]); + } + } + var already_quest = (page.indexOf('?') != -1); + var uri = page + (already_quest ? '&' : '?') + (sess != null ? 'sess=' + sess + '&' : '') + collect; + if (is_post) { + xhr_wr.open('POST', uri, true); + xhr_wr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); + } + else { + xhr_wr.open('GET', uri, true); + } + if (tout > 0) { + xhr_wr.timeout = tout; + } + + xhr_wr.onreadystatechange = async_req; + xhr_wr.send(post_collect); + + return; +} + /* Stat: CHAT and TABLE */ function chatt_checksend(obj,e) @@ -294,7 +416,12 @@ function chatt_checksend(obj,e) } function act_chatt(value) { - send_mesg("chatt|"+encodeURIComponent(value)); + if (value.substring(0, 6) == "/info ") { + info_show(value.substring(6)); + } + else { + send_mesg("chatt|"+encodeURIComponent(value)); + } /* obj.disabled = true; obj.value = ""; @@ -305,6 +432,11 @@ function act_chatt(value) } /* Stat: ROOM */ +function act_ping() +{ + send_mesg("ping"); +} + function act_sitdown(table) { send_mesg("sitdown|"+table); @@ -315,7 +447,10 @@ function act_wakeup() send_mesg("wakeup"); } - +function act_splash() +{ + send_mesg("splash"); +} function act_help() { @@ -334,7 +469,7 @@ function act_mesgtoadm() function act_tav() { - act_chatt('/tav '+$('txt_in').value); + act_chatt('/tav '+$('txt_in').value); $('txt_in').value = ''; } @@ -343,14 +478,14 @@ function act_about() send_mesg("about"); } -function act_roadmap() +function act_placing() { - send_mesg("roadmap"); + send_mesg("placing"); } -function act_whysupport() +function act_roadmap() { - send_mesg("whysupport"); + send_mesg("roadmap"); } function act_lascio() @@ -361,8 +496,8 @@ function act_lascio() function safelascio() { var res; - - res = window.confirm("Sei sicuro di volere lasciare questa mano?"); + // MLANG "Sei sicuro di volere lasciare questa mano?" + res = window.confirm(mlang_commons['gamleav'][g_lang]); if (res) act_lascio(); } @@ -391,14 +526,56 @@ function act_shutdown() function postact_logout() { // alert("postact_logout"); - try { - xhr_rd.abort(); + try { + xstm.abort(); } catch (e) {} // eraseCookie("sess"); document.location.assign("index.php"); } +/* + type - 'hard' or 'soft' + code - if soft: accept (0), refuse (1), download (2), later (3) + if hard: accept (0), refuse (1), download (2) + */ +function act_tosmgr(type, code, tos_curr, tos_vers) +{ + if (type != "soft" && type != "hard") { + return false; + } + switch (code) { + case 0: + case 1: + send_mesg("tosmgr|"+type+"|"+code+"|"+tos_curr+"|"+tos_vers); + break; + case 2: + break; + default: + break; + } + + return true; +} + +function tos_confirm(val, url) +{ + var dlm; + + switch (val) { + case 1: + return (window.confirm(mlang_commons['tos_refu'][g_lang])); + break; + case 2: + dlm = new download_mgr(url); + return false; + break; + default: + return true; + break; + } +} + /* function slowimg(img,x1,y1,deltat,free,action,srcend) img - image to move @@ -436,7 +613,7 @@ function slowimg(img,x1,y1,deltat,free,action,srcend) { } slowimg.prototype = { - img: null, + img: null, st: null, x0: 0, y0: 0, @@ -453,20 +630,20 @@ slowimg.prototype = { tout: 0, action: null, srcend: null, - + setstart: function(x0,y0) { this.x0 = x0; this.y0 = y0; }, - + setaction: function(act) { this.action = act; }, - - settime: function(time) + + settime: function(time) { this.time = (time < this.deltat ? this.deltat : time); this.step_n = parseInt(this.time / this.deltat); @@ -479,17 +656,17 @@ slowimg.prototype = { this.step_free = parseInt(this.step_n * this.free); } }, - + start: function(st) { // $("logz").innerHTML += " xxxxxxxxxxxxxxxxxxxxxSTART
"; this.st = st; this.st.st_loc_new++; - + this.img.style.visibility = "visible"; setTimeout(function(obj){ obj.animate(); }, this.deltat, this); }, - + animate: function() { // $("log").innerHTML = "Val " + this.step_cur + " N: " + this.step_n + "
"; @@ -533,28 +710,205 @@ 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(st, text, tout, butt, w, h) +/* + st + text + tout: if < 0 => infinite + butt: [ strings ] + w: + h: + is_opa: + block_time: + */ + +function notify_document(st, text, tout, butt, confirm_func, confirm_func_args, w, h, is_opa, block_time) +{ + var i, clo, clodiv_ctx, clodiv_wai, box; + + this.st = st; + + this.ancestor = document.body; + this.confirm_func = confirm_func; + this.confirm_func_args = confirm_func_args; + this.st.st_loc_new++; + + clodiv_ctx = document.createElement("div"); + clodiv_ctx.className = "notify_clo"; + + for (i = 0 ; i < butt.length ; i++) { + this.input_add(butt[i], i, this.hide, clodiv_ctx); + } + + if (block_time > 0) { + clodiv_wai = document.createElement("div"); + clodiv_wai.className = "notify_clo"; + + this.input_add("leggere, prego.", 0, null, clodiv_wai); + this.clodiv = clodiv_wai; + this.clodiv_pkg = clodiv_ctx; + clodiv_ctx.style.display = 'none'; + } + else { + this.clodiv = clodiv_ctx; + } + + cont = document.createElement("div"); + + cont.style.borderBottomStyle = "solid"; + cont.style.borderBottomWidth = "1px"; + cont.style.borderBottomColor = "gray"; + cont.style.height = (h - 50)+"px"; + cont.style.overflow = "auto"; + cont.style.textAlign = "left"; + cont.style.padding = "8px"; + cont.style.fontFamily = "monospace"; + cont.innerHTML = text; + + box = document.createElement("div"); + if (is_opa) + box.className = "notify_opaque"; + else + box.className = "notify"; + + box.style.zIndex = 200; + box.style.width = w+"px"; + box.style.marginLeft = -parseInt(w/2)+"px"; + box.style.height = h+"px"; + box.style.top = parseInt((document.body.clientHeight - h) / 2) + document.body.scrollTop; + box.appendChild(cont); + box.appendChild(this.clodiv); + box.style.visibility = "visible"; + + this.notitag = box; + + this.ancestor.appendChild(box); + + if (tout > 0) { + this.toutid = setTimeout(function(obj){ obj.unblock(); }, tout, this); + } + + if (block_time != 0) { + this.tblkid = setTimeout(function(obj){ obj.notitag.removeChild(obj.clodiv); obj.clodiv = obj.clodiv_pkg; obj.clodiv.style.display = ''; obj.notitag.appendChild(obj.clodiv); }, block_time, this); + } +} + +notify_document.prototype = { + ancestor: null, + st: null, + notitag: null, + toutid: null, + clo: null, + + clodiv: null, + clodiv_pkg: null, + + butt: null, + tblkid: null, + + confirm_func: null, + confirm_func_args: [], + + ret: -1, + + /* + s: button string + idx: button index + onclick_cb: name of the onclick callback (with signature f(idx) ) or null + anc: parent dom object + + return new button dom object + */ + input_add: function(s, idx, onclick_cb, anc) + { + var clo; + + clo = document.createElement("input"); + clo.type = "submit"; + clo.className = "button"; + clo.style.bottom = "4px"; + clo.style.margin = "2px"; + clo.obj = this; + clo.obj_idx = idx; + clo.value = s; + if (onclick_cb) + clo.onclick = function () { onclick_cb.call(this.obj, this.obj_idx); }; + + formsub_hilite(clo); + anc.appendChild(clo); + + return (clo); + }, + + ret_get: function() + { + // alert("quiz: "+this.rett); + return this.ret; + }, + + unblock: function() + { + if (this.st.st_loc < this.st.st_loc_new) { + this.st.st_loc++; + } + }, + + hide: function(val) + { + if (this.confirm_func != null) { + var args; + + args = [ val ].concat(this.confirm_func_args); + + if (this.confirm_func.apply(null, args) == false) { + return false; + } + } + this.ret = val; + clearTimeout(this.toutid); + this.ancestor.removeChild(this.notitag); + this.unblock(); + } +} + + + + +function notify_ex(st, text, tout, butt, w, h, is_opa, block_time) { var clo, box; var t = this; - + this.st = st; this.ancestor = document.body; - + this.st.st_loc_new++; clo = document.createElement("input"); clo.type = "submit"; clo.className = "button"; clo.style.bottom = "4px"; - clo.value = butt; clo.obj = this; - clo.onclick = this.input_hide; - + if (block_time > 0) { + clo.value = "leggere, prego."; + this.butt = butt; + } + else { + clo.value = butt; + clo.onclick = function () { this.obj.hide() }; + } + clodiv = document.createElement("div"); clodiv.className = "notify_clo"; + this.clo = clo; + this.clodiv = clodiv; + clodiv.appendChild(clo); cont = document.createElement("div"); @@ -567,7 +921,11 @@ function notify(st, text, tout, butt, w, h) cont.innerHTML = text; box = document.createElement("div"); - box.className = "notify"; + if (is_opa) + box.className = "notify_opaque"; + else + box.className = "notify"; + box.style.zIndex = 200; box.style.width = w+"px"; box.style.marginLeft = -parseInt(w/2)+"px"; @@ -578,47 +936,56 @@ function notify(st, text, tout, butt, w, h) box.style.visibility = "visible"; this.notitag = box; - + this.ancestor.appendChild(box); - + this.toutid = setTimeout(function(obj){ obj.unblock(); }, tout, this); - formsub_hilite(clo); - clo.focus(); + if (block_time != 0) { + this.tblkid = setTimeout(function(obj){ obj.clo.value = obj.butt; obj.clo.onclick = function () { this.obj.hide() }; formsub_hilite(obj.clo); obj.clo.focus(); }, block_time, this); + } + else { + formsub_hilite(clo); + clo.focus(); + } } -notify.prototype = { + +notify_ex.prototype = { ancestor: null, st: null, notitag: null, toutid: null, - + clo: null, + clodiv: null, + butt: null, + tblkid: null, + unblock: function() { if (this.st.st_loc < this.st.st_loc_new) { this.st.st_loc++; } }, - + hide: function() { clearTimeout(this.toutid); this.ancestor.removeChild(this.notitag); this.unblock(); - }, - - input_hide: function() - { - clearTimeout(this.obj.toutid); - this.obj.ancestor.removeChild(this.obj.notitag); - this.obj.unblock(); } } - -function $(id) { - return document.getElementById(id); + +notify.prototype = notify_ex.prototype; // Define sub-class +notify.prototype.constructor = notify; +notify.baseConstructor = notify_ex; +notify.superClass = notify_ex.prototype; + +function notify(st, text, tout, butt, w, h) +{ + notify_ex.call(this, st, text, tout, butt, w, h, false, 0); } function globst() { @@ -628,12 +995,34 @@ 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() { var ct = $("remark").l_remct; - + if (ct != 0) { ct++; if (ct > 2) @@ -644,7 +1033,7 @@ function remark_step() } else $("remark").className = "remark0"; - + return; } @@ -666,7 +1055,7 @@ function remark_off() function italizer(ga) { var pre, pos; - if (ga[0] & 2) + if (ga[0] & 2) return ""+ga[1]+""; else return ga[1]; @@ -693,6 +1082,44 @@ var chatt_lines_n = 0; var CHATT_MAXLINES = 40; +function user_decorator(user, is_real) +{ + var name, i, sp = "", cl = ""; + var flags = user[0] & 0x03 | ((user[0] & 0x0c0000) >> 16); + + // console.log(user[1]+" FLAGS: "+flags); + + for (i = 0 ; i < 4 ; i++) { + if (flags & (1 << i)) { + cl += sp + "au" + i + (is_real ? "" : "_off"); + sp = " "; + } + } + + if (flags != 0) { + name = "" + user[1] + ""; + } + else { + name = user[1]; + } + + return (name); +} + +function user_dec_and_state(el) +{ + var content = ""; + var val_el; + + content = user_decorator(el, true); + content += state_add(el[0],(typeof(el[2]) != 'undefined' ? el[2] : null)); + + return (content); +} + + /* PRO CHATT */ function chatt_sub(dt,data,str) { @@ -700,39 +1127,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[0] | 1), data[1] ]; + name = user_decorator(bolder, false); + + 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") ); } /* @@ -753,8 +1175,10 @@ function readCookie(name) { var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + while (c.charAt(0)==' ') + c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) + return c.substring(nameEQ.length,c.length); } return null; } @@ -763,66 +1187,35 @@ 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) { - var res = window.confirm(" Vuoi veramente abbandonare la briscola ?\n(clicca annulla o cancel se vuoi ricaricare la briscola)"); - 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) { - alert("Ripristino della briscola fallito, per non perdere la sessione ricaricare la pagina manualmente."); - } - } - onunload_times++; - } - - return(false); -} - function onunload_cb () { - - the_end = true; + + if (typeof(xstm) != "undefined") + xstm.the_end = true; act_shutdown(); - + return(false); } - function room_checkspace(emme,tables,inpe) { nome = ""; - for (i = 0 ; i < emme ; i++) + for (i = 0 ; i < emme ; i++) nome += "m"; nome += ""; alta = ""; - for (i = 0 ; i < 5 ; i++) + for (i = 0 ; i < 5 ; i++) alta += nome+"
"; for (i = 0 ; i < tables ; i++) { $("table"+i).innerHTML = alta; - $("table_act"+i).innerHTML = ""; + // MLANG Mi siedo. + $("table_act"+i).innerHTML = ""; } stand = ""; @@ -836,7 +1229,8 @@ function room_checkspace(emme,tables,inpe) $("standup").innerHTML = stand; // VERIFY: what is this button ? - $("esco").innerHTML = ""; + // MLANG Esco. + $("esco").innerHTML = ""; } function unescapeHTML(cont) { @@ -853,7 +1247,7 @@ function unescapeHTML(cont) { var length = div.childNodes.length, results = new Array(length); while (length--) results[length] = div.childNodes[length]; - + for (i=0 ; i -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:/' || url.substring(0,4) == 'ws:/') { + return (url); + } + else if (url.substring(0,1) == '/') { + return (host+url); + } + else { + return (host+path+url); + } +} + +function download_mgr(url) +{ + var ifra; + + if ((ifra = $('the_downloader')) == null) { + ifra = document.createElement("iframe"); + ifra.style.display = "none"; + ifra.id = 'the_downloader'; + document.body.appendChild(ifra); + } + + ifra.contentWindow.location.href = url; + + this.ifra = ifra; +} + +download_mgr.prototype = { + ifra: null +} + +function submit_click(obj) +{ + obj.form.elements['realsub'].value = obj.id; +} + +function class_check(item, cls_name) +{ + if ((" " + item.className + " ").indexOf(" " + cls_name + " ") == -1) + return (false); + else + return (true); +} + +function class_add(item, cls_name) +{ + for (i = 1 ; i < arguments.length ; i++) { + if (! class_check(item, arguments[i])) { + item.className = item.className + " " + arguments[i]; + } + } +} + +function class_rem(item, cls_name) +{ + for (i = 1 ; i < arguments.length ; i++) { + var item_spc = " " + item.className + " "; + var cls_spc = " " + arguments[i] + " "; + var cls_out; + + var pos = item_spc.indexOf(cls_spc); + if (pos != -1) { + cls_out = item_spc.substring(0, pos) + item_spc.substring(pos + cls_spc.length - 1); + if (cls_out == " ") { + item.className = ""; + } + else { + item.className = cls_out.substring(1, cls_out.length - 1); + } + } + } +} + +function class_subst(item, cls_out, cls_in) +{ + class_rem(item, cls_out); + class_add(item, cls_in); +} + +function nexst(after) +{ + if (after != undefined) { + this._after = after; + } +} + +nexst.next = function(st) +{ + if (st === null || st === undefined) + st = new nexst(); + st._step++; + + return st; +}; + +nexst.prev = function(st) +{ + st._step--; +} + +nexst.reprise = function () +{ + var thiz, args_in, args = []; + + if (arguments.length > 1) { + thiz = arguments[0]; + args_in = arguments[1]; + } + else { + thiz = null; + args_in = arguments[0]; + } + + for (var i = 0 ; i < args_in.length ; i++) { + args[i] = args_in[i]; + } + return args_in.callee.apply(thiz, args); +}; + +nexst.prototype = { + _step: 0, // current step for the async multistep command + _data: null, // data returned at the end of the async command + _subst: null, // substatus for nested async command + _after: null, // callback (as 'arguments' object) to run at the end + // of last step + + step_set: function(step) { + this._step = step; + }, + + step_get: function() { + return this._step; + }, + + data_set: function(data) { + this._data = data; + }, + + data_get: function() { + return this._data; + }, + + subst_set: function(subst) { + this._subst = subst; + }, + + subst_get: function() { + return this._subst; + }, + + after_set: function(after) { + this._after = after; + }, + + after_get: function() { + return this._after; + }, + + done_set: function() { + this.done = true; + }, + + done_get: function() { + return (this.done); + } +};