PageSourceSearch

https://innovationisland.it/wp-content/plugins/wonder-paywall/public/js/wonder-paywall-public.js?ver=1.0.42

js innovationisland.it collected 2026-10-06 20:01:54 UTC 34,194 bytes, 1,080 lines download raw bytes

1if (typeof window.iniettaCss == 'undefined')
2	window.iniettaCss = function(url){
3		if (typeof url == 'string')
4			url = [ url ];
5
6		var link = document.createElement('link');
7
8		link.setAttribute('rel', 'stylesheet');
9		link.setAttribute('href', url[0]);
10
11		document.head.appendChild(link);
12
13		if (url.length > 1)
14			iniettaCss(url.slice(1));
15	};
16
17if (typeof window.iniettaScript == 'undefined')
18	window.iniettaScript = function(url, callback){
19		if (typeof url == 'string')
20			url = [ url ];
21
22		var s = document.createElement('script');
23
24		s.setAttribute('src', url[0]);
25		s.async = true;
26
27		if (url.length > 1)
28			s.onload = function(){ iniettaScript(url.slice(1), callback); };
29		else if (typeof callback == 'function')
30			s.onload = callback;
31
32		document.body.appendChild(s);
33	};
34
35function setPaywallCookie(name, value, seconds){
36	var expires = '';
37
38	if (seconds){
39		var date = new Date();
40		date.setTime(date.getTime() + (seconds * 1000));
41		expires = '; expires=' + date.toUTCString();
42	}
43
44	document.cookie = name + '=' + (value || '')  + expires + '; path=/';
45}
46
47function getPaywallCookie(name){
48	var nameEQ = name + '=';
49	var ca = document.cookie.split(';');
50
51	for (var i = 0; i < ca.length; i++){
52		var c = ca[i];
53
54		while (c.charAt(0) == ' ')
55			c = c.substring(1, c.length);
56
57		if (c.indexOf(nameEQ) == 0)
58			return c.substring(nameEQ.length, c.length);
59	}
60
61	return null;
62}
63
64function erasePaywallCookie(name){
65	document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
66}
67
68window.toQueryString = function(obj, prefix){
69	var str = [ ], k, v;
70
71	for (var p in obj){
72		if (!obj.hasOwnProperty(p)) // skip things from the prototype
73			continue;
74
75		if (~p.indexOf('[')) // only put whatever is before the bracket into new brackets; append the rest
76			k = prefix ? prefix + '[' + p.substring(0, p.indexOf('[')) + ']' + p.substring(p.indexOf('[')) : p;
77		else k = prefix ? prefix + '[' + p + ']' : p;
78
79		v = obj[p];
80
81		str.push(typeof v == 'object' ? toQueryString(v, k) : encodeURIComponent(k) + '=' + encodeURIComponent(v));
82	}
83
84	return str.join('&');
85};
86
87window.paywallLogin = function(data, redirect){
88	var xhr = new XMLHttpRequest();
89
90	xhr.open('GET', paywall_info.site_url + 'wonder-get-sso-data?' + toQueryString({
91		data:data,
92		redirect:redirect
93	}, ''), true);
94
95	xhr.onreadystatechange = function(){
96		if (xhr.readyState === 4){
97			var content = JSON.parse(xhr.responseText);
98
99			if (content.status)
100				window.location.href = paywall_info.system_url + 'oauth/sso-login?' + toQueryString({
101					client_id:paywall_info.client_id,
102					a:content.a,
103					b:content.b
104				}, '');
105		};
106	};
107
108	xhr.send();
109};
110
111window.paywallLogout = function(redirect){
112	var xhr = new XMLHttpRequest();
113
114	xhr.open('GET', paywall_info.site_url + 'wonder-get-sso-data?' + toQueryString({
115		data:{ },
116		redirect:redirect
117	}, ''), true);
118
119	xhr.onreadystatechange = function(){
120		if (xhr.readyState === 4){
121			var content = JSON.parse(xhr.responseText);
122
123			if (content.status){
124				erasePaywallCookie('wonder_paywall');
125				erasePaywallCookie('wonder_paywall_public');
126
127				window.location.href = paywall_info.system_url + 'oauth/sso-logout?' + toQueryString({
128					client_id:paywall_info.client_id,
129					a:content.a,
130					b:content.b
131				}, '');
132			}
133		};
134	};
135
136	xhr.send();
137};
138
139window.paywallCallbacks = window.paywallCallbacks || [ ];
140window.paywallXhttpRequest = false;
141
142function getPaywallSession(callback){
143	window.paywallCallbacks.push(callback);
144
145	var wonder_paywall_public = getPaywallCookie('wonder_paywall_public'),
146		wonder_paywall_public = wonder_paywall_public ? JSON.parse(decodeURIComponent(wonder_paywall_public)) : false;
147
148	if (wonder_paywall_public){
149		for (var i = 0; i < window.paywallCallbacks.length; ++i)
150			window.paywallCallbacks[i](wonder_paywall_public);
151
152		window.paywallCallbacks = [ ];
153
154		return;
155	}
156
157	if (window.paywallXhttpRequest)
158		return;
159
160	window.paywallXhttpRequest = true;
161
162	var xhr = new XMLHttpRequest();
163
164	xhr.open('GET', paywall_info.site_url + 'wonder-get-access-token');
165
166	xhr.onreadystatechange = function(mcallback){
167		if (xhr.readyState === 4){
168			var content = JSON.parse(xhr.responseText);
169
170			if (content.status){
171				var wonder_paywall_public = content.data;
172
173				if (wonder_paywall_public){
174					setPaywallCookie('wonder_paywall_public', JSON.stringify(wonder_paywall_public), (5 * 60));
175
176					for (var i = 0; i < window.paywallCallbacks.length; ++i)
177						window.paywallCallbacks[i](wonder_paywall_public);
178
179					window.paywallCallbacks = [ ];
180
181					return;
182				}
183			}
184
185			erasePaywallCookie('wonder_paywall_public');
186
187			for (var i = 0; i < window.paywallCallbacks.length; ++i)
188				window.paywallCallbacks[i](false);
189
190			window.paywallCallbacks = [ ];
191
192			window.paywallXhttpRequest = false;
193		};
194	}.bind(this, callback);
195
196	xhr.send();
197};
198
199document.addEventListener('DOMContentLoaded', function(){
200	getPaywallSession(function(wonder_paywall_public){
201		var hidden_logged = document.querySelectorAll('.button-paywall-hidden-logged'),
202			hidden_not_logged = document.querySelectorAll('.button-paywall-hidden-not-logged'),
203			user_info = document.querySelectorAll('.paywall-user-info'),
204			abbonamenti = document.querySelectorAll('.paywall-abbonamenti'),
205			html_abbonamenti = '';
206
207		if (wonder_paywall_public){
208			for (var i = 0; i < hidden_logged.length; ++i)
209				hidden_logged[i].remove();
210
211			for (var i = 0; i < hidden_not_logged.length; ++i)
212				hidden_not_logged[i].classList.remove('button-paywall-hidden-not-logged');
213
214			for (var i = 0; i < user_info.length; ++i)
215				user_info[i].innerHTML = 'Ciao ' + wonder_paywall_public.nome + ' ' + wonder_paywall_public.cognome;
216
217			for (var i = 0; i < wonder_paywall_public.abbonamenti.length; ++i)
218				html_abbonamenti += '<div class="row" style="font-size:14px;">' +
219					'<div class="col-md-3" style="margin-bottom:10px;">' +
220						'Tipo acquisto<br />' +
221						'<strong>' + wonder_paywall_public.abbonamenti[i].nome_piano + '</strong>' +
222					'</div>' +
223					'<div class="col-md-2" style="margin-bottom:10px;">' +
224						'Data acquisto<br />' +
225						'<strong>' + wonder_paywall_public.abbonamenti[i].data_acquisto.substr(0, 10).split('-').reverse().join('/') + '</strong>' +
226					'</div>' +
227					'<div class="' + (wonder_paywall_public.abbonamenti[i].data_fine != '2999-12-31' ? 'col-md-4' : 'col-md-3') + '" style="margin-bottom:10px;">' +
228						'Validità<br />' +
229						'dal <strong>' + wonder_paywall_public.abbonamenti[i].data_inizio.split('-').reverse().join('/') + '</strong>' +
230						(wonder_paywall_public.abbonamenti[i].data_fine != '2999-12-31' ? (' al <strong>' + wonder_paywall_public.abbonamenti[i].data_fine.split('-').reverse().join('/') + '</strong>') : '') +
231					'</div>' +
232					'<div class="col-md-3" style="margin-bottom:10px;">' +
233						'Costo<br />' +
234						'<strong>' + wonder_paywall_public.abbonamenti[i].prezzo + ' &euro; / ' + wonder_paywall_public.abbonamenti[i].text_durata + '</strong>' +
235					'</div>' +
236				'</div>' +
237				'<hr />';
238		}else{
239			for (var i = 0; i < hidden_logged.length; ++i)
240				hidden_logged[i].classList.remove('button-paywall-hidden-logged');
241
242			for (var i = 0; i < hidden_not_logged.length; ++i)
243				hidden_not_logged[i].remove();
244		}
245
246		for (var i = 0; i < abbonamenti.length; ++i)
247			abbonamenti[i].innerHTML = html_abbonamenti;
248	});
249});
250
251var maps = new Array();
252var category_filter = new Array();
253var current_url = window.location.origin.concat(window.location.pathname);
254var init_scroll = 0;
255
256function onLocationFound(e){
257	var radius = e.accuracy / 2;
258
259	for (var i = 0; i < maps.length; ++i){
260		var yellowIcon = new L.Icon({
261			iconUrl:wonder_paywall.url + 'img/marker-icon-2x-yellow.png',
262			shadowUrl:wonder_paywall.url + 'img/marker-shadow.png',
263			iconSize:[ 25, 41 ],
264			iconAnchor:[ 12, 41 ],
265			popupAnchor:[ 1, -34 ],
266			shadowSize:[ 41, 41 ]
267		});
268
269		markerCenter = L.marker(e.latlng, { icon:yellowIcon }).addTo(maps[i]);
270		L.circle(e.latlng, radius).addTo(maps[i]);
271
272		var min_dst = {
273			node:'',
274			dst:99999999
275		};
276
277		var popup = L.popup();
278
279		markerCenter.bindPopup('<b>La tua posizione</b>').openPopup();
280	}
281}
282
283function removeElementFromArrayWithValue(array, value){
284	for (var i = 0; i < array.length; i++)
285		if (array[i] == value){
286			array.splice(i, 1);
287			break;
288		}
289} 
290
291function filter_shops(id){
292	if (category_filter[0] == id){
293		jQuery('.categoria-wonder-store.category-selected').toggleClass('category-selected');
294		jQuery('.wonder-plugin-elenco-stores .evento').css({ 'display':'initial' }).removeClass('disabled');
295		jQuery('.wonder-plugin-elenco-stores-e-mappa .evento').css({ 'display':'initial' }).removeClass('disabled');
296		jQuery('.leaflet-marker-icon').css({ 'display':'initial' }).removeClass('disabled');
297		jQuery('.wonder-plugin-elenco-stores').css({ 'grid-template-columns':'auto '.repeat(3) });
298
299		category_filter = new Array();
300
301		return;
302	}
303
304	if (jQuery('.categoria-wonder-store.category-selected').length > 0){
305		jQuery('.categoria-wonder-store.category-selected').toggleClass('category-selected');
306		jQuery('.wonder-plugin-elenco-stores .evento').css({ 'display':'initial' }).removeClass('disabled');
307		jQuery('.wonder-plugin-elenco-stores-e-mappa .evento').css({ 'display':'initial' }).removeClass('disabled');
308		jQuery('.leaflet-marker-icon').css({ 'display':'initial' }).removeClass('disabled');
309		jQuery('.wonder-plugin-elenco-stores').css({ 'grid-template-columns':'auto '.repeat(3) });
310
311		category_filter = new Array();
312	}
313
314	var touched_category = jQuery('.categoria-wonder-store[data-category-id="' + id + '"]'), active_class = 'category-selected';
315	touched_category.toggleClass(active_class);
316
317	if (touched_category.hasClass(active_class))
318		category_filter.push(id);
319	else removeElementFromArrayWithValue(category_filter, id);
320
321	if (category_filter.length > 0){
322		jQuery('.wonder-plugin-elenco-stores .evento').css({ 'display':'none' }).addClass('disabled');
323		jQuery('.wonder-plugin-elenco-stores-e-mappa .evento').css({ 'display':'none' }).addClass('disabled');
324		jQuery('.leaflet-marker-icon').css({ 'display':'none' }).addClass('disabled');
325
326		for (var i = 0; i < category_filter.length; i++){
327			jQuery('.wonder-plugin-elenco-stores .evento[data-category-id="' + category_filter[i] + '"]').css({ 'display':'initial' }).removeClass('disabled');
328			jQuery('.wonder-plugin-elenco-stores-e-mappa .evento.category_' + category_filter[i]).css({ 'display':'initial' }).removeClass('disabled');
329			jQuery('.leaflet-marker-icon[alt~="' + category_filter[i]  + '"]').css({ 'display':'initial' }).removeClass('disabled');
330		}
331
332		var repeat = jQuery('.evento').not('.disabled').length > 3 ? 3 : window.innerWidth < 570 ? 1 : jQuery('.evento').not('.disabled').length; 
333
334		jQuery('.wonder-plugin-elenco-stores').css({ 'grid-template-columns':'auto '.repeat(repeat) });
335	}else{
336		jQuery('.wonder-plugin-elenco-stores .evento').css({ 'display':'initial' }).removeClass('disabled');
337		jQuery('.wonder-plugin-elenco-stores-e-mappa .evento').css({ 'display':'initial' }).removeClass('disabled');
338		jQuery('.leaflet-marker-icon').css({ 'display':'initial' }).removeClass('disabled');
339		jQuery('.wonder-plugin-elenco-stores').css({ 'grid-template-columns':'auto '.repeat(3) });
340	}
341}
342
343function onLocationError(e){ }
344
345(function($){
346	'use strict';
347
348	function resizeMap(className){
349		$(className).each(function(){
350			var elem = $(this);
351			elem.height(elem.width() / 2);
352
353			var mappa = elem.data('mappa');
354
355			if (typeof mappa != 'undefined')
356				mappa.invalidateSize();
357		});
358	}
359
360	$(function(){
361		var ridimensionaMappaEventi = resizeMap('.wonder-plugin-mappa-eventi');
362		var ridimensionaMappaStores = resizeMap('.wonder-plugin-mappa-stores');
363
364		$('.wonder-plugin-elenco-stores').each(function(){
365			var elem = $(this),
366				url = elem.data('url');
367
368			$.ajax({
369				url:url + 'api/frontend/store/get-elenco-store',
370				data:{ },
371				dataType:'json',
372				method:'POST',
373				success:function(data){
374					var status = data.status,
375						data = data.data;
376
377					/*
378					 * Stores Interface
379					 * address
380					 * id
381					 * id_comune
382					 * id_provincia
383					 * id_regione
384					 * image
385					 * lat
386					 * lng
387					 * slug
388					 * zoom
389					 */
390
391					var html = '';
392
393					if (parseInt(status))
394						for (var i = 0; i < data.length; ++i){
395							html += '<div class="evento" data-category-id="' + JSON.parse(data[i].category_id)[0] + '">';
396							html += '<a href="' + current_url.concat(data[i].slug) + '">';
397							html += '<div class="interno">';
398							html += '<div class="immagine" style="' + (data[i].image != '' ? ('background-image:url(' + data[i].image + ')') : '') + '"></div>';
399							html += '<h5 class="nome">' + data[i].name + '</h5>';
400							html += '</div>';
401							html += '</a>';
402							html += '</div>';
403						}
404
405					elem.html(html);
406				}
407			});
408		});
409
410		$('.wonder-plugin-elenco-categorie-stores').each(function(){
411			var elem = $(this),
412				url = elem.data('url');
413
414			$.ajax({
415				url:url + 'api/frontend/store/get-categorie-store',
416				data:{ },
417				dataType:'json',
418				method:'POST',
419				success:function(data){
420					var status = data.status,
421						data = data.data;
422
423					/*
424					 * Stores Category Interface
425					 * id
426					 * img
427					 * name
428					 */
429
430					var html = '';
431
432					if (parseInt(status))
433						for (var i = 0; i < data.length; ++i){
434							html += '<li class="categoria-wonder-store" data-category-id="' + data[i].id + '" onclick="filter_shops(' + data[i].id + ')">';
435							html += '<div class="interno">';
436							html += '<div class="immagine" style="' + (data[i].img != '' ? ('background-image:url(' + data[i].img + ')') : '') + '"></div>';
437							html += '<h5 class="nome">' + data[i].name + '</h5>';
438							html += '</div>';
439							html += '</li>';
440						}
441
442					elem.html(html);
443				}
444			});
445		});
446
447		if ($('.wonder-plugin-mappa-stores').length){
448			$('.wonder-plugin-mappa-stores').each(function(){
449				var elem = $(this),
450					url = elem.data('url');
451
452				$.ajax({
453					url:url + 'api/frontend/store/get-elenco-store',
454					data:{ },
455					dataType:'json',
456					method:'POST',
457					success:function(data){
458						var status = data.status,
459							data = data.data;
460
461						/*
462						 * Stores Interface
463						 * address
464						 * id
465						 * id_comune
466						 * id_provincia
467						 * id_regione
468						 * image
469						 * lat
470						 * lng
471						 * slug
472						 * zoom
473						 */
474
475						if (parseInt(status)){
476							var indirizzi = new Array(), lats = new Array(), lngs = new Array(), zooms = new Array();
477							
478							for (var i = 0; i < data.length; ++i){
479								if (data[i].address != '' && data[i].lat != '' && data[i].lng != '' && data[i].zoom != ''){
480									indirizzi.push('<strong><a href="' + current_url.concat(data[i].slug) + '"><img style="margin-bottom:10px" src="' + data[i].image + '" alt="' + data[i].name + '" title="' + data[i].name + '" /></a></strong>' + data[i].address);
481									lats.push(parseFloat(data[i].lat));
482									lngs.push(parseFloat(data[i].lng));
483									zooms.push(parseInt(data[i].zoom));
484								}
485							}
486
487							if (indirizzi.length){
488								var map_div = elem;
489								var avg_lat = lats.reduce((a, b) => a + b) / lats.length;
490								var avg_lng = lngs.reduce((a, b) => a + b) / lngs.length;
491								var avg_zoom = (zooms.reduce((a, b) => a + b) / zooms.length).toFixed(0);
492
493								var center = [ avg_lat, avg_lng ];
494
495								var map = L.map(map_div[0], {
496									center:center,
497									zoom:avg_zoom,
498									maxZoom:18,
499									gestureHandling:true
500								});
501
502								var tile_layer = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
503									attribution:'',
504									maxZoom:18
505								}).addTo(map);
506
507								map.locate({ setView:false });
508								map.on('locationfound', onLocationFound);
509								map.on('locationerror', onLocationError);
510
511								var blueIcon = new L.Icon({
512									iconUrl:wonder_paywall.url + 'img/marker-icon-2x-blue.png',
513									iconSize:[ 25, 41 ],
514									iconAnchor:[ 12, 41 ],
515									popupAnchor:[ 1, -34 ],
516									shadowSize:[ 41, 41 ]
517								});
518
519								var markers = new Array();
520
521								for (var i = 0; i < indirizzi.length; ++i){
522									markers[i] = L.marker([ lats[i], lngs[i] ], {
523										icon:blueIcon,
524										alt:JSON.parse(data[i].category_id).toString().split(',').join(' ')
525									}).addTo(map);
526
527									markers[i].bindPopup(indirizzi[i]);
528								}
529
530								maps.push(map);
531								map_div.data('mappa', map);
532							}
533						}
534					}
535				});
536			});
537
538			setTimeout(ridimensionaMappaEventi, 100);
539			$(window).resize(ridimensionaMappaEventi);
540		}
541
542		$('.wonder-plugin-elenco-eventi').each(function(){
543			var elem = $(this),
544				url = elem.data('url'),
545				slug = elem.data('slug');
546
547			$.ajax({
548				url:url + 'api/frontend/ordini-eventi/get-elenco-eventi/' + slug,
549				data:{ },
550				dataType:'json',
551				method:'POST',
552				success:function(data){
553					var html = '';
554
555					if (parseInt(data.status))
556						for (var i = 0; i < data.eventi.length; ++i){
557							html += '<div class="evento">';
558							html += '<a href="' + url + 'prenotazione-eventi/index/' + slug + '?e=' + data.eventi[i].id + '">';
559							html += '<div class="interno">';
560							html += '<div class="immagine" style="' + (data.eventi[i].img != '' ? ('background-image:url(' + data.eventi[i].img + ')') : '') + '"></div>';
561							html += '<h5 class="nome">' + data.eventi[i].nome + '</h5>';
562							html += '</div>';
563							html += '</a>';
564							html += '</div>';
565						}
566
567					elem.html(html);
568				}
569			});
570		});
571
572		$('.wonder-plugin-singolo-evento').each(function(){
573			var elem = $(this),
574				id = elem.data('id'),
575				url = elem.data('url'),
576				slug = elem.data('slug');
577
578			$.ajax({
579				url:url + 'api/frontend/ordini-eventi/get-evento-data-from-id/' + slug,
580				data:{ id_evento:id },
581				dataType:'json',
582				method:'GET',
583				success:function(data){
584					if (parseInt(data.status)){
585						var lat = parseFloat(data.dati_evento.lat),
586							lng = parseFloat(data.dati_evento.lng),
587							zoom = parseInt(data.dati_evento.zoom);
588
589						var html = '<h2 class="nome">' + data.dati_evento.nome + '</h2>';
590						html += '<div class="descrizione">' + data.dati_evento.descrizione + '</div>';
591
592						html += '<div class="dettagli' + ((lat != 0 || lng != 0 || zoom != 0) ? ' con-mappa' : '') + (data.dati_evento.img != '' ? ' con-immagine' : '') + '">';
593
594						if (data.dati_evento.img != '')
595							html += '<div class="immagine" style="background-image:url(' + data.dati_evento.img + ');"></div>';
596
597						if (lat != 0 || lng != 0 || zoom != 0)
598							html += '<div class="mappa"></div>';
599
600						html += '</div>';
601						html += '<div class="pulsanti-azioni">';
602						html += '<a href="' + url + 'prenotazione-eventi/checkout/' + slug + '/' + id + '" class="pulsante"><i class="dashicons dashicons-cart"></i> Acquista</a>';
603
604						if (data.dati_audioguide.length)
605							html += '<a href="' + url + 'prenotazione-eventi/apri-audioguida/' + slug + '/' + id + '" class="pulsante"><i class="dashicons dashicons-controls-volumeon"></i> Ascolta l\'audioguida.</a>';
606
607						if (lat != 0 || lng != 0 || zoom != 0)
608							html += '<a href="https://www.google.com/maps?q=' + lat + ',' + lng + '" class="pulsante"><i class="dashicons dashicons-location"></i> Portami lì</a>';
609
610						html += '</div>';
611
612						var e = $(html);
613
614						e.appendTo(elem);
615
616						if (lat != 0 || lng != 0 || zoom != 0){
617							var center = [ lat, lng ];
618
619							var map = L.map(elem.find('.mappa')[0], {
620								center:center,
621								zoom:zoom,
622								maxZoom:18,
623								gestureHandling:true
624							});
625
626							var tile_layer = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
627								attribution:'',
628								maxZoom:18
629							}).addTo(map);
630
631							map.locate({ setView:false });
632							map.on('locationfound', onLocationFound);
633							map.on('locationerror', onLocationError);
634
635							var blueIcon = new L.Icon({
636								iconUrl:wonder_paywall.url + 'img/marker-icon-2x-blue.png',
637								shadowUrl:wonder_paywall.url + 'img/marker-shadow.png',
638								iconSize:[ 25, 41 ],
639								iconAnchor:[ 12, 41 ],
640								popupAnchor:[ 1, -34 ],
641								shadowSize:[ 41, 41 ]
642							});
643
644							var marker = L.marker(center, { icon:blueIcon }).addTo(map);
645							marker.bindPopup(data.dati_evento.indirizzo).openPopup();
646
647							maps.push(map);
648						}
649					}
650				}
651			});
652		});
653
654		if ($('.wonder-plugin-mappa-eventi').length){
655			$('.wonder-plugin-mappa-eventi').each(function(){
656				var elem = $(this),
657					url = elem.data('url'),
658					slug = elem.data('slug');
659
660				$.ajax({
661					url:url + 'api/frontend/ordini-eventi/get-elenco-eventi/' + slug,
662					data:{ },
663					dataType:'json',
664					method:'POST',
665					success:function(data){
666						if (parseInt(data.status)){
667							var indirizzi = new Array(),
668								lats = new Array(),
669								lngs = new Array(),
670								zooms = new Array();
671
672							for (var i = 0; i < data.eventi.length; ++i){
673								if (data.eventi[i].indirizzo != '' && data.eventi[i].lat != '' && data.eventi[i].lng != '' && data.eventi[i].zoom != ''){
674									indirizzi.push('<strong><a href="' + url + 'prenotazione-eventi/index/' + slug + '?e=' + data.eventi[i].id + '">' + data.eventi[i].nom
674e + '</a></strong><br />' + data.eventi[i].indirizzo);
675									lats.push(parseFloat(data.eventi[i].lat));
676									lngs.push(parseFloat(data.eventi[i].lng));
677									zooms.push(parseInt(data.eventi[i].zoom));
678								}
679							}
680
681							if (indirizzi.length){
682								var map_div = elem;
683								var avg_lat = lats.reduce((a, b) => a + b) / lats.length;
684								var avg_lng = lngs.reduce((a, b) => a + b) / lngs.length;
685								var avg_zoom = (zooms.reduce((a, b) => a + b) / zooms.length).toFixed(0);
686
687								var center = [avg_lat, avg_lng ];
688
689								var map = L.map(map_div[0], {
690									center:center,
691									zoom:avg_zoom,
692									maxZoom:18,
693									gestureHandling:true
694								});
695
696								var tile_layer = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
697									attribution:'',
698									maxZoom:18
699								}).addTo(map);
700
701								map.locate({ setView:false });
702								map.on('locationfound', onLocationFound);
703								map.on('locationerror', onLocationError);
704
705								var blueIcon = new L.Icon({
706									iconUrl:wonder_paywall.url + 'img/marker-icon-2x-blue.png',
707									shadowUrl:wonder_paywall.url + 'img/marker-shadow.png',
708									iconSize:[ 25, 41 ],
709									iconAnchor:[ 12, 41 ],
710									popupAnchor:[ 1, -34 ],
711									shadowSize:[ 41, 41 ]
712								});
713
714								var markers = new Array();
715
716								for (var i = 0; i < indirizzi.length; ++i){
717									markers[i] = L.marker([ lats[i], lngs[i] ], { icon:blueIcon }).addTo(map);
718									markers[i].bindPopup(indirizzi[i]);
719								}
720
721								maps.push(map);
722								map_div.data('mappa', map);
723							}
724						}
725					}
726				});
727			});
728
729			setTimeout(ridimensionaMappaStores, 100);
730			$(window).resize(ridimensionaMappaStores);
731		}
732
733		$('.wonder-plugin-elenco-coupon').each(function(){
734			var elem = $(this),
735				url = elem.data('url'),
736				slug = elem.data('slug'),
737				logo = elem.data('logo-azienda');
738
739			$.ajax({
740				url:url + 'api/frontend/coupon/get-elenco-coupon/' + slug,
741				data:{ },
742				dataType:'json',
743				method:'POST',
744				success:function(data){
745					var html = '';
746
747					/*
748					 * Coupon Interface 
749					 * codice
750					 * comune
751					 * id
752					 * image
753					 * indirizzo
754					 * name
755					 * provincia
756					 * testo
757					 * titolo
758					 */
759
760					if (parseInt(data.status))
761						for (var i = 0; i < data.coupon.length; ++i){
762							html += '<div class="cp-wrapper"><div class="wonder-plugin-singolo-coupon 2-col" data-id="' + data.coupon[i].id + '">';
763
764							if (data.coupon[i].image != '')
765								html += '<div class="dettagli" style="float:left; width:150px; height:150px; background-position:center; background-size:cover; margin:0px 15px 0px 0px; background-image:url(' + data.coupon[i].image + ');"></div>';
766
767							html += '<h2 class="nome">' + data.coupon[i].codice + (data.coupon[i].titolo != '' ? (' - ' + data.coupon[i].titolo) : '') + '</h2>';
768							html += '<div class="descrizione">' + data.coupon[i].testo + '</div>';
769
770							if (data.coupon[i].name != '')
771								html += '<address>Presso ' + data.coupon[i].codice + ' - ' + data.coupon[i].indirizzo + ' - ' + data.coupon[i].comune + ' (' + data.coupon[i].provincia + ')</address>';
772
773							html += '<button class="download-coupon" onclick="printCouponFromList(event)"> Clicca qui per scaricare il coupon </button>';
774							html += '</div></div>';
775						}
776
777					elem.html(html);
778				}
779			});
780		});
781
782		$('.wonder-plugin-singolo-coupon').each(function(){
783			var elem = $(this),
784				id = elem.data('id'),
785				url = elem.data('url'),
786				logo = elem.data('logo-azienda');
787
788			$.ajax({
789				url:url + 'api/frontend/coupon/get-dettaglio-coupon/' + id,
790				data:{ },
791				dataType:'json',
792				method:'GET',
793				success:function(data){
794					if (parseInt(data.status)){
795						var html = '';
796						var wrapperclass = '';
797
798						if (logo){
799							html += '<div class="cp-logo"><img class="img-responsive" src="' + data.coupon.shop_image + '"></div>';
800							wrapperclass = ' small';
801						}
802
803						html += '<div class="cp-wrapper' + wrapperclass + '">';
804
805						if (data.coupon.image != '')
806							html += '<div class="dettagli" style="float:left; width:150px; height:150px; background-position:center; background-size:cover; margin:0px 15px 0px 0px; background-image:url(' + data.coupon.image + ');"></div>';
807
808						html += '<h2 class="nome">' + data.coupon.codice + (data.coupon.titolo != '' ? (' - ' + data.coupon.titolo) : '') + '</h2>';
809						
810						html += '<div class="descrizione">' + data.coupon.testo + '</div>';
811						
812						if (data.coupon.name != '')
813							html += '<address>Presso ' + data.coupon.name + ' - ' + data.coupon.indirizzo + ' - ' + data.coupon.comune + ' (' + data.coupon.provincia + ')</address>';
814
815						html += '<button class="download-coupon" onclick="printCoupon(event)"> Clicca qui per scaricare il coupon </button></div>';
816
817						var e = $(html);
818
819						e.appendTo(elem);
820					}
821				}
822			});
823		});
824
825		if ($('.wonder-plugin-elenco-stores-e-mappa').length > 0){
826			$('.wonder-plugin-elenco-stores-e-mappa').each(function(){
827				var elem = $(this),
828					url = elem.data('url');
829	
830				var indirizzi = new Array(),
831					lats = new Array(),
832					lngs = new Array(),
833					zooms = new Array(),
834					store_name = new Array();
835
836				$.ajax({
837					url: url + 'api/frontend/store/get-elenco-store',
838					data:{ },
839					dataType:'json',
840					method:'POST',
841					success:function(data){
842						var status = data.status,
843							data = data.data;
844
845						/*
846						 * Stores Interface
847						 * address
848						 * id
849						 * comune
850						 * provincia
851						 * regione
852						 * image
853						 * lat
854						 * lng
855						 * slug
856						 * zoom
857						 */
858						var html = '';
859						
860						if (parseInt(status)){
861							html += '<div class="stores-list"><input type="text" id="filter-store-list" onkeyup="filter_store_list(event)" placeholder="Cerca uno store per nome." />';
862
863							for (var i = 0; i < data.length; ++i){
864								var class_category = '';
865
866								for (var g = 0; g < JSON.parse(data[i].category_id).length; g++)
867									class_category += ' category_' + JSON.parse(data[i].category_id)[g];
868
869								html += '<div class="evento ' + class_category + '" data-category="' + JSON.parse(data[i].category_id).toString().split(',').join(' ') + '" data-category-name="' + data[i].name + '">';
870								html += '<a href="' + current_url.concat(data[i].slug) + '">';
871								html += '<div class="interno">';
872								html += '<div class="immagine" style="' + (data[i].image != '' ? ('background-image:url(' + data[i].image + ')') : '') + '"></div>';
873								html += '<h5 class="nome">' + data[i].name + '</h5>';
874								html += '<h5 class="place-address">' + data[i].address + '</h5>';
875								html += '<h5 class="place-address">' + data[i].comune + ' (' + data[i].provincia + ')' + '</h5>';
876								html += '</div>';
877								html += '</a>';
878								html += '</div>';
879
880								if (data[i].address != '' && data[i].lat != '' && data[i].lng != '' && data[i].zoom != ''){
881									indirizzi.push('<strong><a href="' + current_url.concat(data[i].slug) + '"><img style="margin-bottom:10px" src="' + data[i].image + '" alt="' + data[i].name + '" title="' + data[i].name + '"/></a></strong>' + data[i].address);
882									lats.push(parseFloat(data[i].lat));
883									lngs.push(parseFloat(data[i].lng));
884									zooms.push(parseInt(data[i].zoom));
885									store_name.push(data[i].name.split(' ').join('-').toLowerCase().replace(/^-+|-+(?=-|$)/g, '').replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '_'));
886								}
887							}
888
889							html += '</div><div class="mappa"></div>';
890
891							elem.html(html);
892						}
893
894						if (indirizzi.length){
895							var map_div = jQuery('.wonder-plugin-elenco-stores-e-mappa .mappa');
896							var avg_lat = lats.reduce((a, b) => a + b) / lats.length;
897							var avg_lng = lngs.reduce((a, b) => a + b) / lngs.length;
898							var avg_zoom = (zooms.reduce((a, b) => a + b) / zooms.length).toFixed(0);
899
900							var center = [avg_lat, avg_lng ];
901
902							var map = L.map(map_div[0], {
903								center:center,
904								zoom:avg_zoom,
905								maxZoom:18,
906								gestureHandling:true
907							});
908
909							var tile_layer = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
910								attribution:'',
911								maxZoom:18
912							}).addTo(map);
913
914							map.locate({ setView:false });
915							map.on('locationfound', onLocationFound);
916							map.on('locationerror', onLocationError);
917
918							var markers = new Array();
919
920							for (var i = 0; i < indirizzi.length; ++i){
921								markers[i] = L.marker([ lats[i], lngs[i] ], {
922									icon:new L.Icon({
923										iconUrl:wonder_paywall.url + 'img/marker-icon-2x-blue.png',
924										className:store_name[i],
925										iconSize:[ 25, 41 ],
926										iconAnchor:[ 12, 41 ],
927										popupAnchor:[ 1, -34 ],
928										shadowSize:[ 41, 41 ]
929									}),
930									alt:JSON.parse(data[i].category_id).toString().split(',').join(' ')
931								}).addTo(map);
932
933								markers[i].bindPopup(indirizzi[i]);
934							}
935
936							maps.push(map);
937							map_div.data('mappa', map);
938						}
939					}
940				});
941
942				setInterval(function(){
943					$('.wonder-plugin-elenco-stores-e-mappa .mappa').each(function(){
944						var elem = $(this);
945						elem.height(elem.width());
946			
947						var mappa = elem.data('mappa');
948
949						if (typeof mappa != 'undefined')
950							mappa.invalidateSize();
951					});
952				}, 100);
953
954				$(window).resize($('.wonder-plugin-elenco-stores-e-mappa .mappa'));
955			});
956		}
957	});
958})(jQuery);
959
960function filter_store_list(e){
961	e.preventDefault();
962
963	var search_text = jQuery('#filter-store-list').val();
964
965	if (search_text != ''){
966		jQuery('.leaflet-marker-icon').css({ 'display':'none' });
967
968		jQuery('.stores-list .evento').each(function(index, element){
969			var celement = jQuery(element);
970
971			if (celement.data('category-name').toLowerCase().indexOf(search_text.toLowerCase()) > -1){
972				celement.css({ 'display':'initial' });
973
974				jQuery('.' + celement.data('category-name')
975					.split(' ')
976					.join('-')
977					.toLowerCase().
978					replace(/^-+|-+(?=-|$)/g, '')
979					.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '_')
980				).css({'display' : 'initial'});
981			} else {
982				celement.css({ 'display':'none' });
983
984				jQuery('.' + celement.data('category-name')
985					.split(' ')
986					.join('-')
987					.toLowerCase()
988					.replace(/^-+|-+(?=-|$)/g, '')
989					.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '_')
990				).css({ 'display':'none' });
991			}
992		})
993	}else{
994		jQuery('.stores-list .evento').css({ 'display':'initial' });
995		jQuery('.leaflet-marker-icon').css({ 'display':'initial' });
996	}
997}
998
999function slide_category_left(){ 
1000	jQuery('.wonder-plugin-elenco-categorie-stores').animate({ scrollLeft:'-=' + (jQuery('.wonder-plugin-elenco-categorie-stores').width() - 70) }, 500);
1001}
1002
1003function slide_category_right(){ 
1004	jQuery('.wonder-plugin-elenco-categorie-stores').animate({ scrollLeft:'+=' + (jQuery('.wonder-plugin-elenco-categorie-stores').width() - 70) }, 500);
1005}
1006
1007function printCoupon(e){
1008	e.preventDefault();
1009
1010	jQuery(e.target).closest('.wonder-plugin-singolo-coupon').addClass('click');
1011
1012	getPaywallSession(function(wonder_paywall_public){
1013		if (wonder_paywall_public && wonder_paywall_public.email != '')
1014			jQuery('.wonder-plugin-singolo-coupon.click').each(function(){
1015				var elem = jQuery(this),
1016					id = elem.data('id');
1017
1018				elem.removeClass('click');
1019
1020				ga('send', {
1021					hitType:'event',
1022					eventCategory:'Download Coupon',
1023					eventAction:'Coupon id: ' + id,
1024					eventLabel:'Email: ' + wonder_paywall_public.email
1025				});
1026
1027				window.open(wonder_paywall.wonder_paywall_system_url + 'stampa-coupon?id=' + id + '&id_utente=' + wonder_paywall_public.email, '_blank');
1028			});
1029	});
1030}
1031
1032function printCouponFromList(e){
1033	e.preventDefault();
1034
1035	jQuery(e.target).closest('.wonder-plugin-elenco-coupon').addClass('click');
1036
1037	getPaywallSession(function(wonder_paywall_public){
1038		if (wonder_paywall_public && wonder_paywall_public.email != '')
1039			jQuery('.wonder-plugin-elenco-coupon.click').each(function(){
1040				var elem = jQuery(this),
1041					id = elem.data('id');
1042
1043				elem.removeClass('click');
1044
1045				ga('send', {
1046					hitType:'event',
1047					eventCategory:'Download Coupon',
1048					eventAction:'Coupon id: ' + id,
1049					eventLabel:'Email: ' + wonder_paywall_public.email
1050				});
1051
1052				window.open(wonder_paywall.wonder_paywall_system_url + 'stampa-coupon?id=' + id + '&id_utente=' + wonder_paywall_public.email, '_blank');
1053			});
1054	});
1055}
1056
1057function printCouponFromShop(e){
1058	e.preventDefault();
1059
1060	jQuery(e.target).addClass('coupon-from-shop-click');
1061
1062	getPaywallSession(function(wonder_paywall_public){
1063		if (wonder_paywall_public && wonder_paywall_public.email != '')
1064			jQuery('.coupon-from-shop-click').each(function(){
1065				var elem = jQuery(this),
1066					id = elem.data('id');
1067
1068				elem.removeClass('coupon-from-shop-click');
1069
1070				ga('send', {
1071					hitType:'event',
1072					eventCategory:'Download Coupon',
1073					eventAction:'Coupon id: ' + id,
1074					eventLabel:'Email: ' + wonder_paywall_public.email
1075				});
1076
1077				window.open(wonder_paywall.wonder_paywall_system_url + 'stampa-coupon?id=' + id + '&id_utente=' + wonder_paywall_public.email, '_blank');
1078			});
1079	});
1080}

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.