X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=b95519be3d046a3908d000c7d95d016adf2d0693;hb=a53bab3c7b384a95a807ddd64fe93a6564be5504;hp=d5c0c42e05416c00d2ff0a2e440fc24b75c29c7d;hpb=92c5ac9505608504a33b757a2f0f1c1a0fcd86ad;p=brisk.git diff --git a/web/commons.js b/web/commons.js index d5c0c42..b95519b 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 @@ -25,7 +25,7 @@ var PLAYERS_N = 3; var EXIT_BAN_TIME = 3600; var cookiepath = "/brisk/"; -var mlang_commons = { 'imgload_a' : { 'it' : 'Immagine caricate ', +var mlang_commons = { 'imgload_a' : { 'it' : 'Immagini caricate ', 'en' : 'Loaded images ' }, 'imgload_b' : { 'it' : '%.', 'en' : '%.' }, @@ -38,12 +38,32 @@ 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)' } }, + '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 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 getStyle(x,IEstyleProp, MozStyleProp) { if (x.currentStyle) { @@ -235,8 +255,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,8 +271,8 @@ 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; }; - console.log(typeof(g_debug)); if (typeof(g_debug) == 'number' && g_debug > 0 && typeof(console) == 'object' && typeof(console.log) == 'function') { var ldate = new Date(); @@ -266,17 +288,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 +318,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 +369,11 @@ function act_chatt(value) } /* Stat: ROOM */ +function act_ping() +{ + send_mesg("ping"); +} + function act_sitdown(table) { send_mesg("sitdown|"+table); @@ -432,6 +476,48 @@ function postact_logout() 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 @@ -572,6 +658,169 @@ function div_show(div) div.style.visibility = "visible"; } +/* + 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; @@ -594,7 +843,7 @@ function notify_ex(st, text, tout, butt, w, h, is_opa, block_time) } else { clo.value = butt; - clo.onclick = this.input_hide; + clo.onclick = function () { this.obj.hide() }; } clodiv = document.createElement("div"); @@ -635,7 +884,7 @@ function notify_ex(st, text, tout, butt, w, h, is_opa, block_time) this.toutid = setTimeout(function(obj){ obj.unblock(); }, tout, this); 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); + 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); @@ -667,13 +916,6 @@ notify_ex.prototype = { 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(); } } @@ -688,12 +930,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; this.st_loc = -1; @@ -791,9 +1027,10 @@ var CHATT_MAXLINES = 40; function user_decorator(user) { var name; - var flags = user[0]; - if ((flags & 0x03) != 0) - name = ""+user[1]+""; + var flags = user[0] & 0x03 | ((user[0] & 0x040000) >> 16); + + if (flags != 0) + name = ""+user[1]+""; else name = user[1]; @@ -806,7 +1043,7 @@ function user_dec_and_state(el) var val_el; content = user_decorator(el); - content += state_add(el[0]); + content += state_add(el[0],(typeof(el[2]) != 'undefined' ? el[2] : null)); return (content); } @@ -1154,7 +1391,7 @@ function url_complete(parent, url) } // alert("host: ["+host+"] path: ["+path+"]"); - if (url.substring(0,6) == 'http:/' || url.substring(0,7) == 'https:/') { + if (url.substring(0,6) == 'http:/' || url.substring(0,7) == 'https:/' || url.substring(0,4) == 'ws:/') { return (url); } else if (url.substring(0,1) == '/') { @@ -1164,3 +1401,23 @@ function url_complete(parent, url) 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 +}