X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=158dc5400572279fc21362beef8ef848e5449ae8;hb=db58d4f8b388d9632d5f115a98d213a666be3c5b;hp=454152a3431fc93207c56812b617bbcd7c9c231b;hpb=e3dee295c72fc8cd5f7f607f94e713b1208a610b;p=brisk.git diff --git a/web/commons.js b/web/commons.js index 454152a..158dc54 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,34 @@ * 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 mlang_commons = { 'imgload_a' : { 'it' : 'Immagine 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)' } } + }; + function $(id) { return document.getElementById(id); } function getStyle(x,IEstyleProp, MozStyleProp) @@ -188,8 +208,8 @@ function reset_images() function update_images() { - // if (g_imgct % 10 == 0) alert("g_imgct: "+g_imgct+" xx "+g_preload_img_arr[g_imgct]); - $("imgct").innerHTML = "Immagini caricate "+g_preload_imgsz_arr[g_imgct]+"%."; + // MLANG "Immagine caricate" + g_preload_imgsz_arr[g_imgct] + "%." + $("imgct").innerHTML = mlang_commons['imgload_a'][g_lang]+g_preload_imgsz_arr[g_imgct]+"%."; if (g_imgct+1 < g_preload_img_arr.length) { g_imgct++; setTimeout(preload_images, 100, g_preload_img_arr, g_imgct-1); @@ -220,8 +240,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; @@ -234,7 +256,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) { @@ -244,6 +272,10 @@ function send_mesg(mesg) } } +/* + request to server + server_request([arg0=arg1[, arg2=arg3[, ...]]]) + */ function server_request() { var xhr_wr = createXMLHttpRequest(); @@ -305,6 +337,11 @@ function act_chatt(value) } /* Stat: ROOM */ +function act_ping() +{ + send_mesg("ping"); +} + function act_sitdown(table) { send_mesg("sitdown|"+table); @@ -315,7 +352,10 @@ function act_wakeup() send_mesg("wakeup"); } - +function act_splash() +{ + send_mesg("splash"); +} function act_help() { @@ -343,6 +383,11 @@ function act_about() send_mesg("about"); } +function act_placing() +{ + send_mesg("placing"); +} + function act_roadmap() { send_mesg("roadmap"); @@ -361,8 +406,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(); } @@ -392,7 +437,7 @@ function postact_logout() { // alert("postact_logout"); try { - xhr_rd.abort(); + hstm.abort(); } catch (e) {} // eraseCookie("sess"); @@ -533,8 +578,13 @@ 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) +function notify_ex(st, text, tout, butt, w, h, is_opa, block_time) { var clo, box; var t = this; @@ -549,12 +599,21 @@ function notify(st, text, tout, butt, w, h) 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 = this.input_hide; + } + clodiv = document.createElement("div"); clodiv.className = "notify_clo"; + this.clo = clo; + this.clodiv = clodiv; + clodiv.appendChild(clo); cont = document.createElement("div"); @@ -567,7 +626,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"; @@ -583,17 +646,27 @@ function notify(st, text, tout, butt, w, h) 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 = obj.input_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) { @@ -615,12 +688,24 @@ notify.prototype = { this.obj.unblock(); } } + + +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 $(id) { return document.getElementById(id); } + function globst() { this.st = -1; this.st_loc = -1; @@ -628,7 +713,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() { @@ -693,6 +800,30 @@ var chatt_lines_n = 0; var CHATT_MAXLINES = 40; +function user_decorator(user) +{ + var name; + var flags = user[0]; + if ((flags & 0x03) != 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); + content += state_add(el[0]); + + return (content); +} + + /* PRO CHATT */ function chatt_sub(dt,data,str) { @@ -700,39 +831,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); + + 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") ); } /* @@ -763,52 +889,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) { - 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(hstm) != "undefined") + hstm.the_end = true; act_shutdown(); return(false); } - function room_checkspace(emme,tables,inpe) { nome = ""; @@ -822,7 +916,8 @@ function room_checkspace(emme,tables,inpe) for (i = 0 ; i < tables ; i++) { $("table"+i).innerHTML = alta; - $("table_act"+i).innerHTML = ""; + // MLANG Mi siedo. + $("table_act"+i).innerHTML = ""; } stand = ""; @@ -836,7 +931,8 @@ function room_checkspace(emme,tables,inpe) $("standup").innerHTML = stand; // VERIFY: what is this button ? - $("esco").innerHTML = ""; + // MLANG Esco. + $("esco").innerHTML = ""; } function unescapeHTML(cont) { @@ -940,7 +1036,7 @@ function sidebanner2_cb() function langtolng(lang) { if (lang == "en") - return ("_en"); + return ("-en"); else return (""); } @@ -959,3 +1055,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); + } +}