2025-04-15 12:10:19 +02:00

790 lines
27 KiB
JavaScript

// JScript File
function SetAllCheckBoxes(FormName, FieldName, CheckValue) {
if (!document.forms[FormName])
return;
var objCheckBoxes = document.forms[FormName].elements[FieldName];
if (!objCheckBoxes)
return;
var countCheckBoxes = objCheckBoxes.length;
if (!countCheckBoxes)
objCheckBoxes.checked = CheckValue;
else
// set the check value for all check boxes
for (var i = 0; i < countCheckBoxes; i++)
objCheckBoxes[i].checked = CheckValue;
}
function check_all_in_document(doc) {
var hiddenfield = document.getElementById("HiddenFieldSezioni");
hiddenfield.value = "";
var c = new Array();
c = doc.getElementsByTagName('input');
for (var i = 0; i < c.length; i++) {
if (c[i].type == 'checkbox') {
if (c[i].checked == true && c[i].getAttribute('tipo') == 'SEZIONI')
hiddenfield.value += c[i].id + "|";
}
else {
if (c[i].type == 'radio' && c[i].getAttribute('tipo') == 'SEZIONI') {
if (c[i].checked == true)
hiddenfield.value += c[i].id + "|";
}
}
}
}
function check_all_in_document_stampa(doc) {
check_all_in_document(doc);
var hiddenfield = document.getElementById("HiddenFieldStampa");
hiddenfield.value = "";
var c = new Array();
c = doc.getElementsByTagName('input');
for (var i = 0; i < c.length; i++) {
if (c[i].type == 'checkbox') {
if (c[i].checked == true && c[i].getAttribute('tipo') == 'SEZIONI' && c[i].getAttribute('issectionprinting') == 'true')
hiddenfield.value += c[i].id + "|";
}
else {
if (c[i].type == 'radio' && c[i].getAttribute('tipo') == 'SEZIONI' && c[i].getAttribute('issectionprinting') == 'true') {
if (c[i].checked == true)
hiddenfield.value += c[i].id + "|";
}
}
}
}
function goDeeperUnChecked(obj) {
var chk1 = false;
//Prendo il padre
var head1 = obj.parentNode.previousSibling;
//Se non ci sono righe esci
if (obj.rows != null) {
//Numero di righe al livello attuale
var pTreeLevel1 = obj.rows[0].cells.length;
//Controllo se è un padre
if (head1.tagName == "TABLE") {
var tbls = obj.parentNode.getElementsByTagName("TABLE");
var tblsCount = tbls.length;
//Controllo se qualche figlio è non ceccato
for (i = 0; i < tblsCount; i++) {
var childTreeLevel = tbls[i].rows[0].cells.length;
if (childTreeLevel == pTreeLevel1) {
var chld = tbls[i].getElementsByTagName("INPUT");
if (chld[0].checked == true) {
chk1 = true;
break;
}
}
}
var nd = head1.getElementsByTagName("INPUT");
if (nd.length > 0) {
nd[0].checked = chk1;
}
goDeeperUnChecked(obj.parentNode.previousSibling);
}
}
return;
}
function disableOtherRadio(obj) {
var treeNode = obj;
var nomeGruppo = treeNode.name;
//Risaliamo l'albero fino al padre
do {
obj = obj.parentNode;
}
while (obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
//prendiamo tutti i nodi nel treeview
var tables = obj.parentNode.getElementsByTagName("TABLE");
//per ogni nodo controlliamo se è checked o unchecked
if (obj.tagName == "TABLE") {
//numero di nodi totali
var numTables = tables.length
if (numTables >= 1) {
//cicliamo su tutti i nodi fino a quando non troviamo il nodo che ha scatenato l'evento
for (i = 0; i < numTables; i++) {
if (tables[i] == obj) {
gruppoRadio = false;
i++;
if (i == numTables) {
//se siamo sull'ultimo nodo abbiamo finito
break;
}
}
else {
//CONTROLLO SE TROVO UN RADIO DA DISABILITARE
var TreeLevel = tables[i].rows[0].cells.length;
var cell = tables[i].rows[0].cells[TreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
if (inputs[0].name == nomeGruppo) {
gruppoRadio = true;
}
}
if (gruppoRadio == true) {
var TreeLevel = tables[i].rows[0].cells.length;
var cell = tables[i].rows[0].cells[TreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
//Deseleziono i nodi figlio
inputs[0].checked = false;
}
} //end for
} //end if - numTables >= 1
} //end if - tagName = TABLE
}
function goDeeper(obj) {
//prendiamo il padre del nodo attuale
var head = obj.parentNode.previousSibling;
var head_rbckb = obj.parentNode.parentNode.getElementsByTagName("INPUT")[0];
var namerbckb;
var namerbckb_1;
if (head.tagName == "TABLE") {
//recuperiamo il checkbox
var matchElement = head.getElementsByTagName("INPUT");
if (matchElement.length > 0) {
// Gestione CHeckbox Radio Button
//*******************************
if (head_rbckb != null)
if (head_rbckb.name != null && head_rbckb.name != "") {
if (matchElement[0].name != null && matchElement[0].name != "") {
namerbckb = matchElement[0].name.substring(0, matchElement[0].name.lastIndexOf('_') + 1);
namerbckb_1 = head_rbckb.name.substring(0, head_rbckb.name.lastIndexOf('_') + 1);
if (namerbckb == namerbckb_1)
if (head_rbckb.checked)
head_rbckb.checked = false;
}
}
//*******************************
// else
matchElement[0].checked = true;
}
if (matchElement[0].type == "radio") {
disableOtherRadio(matchElement[0]);
}
}
else {
head = obj.parentNode.previousSibling;
}
if (head.tagName == "TABLE") {
goDeeper(obj.parentNode);
}
else {
return;
}
}
//Cambia l'immagine del bottne per la funzionalità ascpandi chiudi del nodo radice
function buttonExpandCollapse(obj) {
if (obj.state == "close") {
//Mettere path relativa
obj.src = "images/arrowDown.png";
obj.state = "open";
}
else {
//Mettere path relativa
obj.src = "images/arrowRight.png";
obj.state = "close";
}
}
function treeViewCheck(obj) {
// prendiamo il nodo che ha scatenato l'evento
// var obj = (typeof event !== 'undefined') ? event.srcElement : e.target;
var treeNodeFound = false;
var gruppoRadio = false;
var firstRadioFound = false;
var numberRadioFound = 1;
var nameRadioGroup;
var parentNodeFound = false;
var checkedState;
// versato netto utile perdita - Marco I. - per gestione radiobutton figli
var childRadioChecked = false;
//distinguiamo tra checkbox e radiobutton SARA' UTILE ????
if (obj.tagName == "INPUT" && obj.type == "checkbox") {
var treeNode = obj;
checkedState = obj.checked;
//Risaliamo l'albero fino alla root
while (obj.tagName != "TABLE") {
obj = obj.parentNode;
}
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
//prendiamo tutti i nodi nel treeview
var tables = obj.parentNode.getElementsByTagName("TABLE");
//per ogni nodo controlliamo se è checked o unchecked
if (obj.tagName == "TABLE") {
// se un nodo è checked mettiamo a checked tutti i suoi padri
if (treeNode.checked) {
goDeeper(obj);
} //end if - checked
//numero di nodi totali
var numTables = tables.length
if (numTables >= 1) {
//cicliamo su tutti i nodi fino a quando non troviamo il nodo che ha scatenato l'evento
for (i = 0; i < numTables; i++) {
if (tables[i] == obj) {
treeNodeFound = true;
i++;
if (i == numTables) {
//se siamo sull'ultimo nodo abbiamo finito
break;
}
}
/*
Gestione checkbox radio button
*******************************/
if (treeNode.name != null && treeNode.name != "") {
// Ricerco un item con lo stesso valore name
uncheckOthers(treeNode);
}
/*
******************************
*/
if (treeNodeFound == true) {
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel) {
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
//settiamo i checkbox allo stato attuale
var inputs = cell.getElementsByTagName("INPUT");
var head = tables[i].parentNode.previousSibling;
var matchElement = head.getElementsByTagName("INPUT");
//Se è un radiobutton e non è checked non setto i figli (PROBLEMA I RADIO VENGONO SETTATI TUTTI)
if (matchElement[0].type != "radio" || matchElement[0].checked || !checkedState) {
//Viene settato solo il primo radiobutton del gruppo
if ((inputs[0].type != "radio" || !firstRadioFound || inputs[0].name != nameRadioGroup || !checkedState) && !inputs[0].disabled)
if ((inputs[0].nocheckbyparent == '1' && parentTreeLevel == 2) || !matchElement[0].checked) // || !matchElement[0].checked - Marco I. - non considera i radio se l'elemento padre non è checked
inputs[0].checked = false;
else
inputs[0].checked = checkedState;
}
if (inputs[0].type == "radio") {
nameRadioGroup = inputs[0].name;
if (numberRadioFound > 1) {
firstRadioFound = true;
numberRadioFound = 1;
}
else
numberRadioFound = numberRadioFound + 1;
}
}
else {
break;
/*
// gestione radiobutton figli - Marco I.
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
if (inputs[0].type == "radio" && !childRadioChecked && !inputs[0].disabled) {
inputs[0].checked = checkedState;
childRadioChecked = true;
}
else if (tables[i].nextSibling) {
cell = tables[i].nextSibling;
if (cell) {
var child = cell.nextSibling;
inputs = child ? child.getElementsByTagName("INPUT") : cell.getElementsByTagName("INPUT")
if (inputs[0].type == "radio" && !childRadioChecked && !inputs[0].disabled) {
inputs[0].checked = checkedState;
childRadioChecked = true;
}
else
break;
}
}
else
//se non ci sono nodi figlio esco
break;
*/
}
} //end if
} //end for
} //end if - numTables >= 1
//Se tutti i figli sono unchecked anche il padre deve essere unchecked
if (!treeNode.checked && treeNode.noparentbehaviour == 'false') {
goDeeperUnChecked(obj);
} //end if - unChecked
} //end if - tagName = TABLE
if (treeNode.id == "62") {
if (treeNode.checked == true) {
abilitaApprofondimentoRischio();
elem291 = document.getElementById('291');
elem291.checked = true;
elem293 = document.getElementById('293');
elem293.checked = true;
elem294 = document.getElementById('294');
elem294.checked = true;
elem295 = document.getElementById('295');
elem295.checked = true;
abilitaApprofondimentoPerimetro();
} else {
defaultAnalisiRischio();
}
}
if (treeNode.id == "63") {
if (treeNode.checked == true) {
abilitaApprofondimentoRischio();
elem291 = document.getElementById('291');
elem291.checked = true;
} else {
disabilitaApprofondimentoRischio();
if (!treeNode.checked && treeNode.noparentbehaviour == 'false') {
goDeeperUnChecked(obj);
} //end if - unChecked
}
}
if (treeNode.id == "294" || treeNode.id == "295" || treeNode.id == "293") {
if (treeNode.checked == true) {
abilitaApprofondimentoPerimetro();
} else {
//Ho deselezionato il padre allora deseleziono sicuramente tutti i figli
if (treeNode.id == "293") {
disabilitaApprofondimentoPerimetro();
} else if (treeNode.id == "294") {
//Ho deselezionato il 294 allora controllo che anche il 295 sia deselezionato
if (document.getElementById('295').checked == false)
// il 294 e il 295 sono disabilitati allora disabilito tutto
disabilitaApprofondimentoPerimetro();
} else {
//Ho deselezionato il 295 allora controllo che anche il 294 sia deselezionato
if (document.getElementById('294').checked == false)
// il 294 e il 295 sono disabilitati allora disabilito tutto
disabilitaApprofondimentoPerimetro();
}
}
}
} //end if
//CASO RadioButton
if (obj.tagName == "INPUT" && obj.type == "radio") {
var treeNode = obj;
checkedState = treeNode.checked;
var nomeGruppo = treeNode.name;
//Risaliamo l'albero fino alla root
do {
obj = obj.parentNode;
}
while (obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
//prendiamo tutti i nodi nel treeview
var tables = obj.parentNode.getElementsByTagName("TABLE");
//per ogni nodo controlliamo se è checked o unchecked
if (obj.tagName == "TABLE") {
// se un nodo è checked mettiamo a checked tutti i suoi padri
if (treeNode.checked) {
goDeeper(obj);
} //end if - checked
//numero di nodi totali
var numTables = tables.length
if (numTables >= 1) {
//cicliamo su tutti i nodi fino a quando non troviamo il nodo che ha scatenato l'evento
for (i = 0; i < numTables; i++) {
if (tables[i] == obj) {
treeNodeFound = true;
gruppoRadio = false;
i++;
if (i == numTables) {
//se siamo sull'ultimo nodo abbiamo finito
break;
}
}
else {
//CONTROLLO SE TROVO UN RADIO DA DISABILITARE
var TreeLevel = tables[i].rows[0].cells.length;
var cell = tables[i].rows[0].cells[TreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
if (inputs[0].name == nomeGruppo) {
gruppoRadio = true;
}
}
if (treeNodeFound == true) {
if (tables[i] != obj && tables[i].type == "radio")
treeNodeFound = false;
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel) {
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
//settiamo i checkbox allo stato attuale
var inputs = cell.getElementsByTagName("INPUT");
//Solo i nodi figlio
if (tables[i].parentNode.previousSibling == obj && !inputs[0].disabled)
inputs[0].checked = checkedState;
}
else // gestione radiobutton figli - Marco I.
{
var nextRadio = tables[i].parentNode.nextSibling;
if (nextRadio) {
var inputs = nextRadio.getElementsByTagName("INPUT");
if (nextRadio.previousSibling == obj.parentNode && inputs[0].type == "radio" && !inputs[0].disabled)
inputs[0].checked = checkedState;
}
}
} //end if
if (gruppoRadio == true) {
// Marco I.
if (tables[i].nextSibling == obj) {
var cell = tables[i].parentNode.nextSibling;
if (cell) {
var inputs = cell.getElementsByTagName("INPUT");
if (inputs[0].type == "radio")
inputs[0].checked = true;
}
}
else {
var TreeLevel = tables[i].rows[0].cells.length;
var cell = tables[i].rows[0].cells[TreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
//Deseleziono i nodi figlio
inputs[0].checked = false;
}
}
} //end for
} //end if - numTables >= 1
//Se tutti i figli sono unchecked anche il padre è unchecked
if (!treeNode.checked && treeNode.noparentbehaviour == 'false') {
goDeeperUnChecked(obj);
} //end if - unChecked
} //end if - tagName = TABLE
if (treeNode.id == "291" || treeNode.id == "292") {
abilitaApprofondimentoRischio();
}
} //end if
max2check();
max3checkTerzi();
gestisciRaggruppamentoTerzi();
isCheckPerimetro();
}
function uncheckOthers(obj) {
var objparentNode = obj.parentNode.previousSibling;
var name = obj.name;
var checked = obj.checked;
var elements = document.getElementsByTagName('input');
var checked = false;
var namefirst = "";
var namesecond = "";
var number;
// loop through all input elements in form
for (var i = 0; i < elements.length; i++) {
namefirst = elements.item(i).name;
namesecond = name;
if (elements.item(i).type == "checkbox") {
namefirst = namefirst.substring(0, namefirst.lastIndexOf('_'));
namesecond = namesecond.substring(0, namesecond.lastIndexOf('_'));
if (namefirst == namesecond && namefirst != '' && namesecond != '' && elements.item(i).checked && obj.id != elements.item(i).id) {
elements.item(i).checked = false;
number = elements.item(i).name.substring(elements.item(i).name.lastIndexOf('_') + 1, elements.item(i).lenght)
}
}
if (elements.item(i).type == "radio") {
namesecond = namesecond.substring(0, namesecond.lastIndexOf('_'));
if (namefirst == namesecond && obj.id != elements.item(i).id && number == 2) {
if (elements.item(i).checked == true)
elements.item(i).checked = false;
}
}
// else if (elements.item(i).type == "radio")
// {
// if(elements.item(i).name == name && elements.item(i).checked && obj.id!=elements.item(i).id)
// {
// elements.item(i).checked = false;
// goDeeperUnChecked(elements.item(i));
// }
// }
}
}
//e da la possibilità di scegliere un massimo di 2 selezioni tra le possibili sezioni.
function max2check() {
arraySelezionabili = new Array('284', '184', '286', '287');
var maxElements = arraySelezionabili.length;
var elemcheck = 0;
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
if (document.getElementById(arraySelezionabili[j]).checked == true)
elemcheck = elemcheck + 1;
}
if (elemcheck == 2) { //Disabilito quelli che non sono stati selezionati, in modo da bloccare possibili altre selezioni
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
if (document.getElementById(arraySelezionabili[j]).checked == false)
document.getElementById(arraySelezionabili[j]).disabled = true;
}
} else if (elemcheck < 2) { // Abilito tutti gli elementi, perche sono tutti selezionabili
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
document.getElementById(arraySelezionabili[j]).disabled = false;
}
} /* else if (elemcheck > 3) { //Disabilito e deseleziono gli ultimi elementi (fissi) in modo da avere sempre massimo 3 selezioni.
var elem248 = document.getElementById('286');
var elem249 = document.getElementById('287');
elem248.checked = false;
elem248.disabled = true;
elem249.checked = false;
elem249.disabled = true;
}*/
}
function isCheckPerimetro() {
elem297 = document.getElementById('297');
elem298 = document.getElementById('298');
elem299 = document.getElementById('299');
if (elem297.checked == false && elem298.checked == false && elem299.checked == false) {
elem293 = document.getElementById('293');
elem293.checked = false;
elem294 = document.getElementById('294');
elem294.checked = false;
elem295 = document.getElementById('295');
elem295.checked = false;
disabilitaApprofondimentoPerimetro();
}
}
function defaultAnalisiRischio() {
/* elem293 = document.getElementById('293');
elem293.checked = false;
elem293.disabled = true;
elem294 = document.getElementById('294');
elem294.checked = false;
elem294.disabled = true;
elem295 = document.getElementById('295');
elem295.checked = false;
elem295.disabled = true; */
/* Disabilita2GraficiRischio();*/
disabilitaApprofondimentoPerimetro();
}
function disabilitaApprofondimentoRischio() {
elem293 = document.getElementById('293');
elem293.checked = false;
elem293.disabled = true;
elem294 = document.getElementById('294');
elem294.checked = false;
elem294.disabled = true;
elem295 = document.getElementById('295');
elem295.checked = false;
elem295.disabled = true;
defaultAnalisiRischio();
}
function abilitaApprofondimentoRischio() {
elem293 = document.getElementById('293');
elem293.disabled = false;
elem294 = document.getElementById('294');
elem294.disabled = false;
elem295 = document.getElementById('295');
elem295.disabled = false;
}
function abilitaApprofondimentoPerimetro() {
elem297 = document.getElementById('297');
elem297.checked = true;
elem297.disabled = false;
elem298 = document.getElementById('298');
elem298.checked = true;
elem298.disabled = false;
elem299 = document.getElementById('299');
elem299.checked = true;
elem299.disabled = false;
}
function disabilitaApprofondimentoPerimetro() {
elem297 = document.getElementById('297');
elem297.checked = false;
elem297.disabled = true;
elem298 = document.getElementById('298');
elem298.checked = false;
elem298.disabled = true;
elem299 = document.getElementById('299');
elem299.checked = false;
elem299.disabled = true;
}
/*function Disabilita2GraficiRischio() {
var element292 = document.getElementById('292');
if (element292 != null) {
element292.disabled = true;
element292.checked = false;
}
}*/
function gestisciRaggruppamentoTerzi() {
elem59 = document.getElementById('59');
elem60 = document.getElementById('60');
elem61 = document.getElementById('61');
if (elem59.checked == true) {
if (elem60.checked || elem61.checked) {
//non fa niente
} else {
//nessuno dei 2 è selezionato.
elem60.checked = true;
}
} else {
elem60.checked = false;
elem61.checked = false;
}
}
function max3checkTerzi() {
arraySelezionabili = new Array('288', '289', '290', '300');
var maxElements = arraySelezionabili.length;
var elemcheck = 0;
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
if (document.getElementById(arraySelezionabili[j]).checked == true)
elemcheck = elemcheck + 1;
}
if (elemcheck == 3) { //Disabilito quelli che non sono stati selezionati, in modo da bloccare possibili altre selezioni
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
if (document.getElementById(arraySelezionabili[j]).checked == false)
document.getElementById(arraySelezionabili[j]).disabled = true;
}
} else if (elemcheck < 3) { // Abilito tutti gli elementi, perche sono tutti selezionabili
for (j = 0; j <= arraySelezionabili.length - 1; j = j + 1) {
document.getElementById(arraySelezionabili[j]).disabled = false;
}
} else if (elemcheck > 3) { //Disabilito e deseleziono gli ultimi elementi (fissi) in modo da avere sempre massimo 3 selezioni.
var elem300 = document.getElementById('300');
elem300.checked = false;
elem300.disabled = true;
document.getElementById('60').checked = true;
document.getElementById('61').checked = false;
}
}