From e22dc9f5d5b482780e577ca5f8c5a08c8cc9bc84 Mon Sep 17 00:00:00 2001
From: "Matteo Nastasi (mop)" <nastasi@alternativeoutput.it>
Date: Tue, 19 Nov 2013 08:26:04 +0100
Subject: [PATCH] add multi-button choice to notify_document class

---
 web/commons.js       | 194 +++++++++++++++++++++++++++++++++++++++++++
 web/notidoc_test.php |   5 +-
 2 files changed, 198 insertions(+), 1 deletion(-)

diff --git a/web/commons.js b/web/commons.js
index 192094d..82fd5fe 100644
--- a/web/commons.js
+++ b/web/commons.js
@@ -613,6 +613,200 @@ function div_show(div)
     div.style.visibility = "visible";
 }
 
+function notify_document(st, text, tout, butt, w, h, is_opa, block_time)
+{
+    var clo, clodiv_ctx, clodiv_wai, box;
+    var i, t = this;
+
+    this.st = st;
+
+    this.ancestor = document.body;
+
+    this.st.st_loc_new++;
+
+    clodiv_ctx = document.createElement("div");
+    clodiv_ctx.className = "notify_clo";
+
+    for (i = 0 ; i < butt.length ; i++) {
+        clo = document.createElement("input");
+        clo.type = "submit";
+        clo.className = "button";
+        clo.style.bottom = "4px";
+        clo.obj = this;
+        clo.value = butt[i];
+        clo.onclick = function () { this.obj.hide() };
+        formsub_hilite(clo);
+        clodiv_ctx.appendChild(clo);
+    }
+
+
+    // if (block_time > 0) {
+    //     clo.value = "leggere, prego.";
+    //     this.butt = butt;
+    // }
+    // else {
+    //     this.clodiv = clodiv_ctx;
+    //     // this.clo = clo;
+    // }
+
+
+
+
+
+    // this.clo = clo;
+    this.clodiv = clodiv_ctx;
+
+
+    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");
+    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);
+
+    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);
+    // }
+    // else {
+    // formsub_hilite(clo);
+    // clo.focus();
+    // }
+
+}
+
+
+function notify_document_old(st, text, tout, butt, w, h, is_opa, block_time)
+{
+    var clo, clodiv, 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.obj = this;
+    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");
+
+    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");
+    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(clodiv);
+    box.style.visibility = "visible";
+
+    this.notitag = box;
+
+    this.ancestor.appendChild(box);
+
+    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);
+    }
+    else {
+        formsub_hilite(clo);
+        clo.focus();
+    }
+
+}
+
+notify_document.prototype = {
+    ancestor: null,
+    st: null,
+    notitag: null,
+    toutid: null,
+    clo: null,
+    clodiv: null,
+    butt: null,
+    tblkid: null,
+
+    ret: -1,
+
+    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()
+    {
+        this.ret = 1;
+	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;
diff --git a/web/notidoc_test.php b/web/notidoc_test.php
index b309c58..b892ccb 100644
--- a/web/notidoc_test.php
+++ b/web/notidoc_test.php
@@ -12,6 +12,7 @@
      var subst = "";
      var gst = new globst();
      var nd;
+     var tva;
 
      window.onload = function() {
          var i, sss = "";
@@ -20,7 +21,9 @@
              sss += "solo una prova<br>";
          }
 
-         nd = new notify_document(gst, sss, 4000, "pippo", 200, 200, true, 2000);
+         nd = new notify_document(gst, sss, 4000, [ "pippo", "pluto", "paperino" ], 200, 200, true, 2000);
+
+         tva = setInterval(function(ndd){ console.log("nd.ret = "+ndd.ret_get()); }, 3000, nd);
      }
  //-->
 </script>
-- 
2.17.1