confirmation function added to notify_document js function
[brisk.git] / web / commons.js
index 82fd5fe..6fb210e 100644 (file)
@@ -44,7 +44,10 @@ var mlang_commons = { 'imgload_a' : { 'it' : 'Immagini caricate ',
                                       '1'  : { 'it' : '(solo aut.)',
                                                'en' : '(only aut.)' },
                                       '2'  : { 'it' : '(isolam.to)',
-                                               'en' : '(isolation)' } }
+                                               'en' : '(isolation)' } },
+                      'lic_refu'  : { 'it' : 'Rifiutando di sottoscrivere la nuova licenza d\' uso non ti sarà più possibile accedere col tuo utente registrato al sito, sei proprio sicuro di non voler accettare le nuove condizioni d\'uso ?',
+                                      'en' : 'EN Rifiutando di sottoscrivere la nuova licenza d\' uso non ti sarà più possibile accedere col tuo utente registrato al sito, sei proprio sicuro di non voler accettare le nuove condizioni d\'uso ?'
+                                    }
                     };
 
 function $(id) { return document.getElementById(id); }
@@ -473,6 +476,38 @@ function postact_logout()
     document.location.assign("index.php");
 }
 
+/*
+  type - 'hard' or 'soft'
+  code - if soft: accept (0), refuse (1), after (2)
+         if hard: accept (0), refuse (1)
+ */
+function act_licencemgr(type, code, lice_curr, lice_vers)
+{
+    if (type != "soft" && type != "hard") {
+        return false;
+    }
+    switch (code) {
+    case 0:
+    case 1:
+        send_mesg("licencemgr|"+type+"|"+code+"|"+lice_curr+"|"+lice_vers);
+        break;
+    case 2:
+        break;
+    default:
+        break;
+    }
+    return true;
+}
+
+function lice_confirm(val)
+{
+    if (val == 1) {
+        return (window.confirm(mlang_commons['lic_refu'][g_lang]));
+    }
+
+    return true;
+}
+
 /*
   function slowimg(img,x1,y1,deltat,free,action,srcend)
   img    - image to move
@@ -613,14 +648,25 @@ function div_show(div)
     div.style.visibility = "visible";
 }
 
-function notify_document(st, text, tout, butt, w, h, is_opa, block_time)
+/*
+  st
+  text
+  tout: if < 0 => infinite
+  butt: [ strings ]
+  w:
+  h:
+  is_opa:
+  block_time:
+  */
+
+function notify_document(st, text, tout, butt, confirm_func, w, h, is_opa, block_time)
 {
-    var clo, clodiv_ctx, clodiv_wai, box;
-    var i, t = this;
+    var i, clo, clodiv_ctx, clodiv_wai, box;
 
     this.st = st;
 
     this.ancestor = document.body;
+    this.confirm_func = confirm_func;
 
     this.st.st_loc_new++;
 
@@ -628,108 +674,22 @@ function notify_document(st, text, tout, butt, w, h, is_opa, block_time)
     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);
+        this.input_add(butt[i], i, this.hide, clodiv_ctx);
     }
 
-
-    // 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;
+        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 {
-        clo.value = butt;
-        clo.onclick = this.input_hide;
+        this.clodiv = clodiv_ctx;
     }
 
-    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";
@@ -751,23 +711,20 @@ function notify_document_old(st, text, tout, butt, w, h, is_opa, block_time)
     box.style.height = h+"px";
     box.style.top = parseInt((document.body.clientHeight - h) / 2) + document.body.scrollTop;
     box.appendChild(cont);
-    box.appendChild(clodiv);
+    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 (tout > 0) {
+        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.notitag.removeChild(obj.clodiv); obj.clodiv = obj.clodiv_pkg; obj.clodiv.style.display = '';  obj.notitag.appendChild(obj.clodiv); }, block_time, this);
     }
-    else {
-        formsub_hilite(clo);
-        clo.focus();
-    }
-
 }
 
 notify_document.prototype = {
@@ -776,12 +733,46 @@ notify_document.prototype = {
     notitag: null,
     toutid: null,
     clo: null,
+
     clodiv: null,
+    clodiv_pkg: null,
+
     butt: null,
     tblkid: null,
 
+    confirm_func: null,
+
     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);
@@ -795,9 +786,14 @@ notify_document.prototype = {
        }
     },
 
-    hide: function()
+    hide: function(val)
     {
-        this.ret = 1;
+        if (this.confirm_func != null) {
+            if (this.confirm_func(val) == false) {
+                return false;
+            }
+        }
+        this.ret = val;
        clearTimeout(this.toutid);
        this.ancestor.removeChild(this.notitag);
        this.unblock();
@@ -829,7 +825,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");
@@ -870,7 +866,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);
@@ -902,13 +898,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();
     }
 }