X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fcommons.js;h=9d96a7271d48ba538a6e2e45b6430ab24c389a60;hb=c57d11623d49e18566644f731791ae34d6e06967;hp=33bb8eb066e48eb54ec1234f74d54ad0a26842fc;hpb=0900364491042222a4ff6d08cc627c0677acd9b9;p=brisk.git diff --git a/web/commons.js b/web/commons.js index 33bb8eb..9d96a72 100644 --- a/web/commons.js +++ b/web/commons.js @@ -1,7 +1,10 @@ /* * brisk - commons.js * - * Copyright (C) 2006 matteo.nastasi@milug.org + * Copyright (C) 2006-2008 Matteo Nastasi + * mailto: nastasi@alternativeoutput.it + * matteo.nastasi@milug.org + * web: http://www.alternativeoutput.it * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,9 +24,21 @@ */ var PLAYERS_N = 3; +var EXIT_BAN_TIME = 900; +var cookiepath = "/brisk/"; function $(id) { return document.getElementById(id); } +function getStyle(x,IEstyleProp, MozStyleProp) +{ + if (x.currentStyle) { + var y = x.currentStyle[IEstyleProp]; + } else if (window.getComputedStyle) { + var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(MozStyleProp); + } + return y; +} + /* replacement of setInterval on IE */ (function(){ /*if not IE, do nothing*/ @@ -60,40 +75,125 @@ function $(id) { return document.getElementById(id); } throw Error('setInterval Error\nInvalid function type'); }; }; + + /*Copy the default setTimeout behavior*/ + var nativeSetTimeout = window.setTimeout; + window.setTimeout = function(fn,ms) { + var param = []; + if(arguments.length <= 2) { + return nativeSetTimeout(fn,ms); + } + else { + for(var i=2;i 4) + sfx = arguments[4]; + else + sfx = ''; + + big = $(obj.id+"_big"+sfx); + if (act == "over") { + big.style.left = obj.offsetLeft + x+"px"; + big.style.top = obj.offsetTop + y+"px"; + big.style.visibility = "visible"; + } + else { + big.style.visibility = "hidden"; + } +} + function rnd_int(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } function error_images() { - alert("GHESEMU!"); + // alert("GHESEMU!"); + setTimeout(preload_images, 2000, g_preload_img_arr, g_imgct-1); } function abort_images() { - alert("ABORTAIMAGES"); + // alert("ABORTAIMAGES"); + setTimeout(preload_images, 2000, g_preload_img_arr, g_imgct-1); } function unload_images() { - alert("ABORTAIMAGES"); + // alert("ABORTAIMAGES"); + setTimeout(preload_images, 2000, g_preload_img_arr, g_imgct-1); } function reset_images() { - alert("ABORTAIMAGES"); + // alert("ABORTAIMAGES"); + setTimeout(preload_images, 2000, g_preload_img_arr, g_imgct-1); } function update_images() { - // $("imgct").innerHTML = "Immagini caricate "+g_preload_imgsz_arr[g_imgct]+"%."; - if (g_imgct < g_preload_img_arr.length) - setTimeout(preload_images, 100, g_preload_img_arr, g_imgct); - g_imgct++; + // 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]+"%."; + if (g_imgct+1 < g_preload_img_arr.length) { + g_imgct++; + setTimeout(preload_images, 100, g_preload_img_arr, g_imgct-1); + } // $("imgct").innerHTML += "U"; } @@ -130,11 +230,46 @@ function createXMLHttpRequest() { function send_mesg(mesg) { var xhr_wr = createXMLHttpRequest(); - // xhr_wr.open('GET', 'index_wr.php?sess='+sess+'&mesg='+encodeURIComponent(mesg), true); - xhr_wr.open('GET', 'index_wr.php?sess='+sess+'&mesg='+mesg, true); + 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.onreadystatechange = function() { return; }; xhr_wr.send(null); + if (!is_conn) { + if (xhr_wr.responseText != null) { + eval(xhr_wr.responseText); + } + } +} + +function server_request() +{ + var xhr_wr = createXMLHttpRequest(); + var i, collect = ""; + + if (arguments.length > 0) { + for (i = 0 ; i < arguments.length ; i+= 2) { + collect += (i == 0 ? "" : "&") + arguments[i] + "=" + encodeURIComponent(arguments[i+1]); + } + } + // alert("Args: "+arguments.length); + + var is_conn = (sess == "not_connected" ? false : true); + + // console.log("server_request:preresp: "+xhr_wr.responseText); + + 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); } /* Stat: CHAT and TABLE */ @@ -204,37 +339,90 @@ function act_tableinfo() send_mesg("tableinfo"); } +function act_help() +{ + send_mesg("help"); +} + +function act_tav() +{ + act_chatt('/tav '+$('txt_in').value); + $('txt_in').value = ''; +} + +function act_about() +{ + send_mesg("about"); +} + +function act_roadmap() +{ + send_mesg("roadmap"); +} + +function act_whysupport() +{ + send_mesg("whysupport"); +} + +function act_exitlock() +{ + send_mesg("exitlock"); +} + function safelogout() +{ + var res; + + if (g_exitlock < 2) + res = window.confirm("Sei sicuro di volere abbandonare la partita?\nATTENZIONE: se esci adesso senza il consenso degli altri giocatori non potrai sederti ai tavoli per "+(Math.floor(EXIT_BAN_TIME/60))+" minuti."); + else + res = window.confirm("Sei sicuro di volere abbandonare la partita?"); + if (res) + act_logout(g_exitlock); +} + +function act_lascio() +{ + send_mesg("lascio"); +} + +function safelascio() { var res; - res = window.confirm("Sei sicuro di volere abbandonare la partita?"); + res = window.confirm("Sei sicuro di volere lasciare questa mano?"); if (res) - act_logout(); + act_lascio(); } -function act_logout() + +function act_logout(exitlock) { - send_mesg("logout"); + send_mesg("logout|"+exitlock); + // alert("IZZO"); } function act_reload() { window.onunload = null; + window.onbeforeunload = null; document.location.reload(); } +function act_reloadroom() +{ + window.onunload = null; + window.onbeforeunload = null; + document.location.assign("index.php"); +} + function act_shutdown() { var c = 0; send_mesg("shutdown"); - while (xhr_wr.readyState != 4) - c++; -} - -function act_preout() -{ - act_logout(); + // while (xhr_wr.readyState != 4) + // c++; } function postact_logout() @@ -271,9 +459,11 @@ function sleep(st, delay) function slowimg(img,x1,y1,deltat,free,action,srcend) { this.img = img; - this.x0 = parseInt(document.defaultView.getComputedStyle(this.img, "").getPropertyValue("left")); - // alert("img.x0 = "+this.x0); - this.y0 = parseInt(document.defaultView.getComputedStyle(this.img, "").getPropertyValue("top")); + // this.x0 = parseInt(document.defaultView.getComputedStyle(this.img, "").getPropertyValue("left")); + this.x0 = parseInt(getStyle(this.img,"left", "left")); +// alert("img.x0 = "+this.x0); + // this.y0 = parseInt(document.defaultView.getComputedStyle(this.img, "").getPropertyValue("top")); + this.y0 = parseInt(getStyle(this.img,"top", "top")); this.x1 = x1; this.y1 = y1; this.deltat = deltat; @@ -312,16 +502,19 @@ slowimg.prototype = { this.action = act; }, + settime: function(time) { - this.time = time; - this.step_n = parseInt(time / this.deltat); + this.time = (time < this.deltat ? this.deltat : time); + this.step_n = parseInt(this.time / this.deltat); this.dx = (this.x1 - this.x0) / this.step_n; this.dy = (this.y1 - this.y0) / this.step_n; - if (this.step_n * this.deltat == time) { + if (this.step_n * this.deltat == this.time) { this.step_n--; } - this.step_free = parseInt(this.step_n * this.free); + if (this.free < 1) { + this.step_free = parseInt(this.step_n * this.free); + } }, start: function(st) @@ -347,7 +540,7 @@ slowimg.prototype = { this.step_cur++; setTimeout(function(obj){ obj.animate(); }, this.deltat, this); if (this.step_cur == this.step_free && this.st != null) { - if (this.st != null && this.st.st_loc < this.st.st_loc_new) { + if (this.st.st_loc < this.st.st_loc_new) { // alert("QUI1 " + this.step_cur + " ZZ "+ this.step_free); this.st.st_loc++; this.st = null; @@ -360,14 +553,16 @@ slowimg.prototype = { // $("logz").innerHTML += "xxxxxxxxxxxxxxxCLEAR
"; var date = new Date(); // $("logz").innerHTML += "Timestop: " + date + "
"; + + if (this.action != null) { + eval(this.action); + } + if (this.st != null && this.st.st_loc < this.st.st_loc_new) { // alert("QUI2"); this.st.st_loc++; this.st = null; } - if (this.action != null) { - eval(this.action); - } if (this.srcend != null) { this.img.src = this.srcend; } @@ -375,22 +570,24 @@ slowimg.prototype = { } } -var asta_xarr = new Array(0,66,133); +var asta_xarr = new Array(0,66,132); /* TODO: impostare gli onclick */ -function dispose_asta(idx, pnt) +function dispose_asta(idx, pnt, nopoint) { var i, btn, pass; - var btn; + for (i = 0 ; i < 10 ; i++) { btn = $("asta"+i); if (i < idx) { btn.src = "img/astapasso"+(pnt >= 0 ? "" : "_ro")+".png"; + btn.style.cursor = (pnt >= 0 ? "pointer" : "default"); pass = -1; } else { btn.src = "img/asta"+i+(pnt >= 0 ? "" : "_ro")+".png"; + btn.style.cursor = (pnt >= 0 ? "pointer" : "default"); pass = i; } if (i < 19) @@ -398,19 +595,22 @@ function dispose_asta(idx, pnt) else btn.style.left = asta_xarr[(i+1) % 3]; - btn.style.top = parseInt(i / 3) * 50+1; - // btn.style.visibility = "visible"; - - if (pnt >= 0) + btn.style.top = parseInt(i / 3) * 50 + (i == 9 ? 0 : 1); + + if (pnt >= 0) { eval("btn.onclick = function () { act_asta("+pass+",61); }"); - else + btn.style.cursor = "pointer"; + } + else { btn.onclick = null; + btn.style.cursor = "default"; + } } btn = $("astaptdiv"); btn.style.left = asta_xarr[i % 3]; - btn.style.top = parseInt(i / 3) * 50; + btn.style.top = parseInt(i / 3) * 50 - 2; // btn.style.visibility = "visible"; btn = $("astapt"); @@ -419,56 +619,116 @@ function dispose_asta(idx, pnt) btn = $("astaptsub"); btn.style.left = asta_xarr[i % 3]; - btn.style.top = 25 + parseInt(i / 3) * 50;; + btn.style.top = 25 + parseInt(i / 3) * 50 - 1; btn.src = "img/astaptsub"+(pnt >= 0 ? "" : "_ro")+".png"; - // btn.style.visibility = "visible"; - if (pnt >= 0) + btn.style.cursor = (pnt >= 0 ? "pointer" : "default"); + if (pnt >= 0) { btn.onclick = function () { act_asta(9,$("astapt").value); }; - else + btn.style.cursor = "pointer"; + } + else { btn.onclick = null; + btn.style.cursor = "default"; + } i+=1; - btn = $("astapasso2"); - btn.style.left = asta_xarr[i % 3]; - btn.style.top = parseInt(i / 3) * 50;; - btn.src = "img/astapasso"+(pnt >= 0 ? "" : "_ro")+".png"; - // btn.style.visibility = "visible"; - if (pnt >= 0) - btn.onclick = function () { act_asta(-1,0); }; - else + if (nopoint) { + btn = $("astapasso"); + btn.style.left = asta_xarr[i % 3]; + btn.style.top = parseInt(i / 3) * 50; + btn.src = "img/astapashalf"+(pnt >= 0 ? "" : "_ro")+".png"; + btn.style.cursor = (pnt >= 0 ? "pointer" : "default"); + if (pnt >= 0) { + btn.onclick = function () { act_asta(-1,0); }; + } + else { + btn.onclick = null; + } + + btn = $("astalascio"); + btn.style.left = asta_xarr[i % 3]; + btn.style.top = parseInt(i / 3) * 50 + 24; + btn.src = "img/astalascio.png"; + btn.style.visibility = "visible"; + btn.onclick = function () { safelascio(); }; + } + else { + btn = $("astapasso"); + btn.style.left = asta_xarr[i % 3]; + btn.style.top = parseInt(i / 3) * 50;; + btn.src = "img/astapasso"+(pnt >= 0 ? "" : "_ro")+".png"; + btn.style.cursor = (pnt >= 0 ? "pointer" : "default"); + if (pnt >= 0) { + btn.onclick = function () { act_asta(-1,0); }; + } + else { + btn.onclick = null; + } + + btn = $("astalascio"); + btn.style.visibility = "hidden"; btn.onclick = null; + } + // btn.style.visibility = "visible"; $("asta").style.visibility = "visible"; } +function asta_pnt_set(pnt) +{ + btn = $("astapt"); + var rpnt = (pnt < 0 ? -pnt : pnt); + btn.value = (rpnt < 61 ? 61 : (rpnt > 120 ? 120 : rpnt)); +} + function hide_asta() { $("asta").style.visibility = "hidden"; } -function notify(st, ancestor, text, tout, butt) + +function notify(st, text, tout, butt, w, h) { var clo, box; var t = this; this.st = st; - this.ancestor = ancestor; + + 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; + + clodiv = document.createElement("div"); + clodiv.className = "notify_clo"; + clodiv.appendChild(clo); - box = document.createElement("div"); + cont = document.createElement("div"); + + cont.style.borderBottomStyle = "solid"; + cont.style.borderBottomWidth = "1px"; + cont.style.borderBottomColor = "gray"; + cont.style.height = (h - 30)+"px"; + cont.style.overflow = "auto"; + cont.innerHTML = text; + + box = document.createElement("div"); box.className = "notify"; - box.innerHTML = text; box.style.zIndex = 200; - box.appendChild(clo); + 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(clodiv); box.style.visibility = "visible"; - + this.notitag = box; this.ancestor.appendChild(box); @@ -555,6 +815,8 @@ function choose_seed(card) { var i; + $("asta").style.visibility = "hidden"; + $("astalascio").style.visibility = "hidden"; $("chooseed").style.visibility = "visible"; for (i = 0 ; i < 4 ; i++) { $("seed"+i).src = "img/"+i+""+card+".png"; @@ -563,19 +825,28 @@ function choose_seed(card) } } +function italizer(ga) +{ + var pre, pos; + if (ga[0] & 2) + return ""+ga[1]+""; + else + return ga[1]; +} + function set_names(so,ea,ne,nw,we) { // alert("EA: "+ea); - $("name").innerHTML = so; - $("name").title = so; - $("name_ea").innerHTML = ea; - $("name_ea").title = ea; - $("name_ne").innerHTML = ne; - $("name_ne").title = ne; - $("name_nw").innerHTML = nw; - $("name_nw").title = nw; - $("name_we").innerHTML = we; - $("name_we").title = we; + $("name").innerHTML = italizer(so); + $("name").title = unescapeHTML(so[1]); + $("name_ea").innerHTML = italizer(ea); + $("name_ea").title = unescapeHTML(ea[1]); + $("name_ne").innerHTML = italizer(ne); + $("name_ne").title = unescapeHTML(ne[1]); + $("name_nw").innerHTML = italizer(nw); + $("name_nw").title = unescapeHTML(nw[1]); + $("name_we").innerHTML = italizer(we); + $("name_we").title = unescapeHTML(we[1]); return; } @@ -612,23 +883,36 @@ function show_astat(zer,uno,due,tre,qua) } } +function exitlock_show(num, islock) +{ + g_exitlock = num; + + num = (num < 3 ? num : 3); + $("exitlock").src = "img/exitlock"+num+(islock ? "n" : "y")+".png"; + // alert("EXITLOCK: "+$("exitlock").src); + $("exitlock").style.visibility = "visible"; +} + var fin = 0; +// exitlock_show(0, true); + function table_init() { var sux = new Array("", "_ea", "_ne", "_nw", "_we"); - remark_off(); + // console.log("table_init"); + remark_off(); $("asta").style.visibility = "hidden"; $("caller").style.visibility = "hidden"; show_astat(-2,-2,-2,-2,-2); - for (i=0 ; i < 8 ; i++) { Drag.init($("card" + i), card_mouseup_cb); for (e = 0 ; e < PLAYERS_N ; e++) $("card"+sux[e]+i).style.visibility = "hidden"; } for (i=0 ; i < PLAYERS_N ; i++) { + // console.log("shut: "+"takes"+sux[i]); $("takes"+sux[i]).style.visibility = "hidden"; } @@ -647,26 +931,48 @@ function table_init() { var chatt_lines = new Array(); var chatt_lines_n = 0; +var CHATT_MAXLINES = 40; + /* PRO CHATT */ -function chatt_sub(name,str) +function chatt_sub(dt,data,str) { + var must_scroll = false; + 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 == 20) { + if (chatt_lines_n == CHATT_MAXLINES) { $("txt").innerHTML = ""; - for (i = 0 ; i < 19 ; i++) { + for (i = 0 ; i < (CHATT_MAXLINES - 1) ; i++) { chatt_lines[i] = chatt_lines[i+1]; $("txt").innerHTML += chatt_lines[i]; } - chatt_lines[i] = ""+name+" "+str+ "
"; + chatt_lines[i] = dt+""+name+" "+str+ "
"; $("txt").innerHTML += chatt_lines[i]; } else { - chatt_lines[chatt_lines_n] = ""+name+" "+str+ "
"; + chatt_lines[chatt_lines_n] = dt+""+name+" "+str+ "
"; $("txt").innerHTML += chatt_lines[chatt_lines_n]; chatt_lines_n++; } - $("txt").innerHTML; - $("txt").scrollTop = 10000000; + // $("txt").innerHTML; + + + if (must_scroll) { + $("txt").scrollTop = 10000000; + } + // alert("scTOP "+$("txt").scrollTop+" scHEIGHT: "+$("txt").scrollHeight+" HEIGHT: "+getStyle($("txt"),"height", "height") ); } /* @@ -700,19 +1006,29 @@ function eraseCookie(name) { var onunload_times = 0; -function onunload_cb () { +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++; + // while (1) + // u++; } else { try { - location = self.location; + 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."); } @@ -723,6 +1039,15 @@ function onunload_cb () { return(false); } +function onunload_cb () { + + the_end = true; + + act_shutdown(); + + return(false); +} + function room_checkspace(emme,tables,inpe) { @@ -742,7 +1067,7 @@ function room_checkspace(emme,tables,inpe) stand = ""; for (i = 0 ; i < inpe ; i++) { - stand += ""; + stand += ""; if ((i+1) % 4 == 0) { stand += ""; } @@ -750,5 +1075,69 @@ function room_checkspace(emme,tables,inpe) stand += ""; $("standup").innerHTML = stand; - $("esco").innerHTML = ""; + // VERIFY: what is this button ? + $("esco").innerHTML = ""; +} + +function unescapeHTML(cont) { + var div = document.createElement('div'); + var memo = ""; + var i; + + div.innerHTML = cont; + if (div.childNodes[0]) { + if (div.childNodes.length > 1) { + if (div.childNodes.toArray) + alert("si puo"); + else { + var length = div.childNodes.length, results = new Array(length); + while (length--) + results[length] = div.childNodes[length]; + + for (i=0 ; i' + +'' + +'' + +''; + } +} + +function topbanner_init() +{ + setInterval(topbanner_cb, 666); +; +} + +function topbanner_cb() +{ + var a, b; + + a = $('topbanner').style.backgroundColor; + b = $('topbanner').style.borderLeftColor; + + $('topbanner').style.backgroundColor = b; + $('topbanner').style.borderColor = a+" "+a+" "+a+" "+a; + + // console.log("A: "+a+" B: "+b); } + +
"+nome+""+nome+"