PageSourceSearch

https://celivo.it/itzeta_master_1.6.js?1791164383

js celivo.it collected 2026-10-05 01:39:59 UTC 54,576 bytes, 1,553 lines download raw bytes

1//----------------------------------------------------------------------------
2// IT ZETA - Raccosta di funzioni in JS riutilizzabili e non personalizzate //
3//----------------------------------------------------------------------------
4// versione: 1.6.23
5// del 03/09/2024
6//
7// - modificata la confirmLink()
8// - modifiche per accessibilità, immagini .png al posto di .gif, alt='' e altro
9// - operativa la ajax_itz_respBodyW, passaggio della larghezza della maschera a php
10// - versione migliorata della addToSelect()
11// - nuova sperimentazione per ajax_itz_respBodyW()
12// - rinnovata la funzione itz_ALTprivacy() con nuova gestione delle preferenze sui cookies
13// - aggiunta della detectPosY(nomeDiv)
14// - aggiunta della ckUserPass()
15// - correzioni sulla formatValutaMil()
16// - aggiunta della compareNumbers()
17// - rivista la formatValutaMil()
18// - eliminazione del document.all
19// - correzione su itzDivUp_Close()
20// - nuova funzione fn_link_tempo()
21// - riviste le funzioni sulla privacy
22// - modifiche sulle itzViewImg() e itzDivIframe()
23// - nuova funzione itzDivIframeWaiting()
24// - nuova funzione classSwitchOBJ()
25// - rivista completamente la itzViewImg() e aggiunte le showObjTop(), hiddenObjTop()
26// - aggiornata la itzDivIframe()
27// - aggiunta una funzione di controllo di un valore in Valuta ckValutaFloat(euro, n_decimali)
28// - aggiunta delle funzioni di check della Partita IVA e Codice Fiscale
29// - nuovo gestore eventi addEvent()
30// - nuova funzione itzDivLabel()
31// - nuova funzione mouseXY()
32// - modificata la stampaPagina()
33// - modifiche sulle itzViewImg() e itzDivIframe()
34// - nuova funzione fn_putAvalue()
35// - rivista la funzione itz_ALTprivacy()
36// - aggiunte le funzioni setCookie() e getCookie()
37// - nuova funzione formChangeValue()
38// - revisione della checkInteger()
39// - aggiunto getHTTPObject() per le funzioni Ajax
40// - aggiornata la ckUserPass()
41//
42
43
44/*
45detect x device:
46if ((navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/webOS/i)) ||
47	(navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i)) ||
48	(navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/mobile/i)) ||
49	(navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/OperaMobi/i)) ||
50	(navigator.userAgent.match(/Opera/i)) || (navigator.userAgent.match(/IEMobile/i)) ||
51	(navigator.userAgent.match(/Jasmine/i)) || (navigator.userAgent.match(/Fennec/i)) ||
52	(navigator.userAgent.match(/Blazer/i)) || (navigator.userAgent.match(/Minimo/i)) ||
53	(navigator.userAgent.match(/MOT-/i)) || (navigator.userAgent.match(/Nokia/i)) ||
54	(navigator.userAgent.match(/SAMSUNG/i)) || (navigator.userAgent.match(/Polaris/i)) ||
55	(navigator.userAgent.match(/LG-/i)) || (navigator.userAgent.match(/SonyEricsson/i)) ||
56	(navigator.userAgent.match(/SIE-/i)) || (navigator.userAgent.match(/AUDIOVOX/i))) {
57
58
59da testare la possibile animazione:
6002 function centra(div){
6103     var DIVwidth = $(div).width();
6204     var DIVheight = $(div).height();
6305     var SCREENwidth = $(document).width();
6406     var SCREENheight = $(window).height();
6507     var SCREENscrolltop = $(window).scrollTop();
6608     $(div).animate({
6709         top: (SCREENheight-DIVheight)/2+SCREENscrolltop+"px",
6810         left: (SCREENwidth-DIVwidth)/2+"px"
6911     },100,function(){
7012         centra(div);
7113     });
7214 }
73<script type='text/javascript'>
74 centra('#box_centrale');
75</script>
76*/
77
78
79function imgOn(imgX) {
80	document.images [imgX].src = eval(imgX + "_r.src");
81}
82
83
84
85function imgOff(imgX) {
86	document.images [imgX].src = eval(imgX + ".src");
87}
88
89
90
91// inverte due immagini una con l'altra e viceversa
92// imgX è il name dell'immagine, imgA e imgB con i due riferimenti image
93function changeViewImg(imgX,imgA,imgB) {
94	if (document.images [imgX].src == eval(imgA + ".src")) {
95		document.images [imgX].src = eval(imgB + ".src");
96	}
97	else {
98		document.images [imgX].src = eval(imgA + ".src");
99	}
100}
101
102
103
104function showObj(tabName) {
105	if (tabName) {
106		document.getElementById(tabName).style.display = "block";
107	}
108}
109
110
111
112function hiddenObj(tabName) {
113	if (tabName) {
114		document.getElementById(tabName).style.display = "none";
115	}
116}
117
118
119
120function showObjTop(tabName) {
121	if (tabName) {
122		window.top.document.getElementById(tabName).style.display = "block";
123	}
124}
125
126
127
128function hiddenObjTop(tabName) {
129	if (tabName) {
130		window.top.document.getElementById(tabName).style.display = "none";
131	}
132}
133
134
135
136// funzione che cambia la visione di un oggetto, showObj e hiddenObj fusi insieme
137// necessita di: style="display: none;" nel codice, altrimenti il settaggio nel css non viene subito visto
138function changeViewObj(tabName) {
139	if (tabName) {
140		if (document.getElementById(tabName).style.display == "none") {
141			document.getElementById(tabName).style.display = "block";
142		}
143		else {
144			document.getElementById(tabName).style.display = "none";
145		}
146	}
147}
148
149
150
151// funzione che permette il cambio della classe di un oggetto dal suo ID
152function cambioClasseID(id,nomeClasse) {
153	if ((id)&&(nomeClasse)) {
154		document.getElementById(id).className = nomeClasse;
155	}
156}
157
158
159
160// funzione che cambia la classe di un oggetto con il suo ID
161function classChangeID(id,class1,class2) {
162	if ((id)&&(class1)&&(class2)) {
163		if (document.getElementById(id).className == class1) {
164			document.getElementById(id).className = class2;
165		}
166		else {
167			document.getElementById(id).className = class1;
168		}
169	}
170}
171
172
173
174// funzione di cambio classe di stile ad un oggetto con il 'this'
175function cambioClasseOBJ(obj,nomeClasse) {
176	if (nomeClasse) {
177		obj.className = nomeClasse;
178	}
179}
180
181
182
183// funzione di switch tra due classi di stile ad un oggetto con il 'this'
184function classSwitchOBJ(obj,class1,class2) {
185	if ((obj)&&(class1)&&(class2)) {
186		if (obj.className == class1) {
187			obj.className = class2;
188		}
189		else {
190			obj.className = class1;
191		}
192	}
193}
194
195
196
197
198// cambia colore di sfondo
199function ColoraSfondo(obj,colore) {
200  obj.style.backgroundColor = '#'+ colore;
201}
202
203
204
205
206// centra nella pagina
207// tipo 1 -> immagine, w e h si riferiscono alla immagine e non al DivUp
208//, 2 iframe, ...
209//	PROGETTO ANCORA IN FASE DI REALIZZO
210function fn_centra_ItzDivUp(tipo, w, h) {
211	// larghezza del div, dipendente dalla larghezza della immagine
212	if ((!w)||(w=='')) {w=800;}
213	if ((!h)||(h=='')) {w=500;}
214	var divW = Number(w);
215	var divH = Number(h);
216	var imgW = divW;
217	var imgH = divH;
218	var rid_img = 0;
219
220	// immagine
221	if (tipo == 1) {
222		divW += 64;
223		divH += 124; // header, footer, padding e bordo
224	}
225	//var maxDivUpW = divW+64; // considerazione del padding e bordo
226	//var maxDivUpH = divH+64;
227
228	// dimensioni dello schermo visibile e dello scroll
229	var WINDOWwidth = $(window.top.document).width(); // larghezza pagina del browser, uguale alla larghezza parte visibile
230	var WINDOWheight = $(window.top.document).height(); // altezza intera pagina del browser
231	var SCREENheight = top.window.innerHeight; // altezza della parte visibile del browser
232	var SCREENscrolltop = $(window.top.document).scrollTop(); // scroll della pagina top del browser
233
234	// in modalità compatibilità di windows
235	if (isNaN(SCREENheight)) {
236		SCREENheight = $(window).height();
237		var flagCompatibilitaIE = 1;
238	}
239	else {
240		var flagCompatibilitaIE = 0;
241	}
242
243	// schermo piccolo, ridimensionare il DivUp
244	// check dimensioni massime della finestra rispetto allo schermo
245	var rifDivW = Number(WINDOWwidth) - 20; // margine e possibile barra di scorrimento
246	if (divW > rifDivW) {
247		divW = rifDivW;
248		imgW = divW-64;
249		rid_img = 1;
250	}
251
252	var rifDivH = Number(SCREENheight);
253	if (divH > rifDivH) {
254		divH = rifDivH;
255		rid_img = 1;
256	}
257
258
259/*
260	// altezza totale del div in caso di schermi ridotti
261	if (rid_img) {
262		if (WINDOWheight > maxDivUpH) {
263			var maxBackDiv = WINDOWheight;
264			divH = "auto";
265		}
266		else {var maxBackDiv = maxDivUpH;}
267
268		// gestione della dimensione della larghezza
269		if (maxDivUpW < divW) {divW = "auto";}
270	}
271
272	if (divW != "auto") {divW = divW + "px";}
273	if (divH != "auto") {divH = divH + "px";}
274
275	// posizionamento verticale al centro
276	// il SCREENscrolltop entra in azione solo quando la finestra � pi� piccola del divup e quindi v� posizionata con l'aiuto dello scroll
277	var topDiv = ((SCREENheight - maxDivUpH)/2);
278	if ((topDiv<0)||(rid_img)) {topDiv = SCREENscrolltop;}
279*/
280
281
282
283//alert("divW "+ divW + " . divH "+ divH +" . WINDOWwidth "+ WINDOWwidth +" . WINDOWheight "+ WINDOWheight +" . SCREENwidth "+ SCREENwidth +" . SCREENheight "+ SCREENheight +" . SCREENscrolltop "+ SCREENscrolltop);
284alert("WINDOWwidth "+ WINDOWwidth +" . WINDOWheight "+ WINDOWheight +" . SCREENheight "+ SCREENheight +" . SCREENscrolltop "+ SCREENscrolltop);
285
286
287}
288
289
290
291
292
293
294// Funzione di vedi immagine grande in div | ver.1.14 del 11/10/2018
295// copyright IT Zeta srl - Alessandro Zumiani
296// ultima versione con nuova gestione delle dimensioni di visione
297// modificato per permettere le immagini con didascalia e link sulla foto
298// ultima integrazione: il link della foto (comprensivo di href e addOn aggiuntivi), codice addOn per l'immagine
299// ultima integrazione: il controllo per la versione compatibilità di explorer
300// richiede le classi CSS: DIV-POPUP 1.14
301// richiede il file: js/jquery-1.11.1.min.js o successivo | per la posizione al centro
302// ATTENZIONE: nella pagina DEVE ESSERCI il metatag: <meta name="viewport" content="width=device-width, maximum-scale=1.0, minimum-scale=1.0">
303var nomeItzDivUp = "itzDivUp";
304function itzViewImg(img,w,h,testo,addImg,link,nomeDiv,itzViewImg_session_name) {
305	// nome del div che sostituisce i popup
306	if ((!nomeDiv)&&(nomeItzDivUp)) {nomeDiv = nomeItzDivUp;}
307	else if (!nomeDiv) {nomeDiv = "itzDivUp";}
308	var rid_img = 0;
309
310	//array_posXY = fn_centra_ItzDivUp(w,h);
311
312	// larghezza del div, dipendente dalla larghezza della immagine
313	if ((!w)||(w=='')) {w=800;}
314	if ((!h)||(h=='')) {w=500;}
315	var imgW = Number(w);
316	var imgH = Number(h);
317	var divW = imgW;
318	var divH = imgH + 60; // header e footer
319	var maxDivUpW = divW+64; // considerazione del padding e bordo
320	var maxDivUpH = divH+64;
321	if (testo) {maxDivUpH += 20;} // in caso di didascalia aumenta la massima altezza
322
323	// dimensioni dello schermo visibile e dello scroll
324	var WINDOWwidth = $(window.top.document).width(); // larghezza pagina del browser, uguale alla larghezza parte visibile
325	var WINDOWheight = $(window.top.document).height(); // altezza intera pagina del browser
326	var SCREENheight = top.window.innerHeight; // altezza della parte visibile del browser
327	var SCREENscrolltop = $(window.top.document).scrollTop(); // scroll della pagina top del browser
328
329	// in modalit� compatibilit� di windows
330	if (isNaN(SCREENheight)) {
331		SCREENheight = $(window).height();
332		var flagCompatibilitaIE = 1;
333	}
334	else {
335		var flagCompatibilitaIE = 0;
336	}
337
338	// check dimensioni massime della finestra rispetto allo schermo
339	var rifDivW = Number(WINDOWwidth) - 20; // margine e possibile barra di scorrimento
340	if (maxDivUpW>rifDivW) {
341		maxDivUpW = rifDivW;
342		imgW = maxDivUpW-64;
343		rid_img = 1;
344	}
345
346	var rifDivH = Number(SCREENheight);
347	if (maxDivUpH>rifDivH) {
348		rid_img = 1;
349	}
350
351	// altezza totale del div in caso di schermi ridotti
352	if (rid_img) {
353		if (WINDOWheight > maxDivUpH) {
354			var maxBackDiv = WINDOWheight;
355			divH = "auto";
356		}
357		else {var maxBackDiv = maxDivUpH;}
358
359		// gestione della dimensione della larghezza
360		if (maxDivUpW < divW) {divW = "auto";}
361	}
362
363	if (divW != "auto") {divW = divW + "px";}
364	if (divH != "auto") {divH = divH + "px";}
365
366	// posizionamento verticale al centro
367	// il SCREENscrolltop entra in azione solo quando la finestra � pi� piccola del divup e quindi v� posizionata con l'aiuto dello scroll
368	var topDiv = ((SCREENheight - maxDivUpH)/2);
369
370	//alert("topDiv "+ topDiv +" . SCREENheight "+ SCREENheight +" . maxDivUpH "+ maxDivUpH);
371
372	if ((topDiv<0)||(rid_img)) {topDiv = SCREENscrolltop;}
373	//alert("topDiv "+ topDiv +" . SCREENscrolltop "+ SCREENscrolltop);
374	//topDiv = 0;
375
376//alert("divW "+ divW + " . divH "+ divH +" . topDiv "+ topDiv +" . SCREENheight "+ SCREENheight +" . maxDivUpH "+ maxDivUpH);
377
378	// in caso di sessione di elenco di immagini, per attivare il passaggio a img precedenti e successive
379	var codice_img_prev = '';
380	var codice_img_next = '';
381	itzViewImg_session = new Array();
382	if (itzViewImg_session_name) {
383		itzViewImg_session = eval(itzViewImg_session_name + "_img");
384		itzViewImg_session_w = eval(itzViewImg_session_name + "_w");
385		itzViewImg_session_h = eval(itzViewImg_session_name + "_h");
386
387		// ciclo il vettore della sessione per trovare la img attuale e le eventuali precedente e successiva
388		for (var i=0; i<itzViewImg_session.length; i++) {
389			if (itzViewImg_session[i] == img) {
390				if (i) {
391					codice_img_prev = "<div class='itzViewImg_left' onClick='itzViewImg(\""+ itzViewImg_session[i-1] +"\","+ itzViewImg_session_w[i-1] +","+ itzViewImg_session_h[i-1] +",\"\",\""+ addImg +"\",\"\",\"\",\""+ itzViewImg_session_name +"\")'></div>";
392				}
393				if (i < itzViewImg_session.length-1) {
394					codice_img_next = "<div class='itzViewImg_right' onClick='itzViewImg(\""+ itzViewImg_session[i+1] +"\","+ itzViewImg_session_w[i+1] +","+ itzViewImg_session_h[i+1] +",\"\",\""+ addImg +"\",\"\",\"\",\""+ itzViewImg_session_name +"\")'></div>";
395				}
396			}
397		}
398	}
399
400	// testo da inserire nel div
401	var codice = "<div id='itzViewImgContent' style='width:"+ divW +";  min-height:"+ divH +"; top:"+ topDiv +"px;'>";
402	codice += "<div style='text-align: right; border-bottom: #999999 1px solid; margin-bottom: 10px;'><a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv +"\")' class='itzDivUp_link'><b>chiudi</b> <img src='images/ico_exit.png' width='16' height='16' alt='exit'></a></div>";
403	codice += "<div>";
404	if (codice_img_prev) {codice += codice_img_prev;}
405	if (codice_img_next) {codice += codice_img_next;}
406	var codice_img = "<img src='"+ img +"' width='"+ imgW +"' border='0' ";
407	if (addImg) {codice_img += addImg;}
408	codice_img += ">";
409	if (link) {codice += "<a "+ link +">"+ codice_img +"</a>";}
410	else {codice += codice_img;}
411	codice += "</div>";
412	if (testo) {codice += "<div style='text-align: center; margin-top: 10px;'>"+ testo +"</div>";}
413	codice += "<div style='text-align: right; border-bottom: #999999 1px solid; margin-top: 10px;'><a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv +"\")' class='itzDivUp_link'><b>chiudi</b></a></div>";
414	codice += "</div><div id='itzDivUp_clickClose' onClick='itzDivUp_Close(\""+ nomeDiv + "\")'></div>";
415
416	window.top.document.getElementById(nomeDiv).style.display = 'block';
417	window.top.document.getElementById(nomeDiv).innerHTML = codice;
418	if (rid_img) {
419		// quando la finestra � pi� piccola del divup � necessario farla scorrere
420		window.top.document.getElementById(nomeDiv).style.position = 'absolute';
421		window.top.document.getElementById(nomeDiv).style.height = maxBackDiv + 'px';
422	}
423	else {
424		window.top.document.getElementById(nomeDiv).style.position = 'fixed';
425		window.top.document.getElementById(nomeDiv).style.height = '100%';
426	}
427	if (flagCompatibilitaIE) {
428		window.top.document.getElementById(nomeDiv).style.background = '#222222';
429	}
430}
431
432
433
434
435
436// Funzione di visione di dati in un iframe dentro il div centrale | ver.1.9 del 23/04/2018
437// copyright IT Zeta srl - Alessandro Zumiani
438// parametri: stampa-> presenza bottone stampa 0/1
439// richiede le classi CSS: DIV-POPUP 1.11
440// richiede il file: js/jquery-1.11.1.min.js o successivo | per la posizione al centro
441function itzDivIframe(w,h,url,nomeDiv,stampa,link_chiudi,minW,minH) {
442	// nome del div che sostituisce i popup
443	if ((!nomeDiv)&&(nomeItzDivUp)) {nomeDiv = nomeItzDivUp;}
444	else if (!nomeDiv) {nomeDiv = "itzDivUp";}
445
446	// larghezza del div, dipendente dalla larghezza della immagine
447	if ((!w)||(w=='')) {w=800;}
448	if ((!h)||(h=='')) {h=600;}
449	var divW = Number(w);
450	var divH = Number(h);
451
452	// dimensioni dello schermo visibile e dello scroll
453	var WINDOWwidth = $(window.top.document).width(); // larghezza pagina del browser, uguale alla larghezza parte visibile
454	var WINDOWheight = $(window.top.document).height(); // altezza intera pagina del browser
455	var SCREENheight = top.window.innerHeight; // altezza della parte visibile del browser
456	var SCREENscrolltop = $(window.top.document).scrollTop(); // scroll della pagina top del browser
457
458	// in modalit� compatibilit� di windows
459	if (isNaN(SCREENheight)) {
460		SCREENheight = $(window).height();
461		var flagCompatibilitaIE = 1;
462	}
463	else {
464		var flagCompatibilitaIE = 0;
465	}
466
467	// check dimensioni massime della finestra rispetto allo schermo, per le immagini la altezza non mi aggiusta
468	var rifDivW = Number(WINDOWwidth)-60;
469	if (divW > rifDivW) {divW = rifDivW;}
470	var rifDivH = Number(SCREENheight)-64;
471	if (divH > rifDivH) {divH = rifDivH;}
472
473	// posizionamento al centro
474	var topDiv = ((SCREENheight - divH)/2) - 32;
475	if (topDiv < 0) {topDiv = 0;}
476	//else {topDiv = SCREENscrolltop;} nel momento in cui itzDivUp � fixed, allora non serve pi�
477
478	// altezza dello sfondo scuro sotto
479	if (SCREENheight > WINDOWheight) {var backDiv = SCREENheight;}
480	else {var backDiv = WINDOWheight;}
481
482//alert("SCREENwidth "+ SCREENwidth +" . SCREENheight "+ SCREENheight +" . WINDOWheight "+ WINDOWheight +" . FULLheight "+ FULLheight);
483//alert("divW "+ divW + " . divH "+ divH +" . topDiv "+ topDiv);
484
485	// testo da inserire nel div
486	var iframeH = divH-40; // altezza del frame all'interno
487	var codice = "<div id='itzDivContent' style='width: "+ divW +"px; height: "+ divH +"px; top:"+ topDiv +"px;'>";
488	codice += "<div style='width: "+ divW +"px; text-align: right; border-bottom: #999999 1px solid; margin-bottom: 10px;'><a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv + "\", \""+ link_chiudi +"\")' class='itzDivUp_link'><b>chiudi</b> <img src='images/ico_exit.png' width='16' height='16' alt='exit'></a></div>";
489	codice += "<div id='itzDivIframeInt'><iframe style='border: #777777 1px solid;' width='100%' height='"+ iframeH +"' src='"+ url +"' name='frameDiv' marginwidth='0' marginheight='0' hspace='0' vspace='0' frameborder='0' align='center' scrolling='auto'>&nbsp;</iframe></div>";
490	codice += "<div style='width: "+ divW +"px; text-align: right; border-bottom: #999999 1px solid; margin-top: 10px;'>";
491	if (stampa==1) {codice += "<a href='javascript:stampaPagina(\"\",\""+ url +"\")' class='itzDivUp_link'>stampa</a> &nbsp;";}
492	codice += "<a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv + "\", \""+ link_chiudi +"\")' class='itzDivUp_link'><b>chiudi</b></a></div></div><div id='itzDivUp_clickClose'></div>";
493
494	window.top.document.getElementById(nomeDiv).style.position = 'fixed';
495	window.top.document.getElementById(nomeDiv).style.height = '100%';
496	window.top.document.getElementById(nomeDiv).style.display = 'block';
497	window.top.document.getElementById(nomeDiv).innerHTML = codice;
498	if (flagCompatibilitaIE) {
499		window.top.document.getElementById(nomeDiv).style.background = '#222222';
500	}
501}
502
503
504
505
506
507
508
509// Funzione di visione del iframe con il messaggio di attesa precaricato nel div apposito | ver.1.1 del 11/04/2018
510// copyright � IT Zeta srl - Alessandro Zumiani
511// richiede le classi CSS: DIV-POPUP 1.11
512// richiede il file: js/jquery-1.11.1.min.js o successivo | per la posizione al centro
513function itzDivIframeWaiting(w,h) {
514	// nome del div
515	nomeDiv = "itzDivUp_waiting";
516
517	// larghezza del div, dipendente dalla larghezza della immagine
518	if ((!w)||(w=='')) {w=800;}
519	if ((!h)||(h=='')) {h=600;}
520	var divW = Number(w);
521	var divH = Number(h);
522
523	// dimensioni dello schermo visibile e dello scroll
524	var SCREENwidth = $(window.top.document).width();
525	var SCREENheight = $(window.top.document).height();
526	var WINDOWheight = $(window.top.document).height();
527//	var SCREENscrolltop = $(window).scrollTop();
528	var FULLheight = top.window.innerHeight; //Number(window.top.document.body.offsetHeight)+40;
529
530	// in modalit� compatibilit� di windows
531	if (isNaN(FULLheight)) {
532		FULLheight = $(window).height();
533		var flagCompatibilitaIE = 1;
534	}
535	else {
536		var flagCompatibilitaIE = 0;
537	}
538
539	// check dimensioni massime della finestra rispetto allo schermo, per le immagini la altezza non mi aggiusta
540	var rifDivW = Number(SCREENwidth)-60;
541	if (rifDivW<divW) {divW = rifDivW;}
542	var rifDivH = Number(FULLheight)-64;
543	if (rifDivH<divH) {divH = rifDivH;}
544
545	// posizionamento al centro
546	var topDiv = ((FULLheight - divH)/2) - 32;
547	if (topDiv<0) {topDiv = 0;}
548	//topDiv += SCREENscrolltop; disinserito da quando nella #itzDivUp � stato inserito fixed al posto di absolute
549
550	// altezza dello sfondo scuro sotto
551	if (FULLheight > SCREENheight) {var backDiv = FULLheight;}
552	else {var backDiv = SCREENheight;}
553
554	var iframeH = divH-40; // altezza del frame all'interno
555
556	window.top.document.getElementById('itzDivContent').style.width =  divW +"px";
557	window.top.document.getElementById('itzDivContent').style.height =  divH +"px";
558	window.top.document.getElementById('itzDivContent').style.marginTop =  topDiv +"px";
559	window.top.document.getElementById('itzDivIframeInt').style.height =  iframeH +"px";
560	window.top.document.getElementById(nomeDiv).style.display = 'block';
561	window.top.document.getElementById(nomeDiv).style.height = backDiv +"px";
562	if (flagCompatibilitaIE) {
563		window.top.document.getElementById(nomeDiv).style.background = '#222222';
564	}
565}
566
567
568
569
570
571
572// Funzione di visione di un messaggio dentro il div centrale | ver.1.1 del 21/03/2018
573// copyright � IT Zeta srl - Alessandro Zumiani
574// parametri: stampa-> presenza bottone stampa 0/1
575// richiede le classi CSS: DIV-POPUP 1.10
576// richiede il file: js/jquery-1.11.1.min.js | per la posizione al centro
577function itzDivMesg(w,h,messaggio_html,nomeDiv,stampa,link_chiudi,minW,minH) {
578	// nome del div che sostituisce i popup
579	if ((!nomeDiv)&&(nomeItzDivUp)) {nomeDiv = nomeItzDivUp;}
580	else if (!nomeDiv) {nomeDiv = "itzDivUp";}
581
582	// larghezza del div, dipendente dalla larghezza della immagine
583	if ((!w)||(w=='')) {w=800;}
584	if ((!h)||(h=='')) {h=600;}
585	var divW = Number(w);
586	var divH = Number(h);
587
588	// dimensioni dello schermo visibile e dello scroll
589	var SCREENwidth = $(window.top.document).width();
590	var SCREENheight = $(window.top.document).height();
591	var WINDOWheight = $(window.top.document).height();
592//	var SCREENscrolltop = $(window).scrollTop();
593	var FULLheight = top.window.innerHeight; //Number(window.top.document.body.offsetHeight)+40;
594
595	// in modalit� compatibilit� di windows
596	if (isNaN(FULLheight)) {
597		FULLheight = $(window).height();
598		var flagCompatibilitaIE = 1;
599	}
600	else {
601		var flagCompatibilitaIE = 0;
602	}
603
604	// check dimensioni massime della finestra rispetto allo schermo, per le immagini la altezza non mi aggiusta
605	var rifDivW = Number(SCREENwidth)-60;
606	if (rifDivW<divW) {divW = rifDivW;}
607	var rifDivH = Number(FULLheight)-64;
608	if (rifDivH<divH) {divH = rifDivH;}
609
610	// posizionamento al centro
611	var topDiv = ((FULLheight - divH)/2) - 32;
612	if (topDiv<0) {topDiv = 0;}
613	//topDiv += SCREENscrolltop; disinserito da quando nella #itzDivUp � stato inserito fixed al posto di absolute
614
615	// altezza dello sfondo scuro sotto
616	if (FULLheight > SCREENheight) {var backDiv = FULLheight;}
617	else {var backDiv = SCREENheight;}
618
619//alert("SCREENwidth "+ SCREENwidth +" . SCREENheight "+ SCREENheight +" . WINDOWheight "+ WINDOWheight +" . FULLheight "+ FULLheight);
620//alert("divW "+ divW + " . divH "+ divH +" . topDiv "+ topDiv);
621
622	// testo da inserire nel div
623	var intDivH = divH-40; // altezza del frame all'interno
624	var codice = "<div id='itzDivContent' style='width: "+ divW +"px; height: "+ divH +"px;'>";
625	codice += "<div style='width: "+ divW +"px; text-align: right; border-bottom: #999999 1px solid; margin-bottom: 10px;'><a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv + "\", \""+ link_chiudi +"\")' class='itzDivUp_link'><b>chiudi</b> <img src='images/ico_exit.png' width='16' height='16' alt='exit'></a></div>";
626	codice += "<div id='itzDivIframeInt' style='width:100%; height:"+ intDivH +"px; color:#444444; text-align:left; padding-top:10px; line-height:1.3em; box-sizing:border-box;'>"+ messaggio_html +"</div>";
627	codice += "<div style='width: "+ divW +"px; text-align: right; border-bottom: #999999 1px solid; margin-top: 10px;'>";
628	if (stampa==1) {codice += "<a href='javascript:stampaPagina(\"\",\""+ url +"\")' class='itzDivUp_link'>stampa</a> &nbsp;";}
629	codice += "<a href='javascript:void(0);' onClick='itzDivUp_Close(\""+ nomeDiv + "\", \""+ link_chiudi +"\")' class='itzDivUp_link'><b>chiudi</b></a></div></div><div id='itzDivUp_clickClose'></div>";
630
631	window.top.document.getElementById(nomeDiv).style.display = 'block';
632	window.top.document.getElementById(nomeDiv).style.height = backDiv +"px";
633	window.top.document.getElementById(nomeDiv).innerHTML = codice;
634	window.top.document.getElementById('itzDivContent').style.marginTop =  topDiv +"px";
635	if (flagCompatibilitaIE) {
636		window.top.document.getElementById(nomeDiv).style.background = '#222222';
637	}
638}
639
640
641
642
643// chiude il divup sia delle immagini che del iframe e annulla il codice all'interno
644function itzDivUp_Close(nomeDiv, link_chiudi) {
645	// svuotamento e chiusura
646	window.top.document.getElementById(nomeDiv).style.display = 'none';
647	//window.top.document.getElementById(nomeDiv).innerHTML = '';
648
649	// eventuale link di chiusura
650	if ((link_chiudi)&&(link_chiudi != "undefined")) {
651		link_chiudi = link_chiudi.replace(RegExp("'", "g"), "\"");
652		window.top.location.href = link_chiudi;
653	}
654}
655
656
657
658
659
660
661
662
663// funzione di gestione di una label o fumetto con passaggio del testo da far apparire
664// ver. 1.0 - ultima modifica il 26/11/2015
665// w, h, top, left : se a zero, non verranno impostati
666function itzDivLabel(nomeDiv, text, w, h, left, top) {
667	if (w>0) {window.top.document.getElementById(nomeDiv).style.width = w +'px';}
668	if (h>0) {window.top.document.getElementById(nomeDiv).style.height = h +'px';}
669	if (left>0) {window.top.document.getElementById(nomeDiv).style.left = left +'px';}
670	if (top>0) {window.top.document.getElementById(nomeDiv).style.top = top +'px';}
671	window.top.document.getElementById(nomeDiv).innerHTML = text;
672	window.top.document.getElementById(nomeDiv).style.display = 'block';
673}
674
675
676
677
678
679// funzione che restituisce la posizione del mouse, riferita dentro un div
680// se non presente il nomeDiv allora restituisce il 
680riferimento all'intera pagina
681function mouseXY(event, nomeDiv) {
682	// componente dello scroll della pagina
683	var scrollTOP = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
684	var scrollLEFT = (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
685
686	// posizione del mouse riferita all'intera pagina
687	var allX = 0;
688	var allY = 0;
689	/*if (window.event) {
690		allX = window.event.clientX+scrollLEFT;
691		allY = window.event.clientY+scrollTOP;
692	}
693	else {*/
694		allX = event.clientX+scrollLEFT;
695		allY = event.clientY+scrollTOP;
696	//}
697
698	var objX = 0;
699	var objY = 0;
700	if (nomeDiv) {
701		var elParent = document.getElementById(nomeDiv);
702
703		while (elParent) {
704			objX += elParent.offsetLeft;
705			objY += elParent.offsetTop;
706			elParent = elParent.offsetParent;
707		}
708/* versione originale, con richiamo della funzione: mouseXY(event, document.getElementById('nome_div'));
709	var elParent = nomeDiv;
710	while (elParent) {
711		objX += elParent.offsetLeft;
712		objY += elParent.offsetTop;
713		elParent = elParent.offsetParent;
714	}
715*/
716	}
717	var x = allX-objX;
718	var y = allY-objY;
719
720	return x +'.'+ y;
721}
722
723
724
725
726
727// funzione che restituisce i pixel di distanza di un div dalla body
728function detectPosY(nomeDiv) {
729	var elParent = document.getElementById(nomeDiv);
730	var bodyRect = document.body.getBoundingClientRect(),
731    elemRect = elParent.getBoundingClientRect(),
732    offset = elemRect.top - bodyRect.top;
733	return offset;
734}
735
736
737
738
739
740// funzione che rende possibile la stampa di solo un'area di una pagina - Ver. 2.1 del 12/11/2015
741// l'area che si desidera stampare deve trovarvi dentro un DIV il cui ID deve essere passato come parametro a questa funzione
742// IMPORTANTE: il foglio di stile esterno deve riportate l'indirizzo reale completo
743function stampaPagina(area, url_frame) {
744	if (url_frame) {
745		var finestra=window.open (url_frame, "Stampa", "toolbar=no,directories=no,menubar=yes,resizable=yes,scrollbars=yes,width=800,height=700");
746	}
747	else if (area) {
748		var testo = document.getElementById(area).innerHTML;
749		var finestra=window.open ("", "Stampa", "toolbar=no,directories=no,menubar=yes,resizable=yes,scrollbars=yes,width=800,height=700");
750		finestra.document.write("<html><head><title>Stampa</title>\n");
751//		finestra.document.write("<link rel='stylesheet' type='text/css' href='http://www.dominio.it/cliente.css'>");
752		finestra.document.write("</head>\n<body class='body_frame'>\n");
753		finestra.document.write("</body></html>");
754		finestra.document.body.innerHTML = testo;
755	}
756
757	if (finestra) {
758		finestra.document.close();
759		finestra.print();
760		setInterval(function(){finestra.close();},2000);
761	}
762}
763
764
765
766// per aprire un link, anche di file, in un pop-up
767function apri(url,popWidth,popHeight) {
768	if (popWidth=="") {popWidth=400;}
769	if (popHeight=="") {popHeight=400;}
770// verificata incompatibilit� con ipad per le due righe sottostanti
771//	newin = window.open('','page','scrollbars=yes,resizable=yes, width='+ popWidth +',height='+ popHeight +',status=no,location=no,toolbar=no');
772//	newin.close();
773	newin = window.open(url,'page','scrollbars=yes,resizable=yes, width='+ popWidth +',height='+ popHeight +',status=no,location=no,toolbar=no');
774	newin.focus();
775}
776
777// per aprire in una nuova finestra usare:
778// window.open('{$dati['path_file_gest']}{$dati['nome_file']}', '_blank')
779// al posto del target
780
781
782
783// funzione di relink a tempo parametrizzato
784function fn_link_tempo(link, millisec) {
785	//var timer = 0;
786	//timer = setTimeout("location=('"+ link +"')", millisec);
787
788	window.setTimeout("location=('"+ link +"')", millisec);
789}
790
791
792
793// funzione di cambio del valore in un campo, nel form indicato
794// il parametro flagSubmit serve per attivare o meno il submit e il testoConfirm serve per attivare un testo di conferma dell'operazione
795function formChangeValue(nomeForm, nomeCampo, valoreCampo, flagSubmit, testoConfirm) {
796	var procedi = true;
797	if ((nomeForm)&&(nomeCampo)&&(valoreCampo)) {
798		if (testoConfirm) {
799			if (!confirm(testoConfirm)) {procedi = false;}
800		}
801		if (procedi) {
802			document.forms[nomeForm].elements[nomeCampo].value = valoreCampo;
803			if (flagSubmit == "1") {document.forms[nomeForm].submit();}
804		}
805	}
806}
807
808
809
810// funzione di pulitura di campo text. funzionamento: pulisciCampo(this)
811function pulisciCampo(obj) {
812	obj.value = "";
813}
814
815
816
817// elimina gli spazi
818function spaceClean(obj) {
819	obj.value = obj.value.replace(RegExp(" ", "g"), "");
820}
821
822
823
824// tutto in maiuscolo
825function allUpper(obj) {
826	obj.value = obj.value.toUpperCase();
827}
828
829
830
831// funzione di pulitura di campo numerico
832function pulisciCampoNum(obj) {
833	if (obj.value == "0") {obj.value = "";}
834}
835
836
837
838// funzione utile per il sort numerico negli array
839// array_valori.sort(compareNumbers) usato in kailas pricing
840function compareNumbers(a, b) {
841	return a - b;
842}
843
844
845
846// controllo e formattazione del valore numerico (anche valuta) con indicazione del numero di decimali da tenere, con arrotondamento
847// NON esegue la formattazione delle migliaia
848// ultima versione: migliorata la precisione sui decimali di due e più cifre
849// n_decimali può essere 0
850function ckNumerico(valore, n_decimali) {
851	//var valoreInStringa, stringaInteri, stringaDecimali, rifDecimali = "";
852	n_decimali = Number(n_decimali);
853
854	// check eventuale virgola in punto
855	valore = valore.toString();
856	valore = valore.replace(RegExp(",", "g"), "\.");
857	// check is NAN
858	if (isNaN(valore)) {valore=0;}
859
860	// calcolo dei decimali o libero
861	if (n_decimali>0) {
862		valore = Number(valore);
863		valore = valore.toFixed(n_decimali);
864	}
865	else if (n_decimali==0) {
866		valore = Math.round(valore);  // arrotondamento dei soli interi
867	}
868	else {
869		valore = Number(valore);
870	}
871	return valore;
872}
873
874
875
876// funzione di controllo di un valore numerico, probabilmente meno performante di ckNumerico()
877function checkNumeric(num) {
878	num = num.replace(RegExp(",", "g"), "\.");
879	if ((num)&&(!isNaN(num))) {
880		num = parseFloat(num);
881	}
882	else {num = 0;}
883	return num;
884}
885
886
887
888// funzione che accetta una valora con punti come migliaia e virgola per i decimali: 10.000,00
889// restituisce un numero usabile per i calcoli
890// DA RIVEDERE NON FUNZIONA
891function ckValutaFloat(euro, n_decimali) {
892	/*euro = euro.replace(/[\.]?/gi, "");
893	euro = euro.replace(RegExp(",", "g"), "\.");
894	euro = Number(euro);
895	return euro.toFixed(n_decimali);*/
896	return euro;
897}
898
899
900
901// trasforma un numero, già con i decimali presenti, in una stringa formattata in valuta con separazione delle migliaia
902// IMPORTANTE: il n_decimali deve esserci e almeno 1, altrimenti usare la 
903function formatValutaMil(euro, n_decimali) {
904	euro = ckNumerico(euro, n_decimali);
905	num = euro.split(".");
906	decimali = num[1];
907	nuovo = '';
908
909	for (var i=1; i<=Math.ceil(num[0].length / 3); i++) {
910		// il cursore mi indica dove far partire il recupero della nuova stringa
911		cursore = num[0].length - (i*3);
912		if (cursore>0) {
913			fraz = num[0].substr(cursore, 3);
914		}
915		else {
916			// prende la rimanenza
917			fraz = num[0].substr(0, 3+cursore);
918		}
919
920		// aggiunge la formattazione delle migliaia
921		if (i>1) {nuovo = fraz +"."+ nuovo;}
922		else {nuovo = fraz + nuovo;}
923	}
924
925	nuovo += "," + decimali;
926	return nuovo;
927}
928
929
930
931// controllo e formattazione del valore numerico di un campo
932function ckInputNumerico(obj,n_decimali) {
933	obj.value = ckNumerico(obj.value,n_decimali);
934}
935
936
937
938// controllo e formattazione del valore numerico di un campo
939function ckInputNumericoID(idName,n_decimali) {
940	document.getElementById(idName).value = ckNumerico(document.getElementById(idName).value,n_decimali);
941}
942
943
944
945// check numero intero e pulitura dello stesso, alternativa semplice per i numeri interi
946function checkInteger(obj) {
947	var valore = obj.value;
948	if (Number(valore)) {
949		valore = Math.round(Math.round(valore.replace(RegExp(",", "g"), "\.")));
950	}
951	else {
952		valore = obj.value.replace(RegExp("[^0-9]", "g"), "");
953	}
954	if (isNaN(valore)) {valore=0;}
955	obj.value = valore;
956}
957
958
959
960// validazione strutturale della mail
961function validaEMail(mail) {
962	var MailRExp = /^[0-9a-zA-Z_\.\-]{2,}@[0-9a-zA-Z_\.\-]{2,}\.[a-zA-Z]{2,}$/;
963	if (MailRExp.test(mail)) {return true;}
964	else {return false;}
965}
966
967
968
969// per rimuovere tutti gli elementi da una select
970function pulisciSelect(oggetto) {
971	if (oggetto) {
972		if (document.getElementById(oggetto)) {
973			document.getElementById(oggetto).options.length = 0;
974		}
975	}
976}
977
978
979
980// per aggiungere valori in un elemento select
981// versione migliorata con l'aggiunta della separazione del nome attributo dall'attributo
982function addToSelect(oggetto, valore, etichetta, attributo, nome_attributo) {
983	if (!nome_attributo) {nome_attributo = 'title'}
984	var indice = document.getElementById(oggetto).length;
985	document.getElementById(oggetto).options[indice] = new Option(etichetta,valore);
986	if (attributo) {
987		document.getElementById(oggetto).options[indice].setAttribute(nome_attributo, attributo);
988	}
989	// var newOption = document.createElement("option");
990	// newOption.value = valore;
991	// newOption.text = etichetta;
992	// document.getElementById(oggetto).add(newOption);
993	// document.getElementById(oggetto).options[item] = new Option(valore,etichetta);		// per inserire in un preciso punto (item)... da testare
994}
995
996
997
998// funzione che mette in un campo il valore proveniente da un'altro
999function fn_putAvalue(fieldFrom, fieldTo) {
1000	document.getElementById(fieldTo).value = document.getElementById(fieldFrom).value;
1001}
1002
1003
1004
1005// funzione per svuotare un frame
1006// PROVARE A RIFARE CON UN INNER HTML DI PAGINA VUOTA
1007function pulisciFrame(nomeFrame) {
1008	parent.frames[nomeFrame].location.href = 'frame_blank.php';
1009}
1010
1011
1012
1013// funzione per aprire in un frame una determinara pagina
1014function pageFrame(nomeFrame, nomePHP) {
1015	parent.frames[nomeFrame].location.href = nomePHP;
1016}
1017
1018
1019
1020// funzione di richiesta di conferma prima di lanciare un url
1021// modificata per comandare l'apertura in una nuova finestra, si potrebbe anche provare con un target
1022function confirmLink(text, link, nuova_finestra) {
1023	if (confirm(text)) {
1024		if (nuova_finestra == true) {window.open(link, '_blank');}
1025		else {location.href = link;}
1026	}
1027}
1028
1029
1030
1031// funzione di carico di una pagina con aggiunta di un nuovo valore passato come parametro
1032// opzione con frame non ancora testata
1033function fn_urlGetNuovoValore(url_get,nomeCampo,valore,flag_frame,nomeFrame) {
1034	if ((flag_frame=="1")&&(nomeFrame)) {
1035		parent.frames[nomeFrame].location.href = url_get +'&'+ nomeCampo +'='+ valore;
1036	}
1037	else {
1038		location.href = url_get +'&'+ nomeCampo +'='+ valore;
1039	}
1040}
1041
1042
1043
1044// funzione di selezione/deselezione checkbox con un unico prefisso
1045// esempio:
1046// seleziona tutti: <input type='checkbox' id='checkboxALL' onClick=\"fn_CheckAllcheckBox('checkboxALL', 'nome_array_campi[]')\">
1047// altri: <input type='checkbox' name='nome_array_campi[]' value='123'>
1048function fn_CheckAllcheckBox(nome_checkALL, nome_array_checkbox) {
1049	// array di tutti i checkbok appartenenti a nome_array_checkbox
1050	var arrayChecks = document.getElementsByName(nome_array_checkbox);
1051
1052	// recupero dello stato del comando padre
1053	if (document.getElementById(nome_checkALL).checked) {var doAll = true;} else {var doAll = false;}
1054
1055	// cicla tutti i check
1056	for (var i=0; i<arrayChecks.length; i++) {
1057		arrayChecks[i].checked = doAll;
1058	}
1059}
1060
1061
1062
1063
1064// funzione di analisi della correttezza della username e della password
1065// aggiornato al 07/11/2023
1066function ckUserPass(dati) {
1067	var n_errore = 0;
1068	var ckUSPWregExp_chKO = /[(){}<>\&\$\|\\\/;]/;
1069	var ckUSPWregExp_chOK = /[\!\?\,\.\:\+\-\*\"\'_=°^@§#%€ç]/;
1070	var ckUSPWregExp_mai = /[A-Z]/;
1071	var ckUSPWregExp_min = /[a-z]/;
1072	var ckUSPWregExp_num = /[0-9]/;
1073	var ckUSPWregExp_sp = /[\s]/;
1074	// ordine di importanza inverso
1075	if (!ckUSPWregExp_min.test(dati)) {n_errore = 5;}	// almeno una minuscola
1076	if (!ckUSPWregExp_mai.test(dati)) {n_errore = 4;}	// almeno una maiuscola
1077	if (!ckUSPWregExp_num.test(dati)) {n_errore = 3;}	// almeno un numero
1078	if (!ckUSPWregExp_chOK.test(dati)) {n_errore = 8;}	// almeno un caratteri speciale
1079	if (ckUSPWregExp_sp.test(dati)) {n_errore = 6;}		// niente spazi
1080	if (ckUSPWregExp_chKO.test(dati)) {n_errore = 7;}	// caratteri non permessi
1081	if (dati.length < 10) {n_errore = 2;}				// almeno 10 caratteri
1082	if (!dati) {n_errore = 1;}							// non presente
1083	return n_errore;
1084}
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100//////////////////////////////////////////////////////
1101// FUNZIONI PER ALERT PRIVACY & COOKIES IN TOP PAGE
1102//
1103// Il cookie memPrivacyCookieGDPR è un cookie tecnico e necessario, mantiene le preferenze dell'utente sulla scelta della policy sui cookies.
1104//
1105// funzione di emissione dell'area di alert per i cookies - versione 1.5
1106// questo codice deve essere presente sulle pagine:
1107/*
1108<script>
1109var itz_ALTprivacy_DivName = 'itzAlt_topPrivacy_up'; // scelta tra itzAlt_topPrivacy_up e itzAlt_topPrivacy_dw, riportare stesso nome nel div
1110var itz_ALTprivacy_lang = 'ita';
1111var itz_ALTprivacy_type = '1-0-0'; // tecnici-statistici-social
1112var itz_ALTprivacy_2php = 0; // se presente implica ajax.dati
1113var itz_ALTprivacy_color = 2; // colore: 1 chiaro, 2 scuro
1114var itz_ALTprivacy_link = 'privacy_policy.php';
1115addEvent(window,'load',function() {itz_ALTprivacy();});
1116</script>
1117*/
1118itz_ALTprivacy_valori = getCookie('memPrivacyCookieGDPR').split("-");
1119if (isNaN(parseInt(itz_ALTprivacy_valori[0]))) {itz_ALTprivacy_valori[0] = 1;}
1120if (isNaN(parseInt(itz_ALTprivacy_valori[1]))) {itz_ALTprivacy_valori[1] = 0;}
1121if (isNaN(parseInt(itz_ALTprivacy_valori[2]))) {itz_ALTprivacy_valori[2] = 0;}
1122function itz_ALTprivacy() {
1123	var valorePrivacyCookieGDPR = getCookie('memPrivacyCookieGDPR');
1124	tipi = itz_ALTprivacy_type.split("-");
1125	itz_ALTprivacy_valoritemp = [1,0,0];
1126
1127	// recupero le preferenze
1128	if (valorePrivacyCookieGDPR) {
1129		vedi_itzAlt_AreaPrivacy = false;
1130		itz_ALTprivacy_valori = valorePrivacyCookieGDPR.split("-");
1131		if (isNaN(parseInt(itz_ALTprivacy_valori[0]))) {itz_ALTprivacy_valori[0] = 1;}
1132		if (isNaN(parseInt(itz_ALTprivacy_valori[1]))) {itz_ALTprivacy_valori[1] = 0;}
1133		if (isNaN(parseInt(itz_ALTprivacy_valori[2]))) {itz_ALTprivacy_valori[2] = 0;}
1134	}
1135	else {
1136		// selezione NON presente, set di default
1137		vedi_itzAlt_AreaPrivacy = true;
1138		itz_ALTprivacy_valori = [1,0,0];
1139	}
1140
1141	// TEST
1142	//vedi_itzAlt_AreaPrivacy = true;
1143	//alert(valorePrivacyCookieGDPR);
1144	// set a nullo
1145	//setCookie('memPrivacyCookieGDPR', '', 0);
1146
1147	// recupero della data di oggi
1148	//var now = new Date() ;		
1149	//now = now.getDate() + "-" + now.getMonth() + "-" + now.getFullYear();
1150
1151	// valori di default
1152	if (!itz_ALTprivacy_lang) {var itz_ALTprivacy_lang = "ita";}
1153
1154	if (itz_ALTprivacy_lang == "ita") {
1155		var testo1 = "Questo sito utilizza cookies tecnici per mantenere il suo corretto funzionamento, con il tuo consenso può far funzionare anche cookies per fini di analisi e/o di terze parti per altri scopi. Maggiori informazioni sull'utilizzo dei cookies sono riportate nella";
1156		var testo2 = ".<br>Puoi liberamente prestare, rifiutare o revocare il consenso a tutti o alcuni dei trattamenti utilizzando i pulsanti “Accetta tutti”, “Rifiuta tutti” oppure con “Seleziona” puoi indicare le tue preferenze.<br>Rifiutando tutti i cookies non si garantisce la migliore esperienza di navigazione su questo sito web.";
1157		var link_label = "privacy policy";
1158		var label_seleziona = "Seleziona la tua preferenza";
1159		var label_tecnici = "Cookies tecnici (necessari)";
1160		var label_tecnici2 = "Cookies tecnici";
1161		var label_statistici = "Cookies statistici/analitici";
1162		var label_social = "Cookies social/terze parti";
1163		var label_chiudi = "chiudi questo spazio";
1164		var label_bott_1 = "Accetta tutti";
1165		var label_bott_2 = "Seleziona";
1166		var label_bott_3 = "Rifiuta tutti";
1167		var label_bott_4 = "accetta i selezionati";
1168	}
1169	else {
1170		var testo1 = "Questo sito utilizza cookies tecnici per mantenere il suo corretto funzionamento, con il tuo consenso può far funzionare anche cookies di terze parti per fini statistici e di analisi. Maggiori informazioni sull'utilizzo dei cookies sono riportate nella";
1171		var testo2 = ".<br>Puoi liberamente prestare, rifiutare o revocare il consenso a tutti o alcuni dei trattamenti utilizzando i pulsanti “Accetta tutti”, “Rifiuta tutti” oppure con “Seleziona” puoi indicare le tue preferenze.<br>Rifiutando tutti i cookies non si garantisce la migliore esperienza di navigazione su questo sito web.";
1172		var link_label = "privacy policy";
1173		var label_seleziona = "Seleziona la tua preferenza";
1174		var label_tecnici = "Cookies tecnici (necessari)";
1175		var label_tecnici2 = "Cookies tecnici";
1176		var label_statistici = "Cookies statistici/analitici";
1177		var label_social = "Cookies social/terze parti";
1178		var label_chiudi = "chiudi questo spazio";
1179		var label_bott_1 = "Accetta tutti";
1180		var label_bott_2 = "Seleziona";
1181		var label_bott_3 = "Rifiuta tutti";
1182		var label_bott_4 = "accetta i selezionati";
1183	}
1184
1185	// riempe l'alert se il cookie non è valorizzato
1186	/*if (valorePrivacyCookieGDPR == now) {
1187		// cookies accettato perchè visto due volte, c'è stata la volontà di proseguire nella navigazione del sito
1188		setCookie('memPrivacyCookieGDPR', 'ok', 216000);
1189	}*/
1190
1191	// riferimenti immagini
1192	itzAlt_imgCk0	= new Image(16,16); itzAlt_imgCk0.src	= "images/ico_ck0.png";
1193	itzAlt_imgCk1 	= new Image(16,16); itzAlt_imgCk1.src	= "images/ico_ck1.png";
1194
1195	if (vedi_itzAlt_AreaPrivacy) {
1196		var codice = "<div id='itzAlt_AreaPrivacy'><div id='itzAlt_AreaPrivacy_sx' class='itzAlt_textPrivacy_color"+ itz_ALTprivacy_color +"'>"+ testo1 + " <a href='"+ itz_ALTprivacy_link +"' target='_blank' class='itzAlt_linkPrivacy_color"+ itz_ALTprivacy_color +"'>"+ link_label +"</a>"+ testo2;
1197		codice += "<br><a href='javascript:void(0)' onClick='hiddenObj(itz_ALTprivacy_DivName)' title='exit'><img src='images/ico_exit.png' valign='middle' alt='exit'></a> &nbsp;<a href='javascript:void(0)' onClick='hiddenObj(itz_ALTprivacy_DivName)' class='itzAlt_linkPrivacy_color"+ itz_ALTprivacy_color +"'>"+ label_chiudi +"</a>";
1198		codice += "<div id='itzAlt_AreaPrivacy_sel'><div class='itzAlt_AreaPrivacy_sel_area itzAlt_textPrivacy_color"+ itz_ALTprivacy_color +"'><b>"+ label_seleziona +"</b>:</div><div class='itzAlt_AreaPrivacy_sel_area itzAlt_textPrivacy_color"+ itz_ALTprivacy_color +"'><img src='images/ico_ck1.png' title='"+ label_tecnici2 +"' alt='"+ label_tecnici2 +"'> "+ label_tecnici +"</div>";
1199		if (tipi[1] == 1) {
1200			if (itz_ALTprivacy_valori[1] == 1) {
1201				itz_ALTprivacy_img_stat = "ico_ck1.png";
1202				itz_ALTprivacy_valoritemp[1] = 1;
1203			}
1204			else {
1205				itz_ALTprivacy_img_stat = "ico_ck0.png";
1206			}
1207			codice += "<div class='itzAlt_AreaPrivacy_sel_area itzAlt_textPrivacy_color"+ itz_ALTprivacy_color +"'><a href='javascript:void(0)' onClick=\"itz_ALTprivacy_SEL(1)\"><img src='images/"+ itz_ALTprivacy_img_stat +"' title='"+ label_statistici +"' alt='"+ label_statistici +"' name='itzAlt_img1'></a> "+ label_statistici +"</div>";
1208		}
1209		if (tipi[2] == 1) {
1210			if (itz_ALTprivacy_valori[2] == 1) {
1211				itz_ALTprivacy_img_social = "ico_ck1.png";
1212				itz_ALTprivacy_valoritemp[2] = 1;
1213			}
1214			else {
1215				itz_ALTprivacy_img_social = "ico_ck0.png";
1216			}
1217			codice += "<div class='itzAlt_AreaPrivacy_sel_area itzAlt_textPrivacy_color"+ itz_ALTprivacy_color +"'><a href='javascript:void(0)' onClick=\"itz_ALTprivacy_SEL(2)\"><img src='images/"+ itz_ALTprivacy_img_social +"' title='"+ label_social +"' alt='"+ label_social +"' name='itzAlt_img2'></a> "+ label_social +"</div>";
1218		}
1219		codice += "<div class='itzAlt_AreaPrivacy_sel_area'><b><a href='javascript:void(0)' onClick='itz_ALTprivacy_OKSEL()' class='itzAlt_linkPrivacy_color"+ itz_ALTprivacy_color +"'>"+ label_bott_4 +"</a></b></div><div id='lineClear'></div></div></div>";
1220		codice += "<div id='itzAlt_AreaPrivacy_dx'><a href='javascript:void(0);' onClick='itz_ALTprivacy_OK()' class='itzAlt_buttonPrivacy'>"+ label_bott_1 +"</a>";
1221		codice += "<a href='javascript:void(0);' onClick='showObj(\"itzAlt_AreaPrivacy_sel\")' class='itzAlt_buttonPrivacy'>"+ label_bott_2 +"</a>";
1222		codice += "<a href='javascript:void(0);' onClick='itz_ALTprivacy_KO()' class='itzAlt_buttonPrivacy'>"+ label_bott_3 +"</a></div></div>";
1223		window.top.document.getElementById(itz_ALTprivacy_DivName).className = itz_ALTprivacy_DivName + '_color'+ itz_ALTprivacy_color;
1224		window.top.document.getElementById(itz_ALTprivacy_DivName).style.display = 'block';
1225		window.top.document.getElementById(itz_ALTprivacy_DivName).innerHTML = codice;
1226
1227		// setta il messaggio come letto la prima volta
1228		// vale un giorno e manifesta la temporanea volonta di proseguire nel sito
1229		//setCookie('memPrivacyCookieGDPR', now, 86400);
1230	}
1231
1232	// comunica il vettore a php tramite ajax alla partenza della pagina
1233	itz_ALTprivacy_vettore = itz_ALTprivacy_valori[0] +"-"+ itz_ALTprivacy_valori[1] +"-"+ itz_ALTprivacy_valori[2];
1234	if (itz_ALTprivacy_vettore != valorePrivacyCookieGDPR) {
1235		itz_ALTprivacy_2PHP(itz_ALTprivacy_vettore);
1236	}
1237}
1238
1239
1240function itz_ALTprivacy_SEL(tipo) {
1241	// cambia i valori momentanei
1242	if (itz_ALTprivacy_valoritemp[tipo] == 1) {itz_ALTprivacy_valoritemp[tipo] = 0;}
1243	else {itz_ALTprivacy_valoritemp[tipo] = 1;}
1244	// cambio immagine
1245	changeViewImg('itzAlt_img'+tipo, 'itzAlt_imgCk0', 'itzAlt_imgCk1');
1246}
1247
1248
1249function itz_ALTprivacy_OKSEL() {
1250	// accetta i selezionati, salva i valori momentanei
1251	hiddenObj(itz_ALTprivacy_DivName);
1252	setCookie('memPrivacyCookieGDPR', itz_ALTprivacy_valoritemp[0] +"-"+ itz_ALTprivacy_valoritemp[1] +"-"+ itz_ALTprivacy_valoritemp[2], 31536000); // durata in secondi, adesso su 12 mesi
1253
1254	// comunica il vettore a php tramite ajax al settaggio
1255	itz_ALTprivacy_2PHP(itz_ALTprivacy_valoritemp[0] +"-"+ itz_ALTprivacy_valoritemp[1] +"-"+ itz_ALTprivacy_valoritemp[2]);
1256}
1257
1258
1259function itz_ALTprivacy_OK() {
1260	// accetta tutti
1261	hiddenObj(itz_ALTprivacy_DivName);
1262	setCookie('memPrivacyCookieGDPR', itz_ALTprivacy_type, 31536000); // durata in secondi, adesso su 12 mesi
1263
1264	// comunica il vettore a php tramite ajax al settaggio
1265	itz_ALTprivacy_2PHP(itz_ALTprivacy_type);
1266}
1267
1268
1269function itz_ALTprivacy_KO() {
1270	// annulla tutti, rimangono solo i tecnici
1271	hiddenObj(itz_ALTprivacy_DivName);
1272	setCookie('memPrivacyCookieGDPR', '1-0-0', 31536000); // durata in secondi, adesso su 12 mesi
1273
1274	// comunica il vettore a php tramite ajax al settaggio
1275	itz_ALTprivacy_2PHP('1-0-0');
1276}
1277
1278
1279// comunica il vettore a php tramite ajax
1280// da attivare in caso servisse, necessario il ajax_dati.php
1281function itz_ALTprivacy_2PHP(vettore) {
1282	if (itz_ALTprivacy_2php) {
1283		var url_php = "ajax_dati.php?op=php2ALTprivacy&v="+ vettore;
1284		if (httpPHP) {
1285			httpPHP.open('GET', url_php, true);
1286			httpPHP.onreadystatechange = ajaxResponse_itz_ALTprivacy_2PHP;
1287			httpPHP.send(null);
1288		}
1289	}
1290}
1291
1292// funzione per ritorno del salvataggio del sottoprodotto
1293function ajaxResponse_itz_ALTprivacy_2PHP() {
1294	if (httpPHP.readyState == 4) {
1295		if (httpPHP.status == 200) {
1296			//alert(httpPHP.responseText);
1297			// lettura di un formato Json
1298			//JsonObj = JSON.parse(httpPHP.responseText);
1299			// gestione del ritorno
1300			//if (JsonObj['esito'] == "ok") {}
1301		}
1302		//else {alert('There was a problem with the request.');}
1303	}
1304}
1305
1306
1307
1308
1309
1310//////////////////////////////////////////////////////
1311// FUNZIONI per RESPONSIVE
1312// passaggio della larghezza della maschera a php
1313//
1314
1315// comunica il vettore a php tramite ajax
1316// da attivare in caso servisse, necessario il ajax_dati.php
1317// da chiamare con: <script>addEvent(window,'load',function() {ajax_itz_respBodyW()});</script>
1318function ajax_itz_respBodyW() {
1319	var url_php = "ajax_dati.php?op=respBodyW&bodyW="+ top.window.innerWidth;
1320	if (httpPHP) {
1321		httpPHP.open('GET', url_php, true);
1322		httpPHP.onreadystatechange = ajaxResponse_itz_respBodyW;
1323		httpPHP.send(null);
1324	}
1325}
1326
1327// funzione per ritorno del salvataggio del sottoprodotto
1328function ajaxResponse_itz_respBodyW() {
1329	if (httpPHP.readyState == 4) {
1330		if (httpPHP.status == 200) {
1331			//alert(httpPHP.responseText);
1332			// lettura di un formato Json
1333			//JsonObj = JSON.parse(httpPHP.responseText);
1334			// gestione del ritorno
1335			//if (JsonObj['esito'] == "ok") {}
1336		}
1337		//else {alert('There was a problem with the request.');}
1338	}
1339}
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351//////////////////////////////////
1352// FUNZIONI PER COOKIE
1353//
1354// scrittura di un cookie
1355function setCookie(nome, valore, secondi) {
1356	if (Number(secondi)) {
1357		var now = new Date();
1358		var expires = new Date();
1359		expires.setTime(now.getTime()+(parseInt(secondi)*1000));
1360		document.cookie = nome +"="+ valore +"; expires="+ expires.toGMTString() +"; path=/";
1361	}
1362	else {
1363		document.cookie = nome + "=" + valore + "; path=/";
1364	}
1365}
1366
1367// recupero di un cookie
1368function getCookie(nome) {
1369	var valore = '';
1370	var campi = document.cookie.split("; ");
1371	for (i=0; i<campi.length; i++) {
1372		nomeCampo = campi[i].split("=");
1373		if (nomeCampo[0] == nome) {
1374			valore = nomeCampo[1];
1375		}
1376	}
1377	return valore;
1378}
1379
1380
1381
1382
1383
1384
1385
1386
1387//////////////////////////////////
1388// FUNZIONI PER AJAX E XML
1389//
1390// creo l'oggetto http
1391var httpPHP = getHTTPObject();
1392
1393// crea l'oggetto XMLHttpRequest
1394function getHTTPObject() {
1395	var httpPHP = false;
1396	if (window.XMLHttpRequest) {
1397		// Mozilla, Safari,...
1398		httpPHP = new XMLHttpRequest();
1399		if (httpPHP.overrideMimeType) {httpPHP.overrideMimeType('text/xml');}
1400	}
1401	else if (window.ActiveXObject) {
1402		// IE
1403		try {httpPHP = new ActiveXObject("Msxml2.XMLHTTP");}
1404		catch (e) {
1405			try {httpPHP = new ActiveXObject("Microsoft.XMLHTTP");}
1406			catch (e) {httpPHP = false;}
1407		}
1408	}
1409	// check
1410	if (!httpPHP) {
1411		alert('Cannot create an XMLHTTP instance');
1412		return false;
1413	}
1414	return httpPHP;
1415}
1416
1417
1418
1419
1420
1421
1422
1423
1424//////////////////////////////////
1425// FUNZIONI EVENTI
1426//
1427
1428function addEvent(obj,ev,fn) {
1429	if (obj.addEventListener) {
1430		// metodo w3c
1431		obj.addEventListener(ev, fn, false);
1432	}
1433	else if (obj.attachEvent) {
1434		// metodo IE
1435		obj.attachEvent('on'+ev, fn);
1436	}
1437	else {
1438		// se i suddetti metodi non sono applicabili
1439		// se esiste gia' una funzione richiamata da quel gestore evento
1440		if (typeof(obj['on'+ev])=='function') {
1441			// salvo in variabile la funzione gia' associata al gestore
1442			var f=obj['on'+ev];
1443			// setto per quel gestore una nuova funzione
1444			// che comprende la vecchia e la nuova
1445			obj['on'+ev]=function(){if(f)f();fn()}
1446		}
1447		// altrimenti setto la funzione per il gestore
1448		else obj['on'+ev]=fn;
1449	}
1450}
1451
1452
1453
1454
1455
1456
1457
1458
1459////////////////  FUNZIONI CHECK PARTITA IVA E CODICE FISCALE  ////////////////
1460// far girare preventivamente le funzioni di pulitura spazi e di uppercase
1461
1462// rivisto per il funzionamento della partite iva internazionali, con la sigla davanti (controllo validit� solo sulle IT)
1463function check_piva(pivains) {
1464	var piva = pivains.toUpperCase();
1465	var pivaReg = /^[A-Z]{2}\d+$/;
1466	var pivaITReg = /^IT\d+$/;
1467	piva = piva.replace(RegExp(" ", "g"), "");
1468	piva = piva.replace(RegExp("\t", "g"), "");
1469	if ((!pivaReg.test(piva))||(pivaITReg.test(piva))) {
1470		// p.iva italiana
1471		piva = piva.replace(RegExp("IT", "g"), "");
1472		var n_Val=0,n_Som1=0,n_Som2=0,lcv=0;
1473		if (piva.length!=11 || isNaN(parseFloat(piva)) || parseFloat(piva)<parseFloat(0)) {
1474			return false;
1475		}
1476		for (lcv=0;lcv<9;lcv+=2) {
1477			n_Val=parseInt(piva.charAt(lcv));
1478			n_Som1+=n_Val;
1479			n_Val=parseInt(piva.charAt(lcv+1));
1480			n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
1481		}
1482		n_Som2 = 10 - (n_Som1 % 10);
1483		if (n_Som2 == 10) {n_Som2 = 0;}
1484		n_Val=parseInt(piva.charAt(10));
1485		if (n_Som2==n_Val) {
1486			return true;
1487		}
1488		else {
1489			return false;
1490		}
1491	}
1492	else {
1493		// p.iva estera
1494		return true;
1495	}
1496}
1497
1498function check_cf(cfins) {
1499	var cf = cfins.toUpperCase();
1500	var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
1501	if (!cfReg.test(cf)) {
1502		return false;
1503	}
1504	var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
1505	var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
1506	var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
1507	var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
1508	var s = 0;
1509	for(i=1; i<=13; i+=2) {
1510		s += setpari.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
1511	}
1512	for(i=0; i<=14; i+=2) {
1513		s += setdisp.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
1514	}
1515	if (s%26!=cf.charCodeAt(15)-'A'.charCodeAt(0)) {
1516		return false;
1517	}
1518	else {
1519		return true;
1520	}
1521}
1522
1523
1524// funzione di supporto per l'avviso della correttezza del codice fiscale
1525function alertCheck_cf(cfins) {
1526	var errore = 0;
1527	cfins = cfins.replace(RegExp(" ", "g"), "");
1528	if (cfins) {
1529		if (!check_cf(cfins)) {
1530			if (!check_piva(cfins)) {
1531				errore = 1;
1532			}
1533		}
1534		if (errore) {
1535			alert("ATTENZIONE!!!\n\nil codice fiscale inserito non risulta corretto.");
1536		}
1537	}
1538}
1539
1540
1541// funzione di supporto per l'avviso della correttezza della partita iva
1542function alertCheck_piva(pivains) {
1543	pivains = pivains.replace(RegExp(" ", "g"), "");
1544	if ((pivains)&&(!check_piva(pivains))) {
1545		alert("ATTENZIONE!!!\n\nla partita iva inserita non risulta corretta.");
1546	}
1547}
1548
1549
1550
1551
1552
1553

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.