Rendimenti e quotazioni
null SPV DINAMICO
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> label_gestione_separata_associata  [in template "10154#10194#TEMPLATE_RENDIMENTI_E_QUOTAZIONI" at line 1301, column 64]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign titolo_gs_associata = label_g...  [in template "10154#10194#TEMPLATE_RENDIMENTI_E_QUOTAZIONI" at line 1301, column 33]
----
1<#-- Questo web content deve poter utilizzare CSS e JS di Intesa_Vita-theme7 o di ISPVita-theme, a seconda di come e' configurata la pagina --> 
2 
3<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/jquery.jqplot.min.css" rel="stylesheet" /> 
4<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/jquery-ui.css" rel="stylesheet" /> 
5<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/rendimentoDettaglioValore.css" rel="stylesheet" /> 
6 
7<#if (impostaDataDefault?has_content && getterUtil.getBoolean(impostaDataDefault.getData()))> 
8	<#assign data_inizio_default_grafico_Data = getterUtil.getBoolean(impostaDataDefault.data_inizio_default_grafico.getData())> 
9<#else> 
10	<#assign data_inizio_default_grafico_Data = 0> 
11</#if> 
12 
13 
14 
15 
16<#assign _scopeThemplateNameSite = themeDisplay.getScopeGroup()> 
17<#assign groupId = themeDisplay.getScopeGroup().getGroupId()> 
18 
19<#if data_inizio_default_grafico_Data gt 0 > 
20	<#assign data_inizio_default_grafico_DateObj = dateUtil.newDate(data_inizio_default_grafico_Data)> 
21	<#assign dataDefaultVisualizzazione = dateUtil.getDate(data_inizio_default_grafico_DateObj, "yyyy/MM/dd", locale)> 
22	<div id="dataDefaultVisualizzazionediv" style="display:none;">${dataDefaultVisualizzazione}</div> 
23<#else> 
24	<div id="dataDefaultVisualizzazionediv" style="display:none;"></div> 
25</#if> 
26 
27<#assign logaritmica = false> 
28<#if Abilita_scala_logaritmica?has_content> 
29	<#assign logaritmica = getterUtil.getBoolean(Abilita_scala_logaritmica.getData())> 
30</#if> 
31 
32<#if groupLocalService.getGroup(groupId).getName()?contains("areapubblica (Staging)") || groupLocalService.getGroup(groupId).getName()?contains("areapubblica")> 
33 
34<#if Fondo_In_valuta?? && getterUtil.getBoolean(Fondo_In_valuta.getData())>  <#-- Se Fondo_In_valuta = true --> 
35<#-- INIZIO GS IN VALUTA --> 
36<#assign localeIT = localeUtil.fromLanguageId("it")> 
37<#assign currentGroup = groupLocalService.getGroup(groupId)> 
38<#assign checkDisplayDate = !currentGroup.isStagingGroup()> 
39<#assign user = ""> 
40<#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!=""> 
41	<#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))> 
42<#else> 
43	<#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))> 
44</#if> 
45 
46<#assign current_url = request.getAttribute("CURRENT_URL")> 
47<#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))> 
48<#assign catId = getterUtil.getLong(catIdStr)> 
49<!-- catIdStr - catId --> 
50<#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))> 
51<#assign subcatId = getterUtil.getLong(subcatIdStr)> 
52<!-- subcatIdStr - subcatId --> 
53<#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))> 
54<!-- categoria --> 
55<#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))> 
56<!-- $sottoCategoria --> 
57 
58 
59<!-- Take layout id --> 
60<#assign currentLayoutId = themeDisplay.getPlid()> 
61<#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)> 
62 
63<!-- parent layoutId --> 
64<#assign currentLayoutParentPlid = currentLayout.getParentPlid()> 
65<#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid)> 
66 
67 
68<#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()> 
69<#if validator.isNull(catKey)> 
70	<#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()> 
71</#if> 
72 
73<#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()> 
74 
75<#assign isOICR = false> 
76<!-- pretitolo --> 
77<#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) || catKey?lower_case == "rivalutabili"> 
78	<#assign pre_titolo_rendimento = "Gestione Separata"> 
79<#elseif categoria?lower_case == "index linked"> 
80	<#assign pre_titolo_rendimento = "Indice"> 
81<#elseif categoria?lower_case == "oicr"> 
82	<#assign pre_titolo_rendimento = "OICR"> 
83	<#assign isOICR = true> 
84<#else> 
85	<#assign pre_titolo_rendimento = "Fondo"> 
86</#if> 
87 
88<!-- valore dei fondi dal web content --> 
89<#assign valoreFondoUno =  confTool.getValoreFondoFromStr(valore_1.getData(), locale)> 
90 
91<#if getterUtil.getBoolean(Fondo_In_valuta.getData())> 
92	<!-- titolo --> 
93	<#assign titolo_rendimento = Titolo_rendimento.getData()> 
94 
95	<#assign valutaFondoUno = valuta1.getData()> 
96	<#assign ultimaDataCambio = dateUtil.getDate(confTool.getLatestTassoDiCambio().getDataCambio(), "dd/MM/yyyy", localeIT)> 
97 
98</#if> 
99 
100<!-- INIZIO PRIMO BLOCCO --> 
101 
102<#assign titolo_gs_associata = label_gestione_separata_associata.getData()> 
103<#assign titolo_da_visualizzare = titolo_rendimento> 
104 
105<#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) && validator.isNotNull(titolo_gs_associata)> 
106	<#if categoria?lower_case == "previdenza"> 
107		<#assign titolo_da_visualizzare = titolo_gs_associata> 
108	</#if> 
109</#if> 
110<div class="boxesDettaglio togliMargin"> 
111	<div> 
112		<div class="supTitle capitalize">${pre_titolo_rendimento}</div> 
113		<h1 class="titoloRendimento">${titolo_da_visualizzare}</h1> 
114	</div> 
115 
116	<!-- blocco valore corrente valore protetto --> 
117 
118	<script type="text/javascript"> 
119 
120		var divisaSimboloMap = { 
121			'EUR': '&#8364;', 
122			'USD': '$', 
123			'':'', 
124			'%':'%' 
125		}; 
126 
127		jQuery(document).ready(function(){ 
128			var listaValuta=jQuery(".titoloValuta"); 
129			if (listaValuta!=null){ 
130				for (var i=0;i<listaValuta.length;i++){ 
131					if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){ 
132						var listaValuta_split = listaValuta.get(i).innerHTML.split(','); 
133						var parteIntera = listaValuta_split[0]; 
134						if(listaValuta_split[1].indexOf(" ")){ 
135							var listaValuta1_split = listaValuta_split[1].split(" "); 
136							var parteDecimale = listaValuta1_split[0]; 
137							var parteValuta = listaValuta1_split[1]; 
138						}else{ 
139							var parteDecimale = listaValuta_split[1]; 
140							var parteValuta = ""; 
141
142 
143						var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
144						console.log(parteValutaMap + "-" + parteValuta ); 
145						var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
146						listaValuta.get(i).innerHTML = html; 
147					}else{ 
148						console.log(listaValuta.get(i).innerHTML); 
149						if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){ 
150							var listaValuta_split = listaValuta.get(i).innerHTML.split(" "); 
151							var parteIntera = listaValuta_split[0]; 
152							var parteValuta = listaValuta_split[1]; 
153							var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
154							console.log(parteValutaMap + "-" + parteValuta ); 
155							var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
156							listaValuta.get(i).innerHTML = html; 
157
158
159
160
161		}); 
162	</script> 
163 
164	<!-- blocco a singola colonna --> 
165	<div class="bloccoValori" > 
166		<h4 class="titoloValori">${Label_valore_corrente.getData()}</h4> 
167		<div class="bloccoValuta"> 
168			<h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3> 
169			<h6 class="dataValuta">Aggiornato al ${ultimaDataCambio}</h6> 
170		</div> 
171	</div> 
172 
173</div> 
174<!-- FINE PRIMO BLOCCO --> 
175 
176<div class="template_rendimenti_e_quotazioni"> 
177	<!-- INIZIO BLOCCO (GRAFICO STORICO) --> 
178	<div class="boxesDettaglio storicGraph"> 
179		<#assign _listaTassiDiCambio = confTool.getTassoDiCambio()> 
180		<div class="reset"> 
181			<h5 class="titolo"> 
182				Andamento del tasso di cambio Euro/Dollari rilevato alle 14:00 ora italiana. <small class="">Dati aggiornati al ${ultimaDataCambio}.</small> 
183			</h5> 
184			<#if _listaTassiDiCambio?size gt 0> 
185				<div class="graficoRendimento" > 
186					<div id="chartdiv"></div> 
187				</div> 
188				<div class="datePickers input-text-custom-datepicker-container reset"> 
189 
190					<div class="inizio"> 
191						<div class="input-text-wrapper"> 
192							<label for="datepickerDa" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
193								<span class="truncate-text">Data di inizio</span> 
194							</label> 
195 
196							<input type="text" class="is-hoverable datePicker" id="datepickerDa" value="${_datiStorico.getDataInizialeString()}" aria-label="Seleziona data inizio andamento"/> 
197 
198							<small id="customHelpTextIdDatepickerDa" class="form-text text-muted custom-help-text"></small> 
199 
200							<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
201 
202						</div> 
203					</div> 
204 
205					<div class="fine"> 
206						<div class="input-text-wrapper"> 
207							<label for="datepickerA" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
208								<span class="truncate-text">Data di fine</span> 
209							</label> 
210 
211							<input type="text" class="is-hoverable datePicker" id="datepickerA" value="${_datiStorico.getDataFinaleString()}" aria-label="Seleziona data fine andamento"/> 
212 
213							<small id="customHelpTextIdDatepickerA" class="form-text text-muted custom-help-text"></small> 
214 
215							<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
216						</div> 
217					</div> 
218 
219				</div> 
220				<p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p> 
221				<p class="reset" style="font-style:italic"> 
222					Attenzione: i valori passati non sono indicativi di quelli futuri. 
223				</p> 
224			</#if> 
225		</div> 
226	</div> 
227	<!-- FINE BLOCCO GRAFICO --> 
228 
229	<!-- BLOCCO PROSPETTO --> 
230	<#if !( 
231	!Colonna_prospetto.getSiblings()?has_content || 
232	(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
233	(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
234	(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
235	)))> 
236	<div class="boxesDettaglio togliMargin"> 
237		<div class="reset"> 
238			<h5 class="titolo prospetto">${label_prospetto.getData()}</h5> 
239			<p class="">${descrizione_prospetto.getData()}</p> 
240		</div> 
241 
242		<#if $Colonna_prospetto.getSiblings()?has_content> 
243			<div class="table"> 
244 
245			<div class="row theader"> 
246				<div class="cell"> 
247					<!-- prima colonnavuota --> 
248				</div> 
249 
250				<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
251					<div class="cell"> 
252						${cur_Colonna_prospetto.getData()} 
253					</div> 
254				</#list> 
255 
256			</div> 
257 
258			<#if Tipo_generazione_righe_prospetto.getData()=="dinamico"> 
259 
260				<#if $Nome_Riga_Prospetto.getSiblings()?has_content> 
261					<#assign contatore_righe = 0> 
262					<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto> 
263 
264						<div class="row"> 
265							<div class="cell"> 
266								<div class="">${cur_Nome_Riga_Prospetto.getData()}</div> 
267							</div> 
268 
269							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
270								<div class="cell"> 
271									<#assign contatore_allegati = 0> 
272									<#assign allegatoUrl = ''> 
273 
274									<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
275										<#if contatore_allegati == contatore_righe> 
276											<#assign allegatoUrl = allegato.getData()> 
277										</#if> 
278										<#assign contatore_allegati = contatore_allegati + 1> 
279									</#list> 
280 
281									<#assign dlFileVersion = ''> 
282									<#if validator.isNotNull(allegatoUrl)> 
283										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
284									</#if> 
285									<#if validator.isNotNull(dlFileVersion)> 
286										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
287									<#else> 
288										<div>&mdash;</div> 
289									</#if> 
290								</div> 
291							</#list> 
292						</div> 
293 
294						<#assign contatore_righe = contatore_righe + 1> 
295					</#list> 
296 
297					</div> 
298 
299				</#if> 
300 
301			</#if> 
302		</#if> 
303 
304 
305		<#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali"> 
306			<div class="row"> 
307				<div class="cell"> 
308					<div class="">Composizione al 31/03</div> 
309				</div> 
310 
311				<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
312					<div class="cell"> 
313						<#assign contatore_allegati = 0> 
314						<#assign allegatoUrl = ''> 
315						<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
316							<#if contatore_allegati == 0> 
317								<#assign allegatoUrl = allegato.getData()> 
318							</#if> 
319							<#assign contatore_allegati = contatore_allegati + 1> 
320						</#list> 
321 
322						<#assign dlFileVersion = ''> 
323						<#if validator.isNotNull(allegatoUrl)> 
324							<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
325						</#if> 
326						<#if validator.isNotNull(dlFileVersion)> 
327							<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
328						<#else> 
329							<div>&mdash;</div> 
330						</#if> 
331					</div> 
332				</#list> 
333 
334			</div> 
335 
336 
337			<div class="row"> 
338				<div class="cell"> 
339					<div class="">Composizione al 30/06</div> 
340				</div> 
341 
342				<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2> 
343					<div class="cell"> 
344						<#assign contatore_allegati = 0> 
345						<#assign allegatoUrl = ''> 
346						<#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato> 
347							<#if contatore_allegati == 1> 
348								<#assign allegatoUrl = allegato.getData()> 
349							</#if> 
350							<#assign contatore_allegati = contatore_allegati + 1> 
351						</#list> 
352 
353						<#assign dlFileVersion = ''> 
354						<#if validator.isNotNull(allegatoUrl)> 
355							<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
356						</#if> 
357						<#if validator.isNotNull(dlFileVersion)> 
358							<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
359						<#else> 
360							<div>&mdash;</div> 
361						</#if> 
362					</div> 
363				</#list> 
364 
365			</div> 
366 
367 
368			<div class="row"> 
369				<div class="cell"> 
370					<div class="">Composizione al 30/09</div> 
371				</div> 
372 
373				<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3> 
374					<div class="cell"> 
375						<#assign contatore_allegati = 0> 
376						<#assign allegatoUrl = ''> 
377						<#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato> 
378							<#if contatore_allegati == 2> 
379								<#assign allegatoUrl = allegato.getData()> 
380							</#if> 
381							<#assign contatore_allegati = contatore_allegati + 1> 
382						</#list> 
383 
384						<#assign dlFileVersion = ''> 
385						<#if validator.isNotNull(allegatoUrl)> 
386							<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
387						</#if> 
388						<#if validator.isNotNull(dlFileVersion)> 
389							<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
390						<#else> 
391							<div>&mdash;</div> 
392						</#if> 
393					</div> 
394				</#list> 
395 
396			</div> 
397 
398			<div class="row"> 
399				<div class="cell"> 
400					<div class="">Composizione al 31/12</div> 
401				</div> 
402 
403				<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4> 
404					<div class="cell"> 
405						<#assign contatore_allegati = 0> 
406						<#assign allegatoUrl = ''> 
407						<#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato> 
408							<#if contatore_allegati == 3> 
409								<#assign allegatoUrl = allegato.getData()> 
410							</#if> 
411							<#assign contatore_allegati = contatore_allegati + 1> 
412						</#list> 
413 
414						<#assign dlFileVersion = ''> 
415						<#if validator.isNotNull(allegatoUrl)> 
416							<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
417						</#if> 
418						<#if validator.isNotNull(dlFileVersion)> 
419							<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
420						<#else> 
421							<div>&mdash;</div> 
422						</#if> 
423					</div> 
424				</#list> 
425 
426			</div> 
427		</#if> 
428 
429		##</div> 
430</div> 
431</#if> 
432 
433<!-- INIZIO BLOCCO SMARTPHONE PROSPETTO --> 
434<#if !( 
435!Colonna_prospetto.getSiblings()?has_content || 
436(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
437(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
438(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
439)))> 
440	<div class="table_smart secondaTab prospetto"> 
441		<table> 
442			<tbody> 
443 
444			<#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData() > <!-- in realta per gli smart le righe sono colonne --> 
445			<#if tipo_colonne_prospetto == "dinamico"> 
446 
447				<tr class="intestazione_smart"> 
448					<td colspan="1">Anno</td> 
449					<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto> 
450						<td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td> 
451					</#list> 
452				</tr> 
453 
454				<#if Colonna_prospetto.getSiblings()?has_content> 
455					<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
456						<#assign velocityCount = cur_Colonna_prospetto?index/> 
457						<#if velocityCount % 2 == 0> 
458							<tr class="pari"> 
459						<#elseif velocityCount % 2 == 1> 
460							<tr class="dispari"> 
461						</#if> 
462 
463						<td>${cur_Colonna_prospetto.getData()}</td> 
464						<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
465							<#assign allegatoUrl = ''> 
466							<td> 
467								<#assign allegatoUrl = allegato.getData()> 
468								<#assign dlFileVersion = ''> 
469								<#if validator.isNotNull(allegatoUrl)> 
470									<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
471								</#if> 
472								<#if validator.isNotNull(dlFileVersion)> 
473									<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
474								<#else> 
475									<div>&mdash;</div> 
476								</#if> 
477							</td> 
478						</#list> 
479						</tr> 
480					</#list> 
481				</#if> 
482 
483			<#elseif tipo_colonne_prospetto == "quadrimestrali"> 
484 
485				<tr class="intestazione_smart"> 
486					<td colspan="1">Anno</td> 
487					<td colspan="1">31Mar</td> 
488					<td colspan="1">30Giu</td> 
489					<td colspan="1">30Set</td> 
490					<td colspan="1">31Dic</td> 
491				</tr> 
492 
493				<#if Colonna_prospetto.getSiblings()?has_content> 
494 
495					<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
496						<#assign velocityCount = cur_Colonna_prospetto?index/> 
497						<#if velocityCount % 2 == 0> 
498							<tr class="pari"> 
499						<#elseif velocityCount % 2 == 1> 
500							<tr class="dispari"> 
501						</#if> 
502 
503						<td>${cur_Colonna_prospetto.getData()}</td> 
504 
505						<#assign contatore_allegati = 0> 
506						<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
507							<#assign allegatoUrl = ''> 
508							<td> 
509								<#assign allegatoUrl = allegato.getData()> 
510								<#assign dlFileVersion = ''> 
511								<#if validator.isNotNull(allegatoUrl)> 
512									<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
513								</#if> 
514								<#if validator.isNotNull(dlFileVersion)> 
515									<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
516								<#else> 
517									<div>&mdash;</div> 
518								</#if> 
519							</td> 
520						</#list> 
521						</tr> 
522					</#list> 
523				</#if> 
524			</#if> 
525			</tbody> 
526		</table> 
527	</div> 
528</#if> 
529<!-- FINE BLOCCO SMARTPHONE PROSPETTO --> 
530 
531</div> 
532<!-- FINE SECONDO BLOCCO --> 
533 
534<!-- BLOCCO (DOWNLOADS BOXES) --> 
535 
536<#if !( Download_box_label?? && Download_box_label.getData()?has_content && 
537!Download_box_label.getSiblings()?has_content || 
538(Download_box_label.getSiblings()?size==1 && 
539(!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') && 
540(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content || 
541(Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 && 
542(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='') 
543))))> 
544 
545	<#list Download_box_label.getSiblings() as cur_Download_box_label> 
546		<div class="boxesDettaglio togliMargin"> 
547			<div class="reset download"> 
548				<#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())> 
549					<#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size> 
550					<h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5> 
551				<#else> 
552					<h5 class="titolo download">${cur_Download_box_label.getData()}</h5> 
553				</#if> 
554				<#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content> 
555					<div class="archivi"> 
556						<#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box> 
557 
558						<#assign fileEntryPath = cur_Download_box.Allegato_url.getData()> 
559 
560						<#assign dlFileVersion = ''> 
561						<#if validator.isNotNull(fileEntryPath)> 
562							<#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
563						</#if> 
564						<#if validator.isNotNull(dlFileVersion)> 
565						<#if cur_Download_box.tipo_allegato.getData()=="excel"> 
566						<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
567							<h6> 
568								<span class="icona icon-copy"></span> 
569								<#else> 
570								<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
571									<h6> 
572										<span class="icona icon-file"></span> 
573										</#if> 
574										<div>${cur_Download_box.getData()}</div> 
575									</h6> 
576								</a> 
577								</#if> 
578								</#list> 
579					</div> 
580				</#if> 
581			</div> 
582		</div> 
583	</#list> 
584</#if> 
585 
586<!-- FINE BLOCCO (DOWNLOADS BOXES) --> 
587 
588<script type="text/javascript"> 
589	jQuery(document).ready(function(){ 
590 
591		/* Nasconde, se presente lo span che contiene la pagina di dettaglio */ 
592		if(jQuery(".breadcrumbs .elementi span:not(.link-name)").length) { 
593			jQuery(".breadcrumbs .elementi span:not(.link-name)").hide(); 
594
595 
596		if(jQuery("html").is(".smartphone")) 
597
598			convertTableToDivs(); 
599			swipeProspetto(); 
600			jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>"); 
601			jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>"); 
602			jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items"); 
603 
604			jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>"); 
605 
606			var bullet=jQuery('<span class="carousel-menu-index">&bull;</span>'); 
607 
608			/* creo l'elenco delle slide */ 
609			jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){ 
610				bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu"); 
611			}); 
612 
613			var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu'); 
614 
615			car.play(); 
616
617	}); 
618 
619	function updateAndamentoLabel(){ 
620		jQuery("#andamentoDa").html(jQuery("#datepickerDa").val()); 
621		jQuery("#andamentoA").html(jQuery("#datepickerA").val()); 
622
623 
624	function applyGradientOnPlot(){ 
625		var canvasSeries = jQuery(".jqplot-series-canvas")[0]; 
626		var ctx = canvasSeries.getContext("2d"); 
627		var my_gradient=ctx.createLinearGradient(0,0,0,300); 
628		my_gradient.addColorStop(0, "rgba(251,168,129,0.6)"); 
629		my_gradient.addColorStop(1, "rgba(251,168,129,0.1)"); 
630		ctx.fillStyle = my_gradient; 
631		ctx.fill(); 
632
633 
634	function updateDatePickers(){ 
635		//Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding. 
636 
637		var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text(); 
638 
639		if(dataInizialeDefault.length>0){ 
640			var dataNuova = new Date (dataInizialeDefault); 
641 
642			jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault)); 
643		}else{ 
644			jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
645
646 
647 
648		jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
649		jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
650		jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
651		jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
652		jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
653
654 
655	function aggiornaPerformance(dataIniziale, dataFinale){ 
656		var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale); 
657 
658		var valoreIniziale = dati[0][1]; 
659		var valoreFinale = dati[dati.length - 1][1]; 
660 
661		var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100; 
662		if(!isNumber(performance)){ 
663			performance = 0; 
664
665		var performance_rounded = +performance.toFixed(2); 
666 
667		var performance_split = []; 
668		if(performance_rounded.toString().indexOf(".")>0){ 
669			performance_split = performance_rounded.toString().split("."); 
670		}else{ 
671			performance_split[0] = performance_rounded; 
672			performance_split[1] = 0; 
673
674		jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %"); 
675
676 
677	function postDrawProcessing(){ 
678		console.log("postDrawHooks!"); 
679		applyGradientOnPlot(); 
680 
681		var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min); 
682		var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max); 
683 
684		aggiornaPerformance(dataIniziale, dataFinale); 
685 
686		var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale) 
687		var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale); 
688 
689		//aggiorno solo se diverso per evitare di far scattare onchange 
690		//if (dataInizialeStr!=jQuery("#datepickerDa").val()) { 
691		console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr); 
692		jQuery("#datepickerDa").datepicker("setDate", dataIniziale); 
693		//} 
694		//if (dataFinaleStr!=jQuery("#datepickerA").val()) { 
695		console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr); 
696		jQuery("#datepickerA").datepicker("setDate", dataFinale); 
697		//} 
698 
699		updateAndamentoLabel(); 
700
701 
702	function isNumber(n) { 
703		return !isNaN(parseFloat(n)) && isFinite(n); 
704
705 
706	jQuery(document).ready(function() { 
707 
708		//window.primavolta = true; 
709 
710		jQuery.jsDate.regional['it-IT'] = { 
711			monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], 
712			monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'], 
713			dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'], 
714			dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], 
715			formatString: '%d-%m-%Y %H:%M:%S' 
716		}; 
717		jQuery.jsDate.regional.getLocale(); 
718 
719		Date.prototype.sameDay = function(d) { 
720 
721 
722			return (this.getFullYear() === d.getFullYear() 
723					&& this.getMonth() === d.getMonth() 
724					&& this.getDate() === d.getDate()); 
725 
726
727 
728		//Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione. 
729		//window.gestioneGrafico garantisce che è una variabile globale! -RC 
730		window.gestioneGrafico = { 
731 
732			//Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC 
733			pad: 1.1, 
734 
735			tuttiIdatiDelGrafico : function() { 
736 
737				var tuttiIDati =[]; 
738 
739				<#assign _listaTassiDiCambio = confTool.getTassoDiCambio()> 
740 
741				<#list _listaTassiDiCambio as tassoDicambio> 
742				tuttiIDati.push([this.getADate('${tassoDicambio.getDataCambioString()}'),'${tassoDicambio.getBfixAsk()}']); 
743				</#list> 
744 
745				//ritorno una copia dell'array che contiene tutti i dati 
746				return tuttiIDati.slice(); 
747			}, 
748 
749			getADate: function (dataStr) 
750
751				//console.log("getADate dataStr" + dataStr); 
752				if (dataStr == null) 
753					return; 
754				var partiData = dataStr.split("/"); 
755				var day = partiData[0]; 
756				var month = partiData[1] - 1; 
757				var year = partiData[2]; 
758				//console.log("year " + year + " month" + month + " day " + day) 
759				var aDate = new Date(year, month, day, 0, 0, 0, 0); 
760				return aDate; 
761			}, 
762 
763			datiTraLeDate : function (dataDa, dataA){ 
764				//console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA); 
765 
766				var tuttiIdati = this.tuttiIdatiDelGrafico(); 
767				//cerco l'elemento minimo superiore a dataDa 
768				//cerco l'elemnto massimo inferiore a dataA 
769				//l'array di dati originali è gia ordinato per data 
770				var indiceDellaDataMinore = -1; 
771				var indiceDellaDataMaggiore = -1; 
772				var currDate; 
773				//cerco la prima data subito superiore a dataDa 
774				for (var i=0; i< tuttiIdati.length; i++) { 
775					currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
776					if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) { 
777						indiceDellaDataMinore = i; 
778						break; 
779
780
781				//cerco la prima data subito inveriore  a dataA 
782				for (var i=tuttiIdati.length -1; i>=0; i--) { 
783					currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
784					if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) { 
785						indiceDellaDataMaggiore = i; 
786						break; 
787
788
789				//a questo punto ho gli indici delle date minore e maggiore, taglio l'array 
790				var nDiElementi  = indiceDellaDataMaggiore - indiceDellaDataMinore + 1; 
791				console.log("nDiElementi" + nDiElementi); 
792				var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi); 
793				//se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]] 
794				if (nuovoRange.length == 0){ 
795					console.log("ritorno un range vuoto"); 
796
797 
798				return nuovoRange; 
799			}, 
800			getAxisBounds: function(dati, pad, dataDa, dataA){ 
801				var _pad = (pad==null||typeof pad == 'undefined')?0:pad; 
802				var _dataDa = typeof dataDa == 'undefined'?null:dataDa; 
803				var _dataA = typeof dataA == 'undefined'?null:dataA; 
804 
805 
806				var minXVal = null; 
807				var maxXVal = null; 
808				//Vogliamo che Y parta da 0 o dal minimo valore minore di 0 
809				var minYVal = null; 
810				var maxYVal = null; 
811 
812				for(var i=0; i<dati.length; i++){ 
813					var valY = parseFloat(dati[i][1]); 
814					if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){ 
815						minXVal = dati[i][0]; 
816
817					if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){ 
818						maxXVal = dati[i][0]; 
819
820					if(minYVal==null||valY<minYVal){ 
821						minYVal = valY; 
822
823					if(maxYVal==null||valY>maxYVal){ 
824						maxYVal = valY; 
825
826
827 
828				if(dataDa!=null){ 
829					minXVal = dataDa; 
830
831				if(dataA!=null){ 
832					maxXVal = dataA; 
833
834 
835				var padX = 0; 
836				var padY = 0; 
837				if(dati.length>1){ 
838					padX = ((maxXVal - minXVal)*(pad-1))/2; 
839					//             padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2; 
840					padY = ((maxYVal - minYVal)*(pad-1))/2; 
841				}else{ 
842					padX = 86401000; 
843					padY = maxYVal*(pad-1); 
844
845 
846				if(padY<0){ 
847					padY=-padY; 
848				}else if(padY==0){ 
849					padY=2; 
850
851 
852				var bounds = { 
853					minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX), 
854					maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX), 
855					//             minY: minYVal>0?0:minYVal-padY, 
856					minY: (minYVal-padY), 
857					maxY: maxYVal+padY 
858
859 
860				return bounds; 
861			}, 
862			zoomHandler: function() { 
863				var c = this.plugins.cursor; 
864				console.log(c); 
865			}, 
866 
867			plotter: null, 
868			visualizzaGrafico : function (dati, dataDa, dataA){ 
869				var seriesToPlot; 
870 
871				try{ 
872					if (typeof dataDa === 'undefined') dataDa = new Date(gestore.plotter.axes.xaxis.min); 
873					if (typeof dataA === 'undefined') dataA = new Date(gestore.plotter.axes.xaxis.max); 
874				}catch(e){ 
875					//console.log(e); 
876
877				var minDate = jQuery("#datepickerDa").datepicker('getDate'),//.datepicker('option', 'minDate'), 
878						maxDate = jQuery("#datepickerA").datepicker('getDate'),//.datepicker('option', 'maxDate'), 
879						datiFondo = window.gestioneGrafico.tuttiIdatiDelGrafico().slice(); 
880				datiFondo.sort(function(a,b){ 
881					return a[0] - b[0]; 
882				}); 
883 
884				var minFondo = null; 
885 
886				for (var i = 0; i < datiFondo.length; i++){ 
887					if (!isNaN(datiFondo[i][0])){ 
888						datiFondo[i][0] = new Date(datiFondo[i][0]); 
889
890
891 
892				for (var i = 0; i < datiFondo.length; i++){ 
893					if (datiFondo[i][0].sameDay(minDate)){ 
894						minFondo = datiFondo[i]; 
895						break; 
896
897
898				for (var i = 0; i < datiFondo.length; i++){ 
899					if (datiFondo[i][0] >= minDate){ 
900						minFondo = datiFondo[i]; 
901						break; 
902
903
904				if (minFondo == null) minFondo = datiFondo[0]; 
905 
906				var maxFondo = null; 
907 
908				for (var i = 0; i < datiFondo.length; i++){ 
909					if (datiFondo[i][0].sameDay(maxDate)){ 
910						maxFondo = datiFondo[i]; 
911						break; 
912
913
914 
915				if(maxFondo == null){ 
916					for (var i = 0; i < datiFondo.length; i++){ 
917						if (datiFondo[i][0] > maxDate){ 
918							maxFondo = datiFondo[i]; 
919							break; 
920
921
922
923				var datiFiltrati=[]; 
924				for(var i = 0; i < dati.length; i++){ 
925					if (window.gestioneGrafico.checkData(dati[i][0], minFondo[0], maxFondo[0], datiFondo)){ 
926						datiFiltrati.push(dati[i]); 
927
928
929				seriesToPlot = [datiFiltrati]; 
930 
931				var singlePoint = dati.length==1; 
932				var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA); 
933				var logaritmica = logaritmica; 
934				console.log("Axis Bounds: " + bounds); 
935				if(this.plotter != null) 
936					this.plotter.destroy(); 
937				if(singlePoint){ 
938					dati.push(dati[0]); 
939
940				this.plotter = jQuery.jqplot('chartdiv',  seriesToPlot, 
941
942							title:{ 
943								text: '', 
944								show: false 
945							}, 
946							axesDefaults: { 
947							}, 
948							cursor:{ 
949								show: false, 
950								showTooltip: false, 
951								zoom: false, 
952								constrainZoomTo: 'x' 
953							}, 
954							seriesDefaults: { 
955 
956								color: '#fba881',      // CSS color spec to use for the line.  Determined automatically. 
957								showMarker: singlePoint,   // render the data point markers or not. 
958								fill: true,        // fill under the line, 
959								fillAndStroke: singlePoint,       // *stroke a line at top of fill area. 
960								fillColor: '#fba881', 
961								fillAlpha: 0.001,      // *custom alpha to apply to fillColor. 
962								shadow: false   // show shadow or not. 
963 
964							}, 
965							axes:{ 
966								xaxis:  { 
967									renderer:jQuery.jqplot.DateAxisRenderer, 
968									min: bounds.minX, 
969									max: bounds.maxX, 
970									//min:minimo, 
971									//max:maximo, 
972									tickOptions: {formatString: '%d/%m/%Y'} 
973								}, 
974								yaxis: { 
975									renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer, 
976									min: bounds.minY, 
977									max: bounds.maxY, 
978									tickOptions: {formatString: '%#.3f' +" "+ divisaSimboloMap['EUR'] } 
979
980							}, 
981							series:[{ 
982								lineWidth:2, 
983								markerOptions: 
984
985											style:'circle' 
986
987							},{ 
988								lineWidth: 1, 
989								markerOptions: 
990
991											style:'circle' 
992										}, 
993								color: '#0a4379',      // CSS color spec to use for the line.  Determined automatically. 
994								linePattern: 'dashed', 
995								lineWidth: 0.5, 
996								showMarker: singlePoint,   // render the data point markers or not. 
997								fill: false, 
998								shadow: false, 
999								rendererOptions: { 
1000									smooth: true 
1001
1002							}], 
1003							highlighter: { 
1004								show: false, 
1005								sizeAdjust: 7.5, 
1006								formatString: "%s - %#.3f" 
1007							}, 
1008							grid: { 
1009								drawGridLines: true,        // wether to draw lines across the grid or not. 
1010								gridLineColor: '#f0f1f6',    // *Color of the grid lines. 
1011								background: '#fff',      // CSS color spec for background color of grid. 
1012								borderColor: '#f0f1f6',     // CSS color spec for border around grid. 
1013								borderWidth: 1.0,           // pixel width of border around grid. 
1014								shadow: false,               // draw a shadow for grid. 
1015
1016						}); 
1017 
1018 
1019			}, 
1020 
1021			checkData: function(data, dStart, dEnd, datiFondo){ 
1022				var dStart = typeof dStart == 'undefined'?null:dStart; 
1023				var dEnd = typeof dEnd == 'undefined'?null:dEnd; 
1024 
1025				if (dStart == null || dEnd == null){ 
1026					for(var i=0; i<datiFondo.length; i++){ 
1027						if(dStart == null || datiFondo[i][0] < dStart){ 
1028							dStart = datiFondo[i][0]; 
1029
1030						if(dEnd == null || datiFondo[i][0] > dEnd){ 
1031							dEnd = datiFondo[i][0]; 
1032
1033
1034
1035				if (data >= dStart && data <= dEnd){ 
1036					return true; 
1037
1038				return false; 
1039
1040
1041		<#if getterUtil.getBoolean(Fondo_In_valuta.getData())> 
1042		<#if _listaTassiDiCambio?size gt 0> 
1043 
1044		jQuery.jqplot.sprintf.thousandsSeparator = ''; 
1045		jQuery.jqplot.sprintf.decimalMark = ','; 
1046		var gestore = gestioneGrafico; 
1047		var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico(); 
1048		var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare,this.pad); 
1049		console.log('LIMITS'); 
1050		console.log(bounds); 
1051		// inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti 
1052		jQuery("#datepickerDa").datepicker({ 
1053			//showOtherMonths: false, 
1054			//selectOtherMonths: false, 
1055			changeMonth : true, 
1056			changeYear : true, 
1057			dateFormat : "dd/mm/yy", 
1058 
1059			onSelect : function() { 
1060				jQuery("#datepickerA").datepicker('option', { 
1061					minDate : jQuery(this).datepicker('getDate') 
1062				}); 
1063				updateGraphDatesFromDatePickers(); 
1064				//updateDatePickers(); 
1065			}, 
1066		}, jQuery.datepicker.regional['it']); 
1067		jQuery("#datepickerDa").datepicker("setDate", bounds.minX); 
1068 
1069		jQuery("#datepickerA").datepicker({ 
1070			changeMonth : true, 
1071			changeYear : true, 
1072			dateFormat : "dd/mm/yy", 
1073			defaultDate : bounds.maxX, 
1074			minDate : bounds.minX, 
1075			maxDate : bounds.maxX, 
1076			onSelect : function() { 
1077				jQuery("#datepickerDa").datepicker('option', { 
1078					maxDate : jQuery(this).datepicker('getDate') 
1079				}); 
1080				updateGraphDatesFromDatePickers(); 
1081			}, 
1082			beforeShow : function(input, inst) { 
1083				inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'}); 
1084
1085		}, jQuery.datepicker.regional['it']); 
1086		jQuery("#datepickerA").datepicker("setDate",bounds.maxX); 
1087		function updateGraphDatesFromDatePickers() { 
1088			var dataDaStr = jQuery("#datepickerDa").val(); 
1089			var dataAStr = jQuery("#datepickerA").val(); 
1090			console.log("date cambiate: da " + dataDaStr + " a " + dataAStr); 
1091			var dataDa = gestore.getADate(dataDaStr); 
1092			var dataA = gestore.getADate(dataAStr); 
1093			// se la data è maggiore di data a non fare nulla 
1094			if (dataDa >= dataA) 
1095				return; 
1096 
1097			gestore.plotter.axes.xaxis.min = dataDa; 
1098			gestore.plotter.axes.xaxis.max = dataA; 
1099 
1100			var interval = (dataA.getTime() - dataDa.getTime()) / 5; 
1101			var ticks = []; 
1102			var currTick = dataDa.getTime(); 
1103			ticks.push(currTick); 
1104			for (var i = 0; i < 5; i++) { 
1105				currTick += interval; 
1106				ticks.push(currTick); 
1107
1108 
1109			gestore.plotter.axes.xaxis.ticks = ticks; 
1110			//gestore.plotter.replot(); 
1111			var datiDaVisualizzare = window.gestioneGrafico.tuttiIdatiDelGrafico(); 
1112			window.gestioneGrafico.visualizzaGrafico(datiDaVisualizzare); 
1113 
1114			// Necessario per riabilitare zoom 
1115			gestore.plotter.axes.xaxis.ticks = []; 
1116		}; 
1117		if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9) 
1118
1119			// carica script che emula il canvas poiché ie < 9 non lo supoporta 
1120			var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js"; 
1121			jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) { 
1122				gestore.visualizzaGrafico(datiDaVisualizzare); 
1123 
1124				applyGradientOnPlot(); 
1125				jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
1126				updateAndamentoLabel(); 
1127			}); 
1128
1129		else 
1130
1131			gestore.visualizzaGrafico(datiDaVisualizzare); 
1132			applyGradientOnPlot(); 
1133			jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
1134			updateAndamentoLabel(); 
1135
1136		updateDatePickers(); 
1137		updateGraphDatesFromDatePickers(); 
1138		aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]); 
1139		jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers); 
1140		jQuery('#datepickerDa').click(function(){ 
1141			jQuery('#datepickerDa').datepicker('show'); 
1142		}); 
1143		jQuery('#datepickerA').focus(function(){ 
1144			jQuery('#datepickerA').datepicker('show'); 
1145		}); 
1146 
1147		jQuery('#datepickerA').click(function(){ 
1148			jQuery('#datepickerA').datepicker('show'); 
1149		}); 
1150		</#if> 
1151		</#if> 
1152	}); 
1153</script> 
1154 
1155<!-- FINE GS IN VALUTA --> 
1156 
1157<#else>  <!-- Se Fondo_In_valuta = false --> 
1158<div class="template_rendimenti_e_quotazioni"> 
1159 
1160	<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/jquery.jqplot.min.css" rel="stylesheet" /> 
1161	<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/jquery-ui.css" rel="stylesheet" /> 
1162	<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/rendimentoDettaglioValore.css" rel="stylesheet" /> 
1163 
1164 
1165	<#assign localeIT = localeUtil.fromLanguageId('it')> 
1166 
1167	<#assign currentGroup = groupLocalService.getGroup(groupId)> 
1168 
1169	<#assign checkDisplayDate = !currentGroup.isStagingGroup()> 
1170 
1171	<!-- assegnazione di una variabile con il tool custom, deployato sul portale --> 
1172	<!-- get user from request --> 
1173 
1174	<#assign user = ""> 
1175	<#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!=""> 
1176		<#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))> 
1177	<#else> 
1178		<#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))> 
1179	</#if> 
1180 
1181	<#assign current_url = request.getAttribute("CURRENT_URL")> 
1182 
1183	<#if getterUtil.getBoolean(request.getAttribute("isCustomFriendlyUrlFilter")) && request.getAttribute("originalFriendlyUrlFilterUrl")?exists> 
1184		<#assign current_url = request.getAttribute("originalFriendlyUrlFilterUrl")> 
1185	</#if> 
1186 
1187	<#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))> 
1188	<#assign catId = getterUtil.getLong(catIdStr)> 
1189 
1190	<#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))> 
1191	<#assign subcatId = getterUtil.getLong(subcatIdStr)> 
1192 
1193	<#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))> 
1194	<#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))> 
1195 
1196	<!-- Take layout id --> 
1197	<#assign currentLayoutId = themeDisplay.getPlid()> 
1198	<#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)> 
1199 
1200	<!-- parent layoutId --> 
1201	<#assign currentLayoutParentPlid = currentLayout.getParentPlid()> 
1202	<#if currentLayoutParentPlid != 0> 
1203		<#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid)> 
1204	</#if> 
1205 
1206	<#if catId != 0> 
1207		<#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()> 
1208		<#if validator.isNull(catKey)> 
1209			<#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()> 
1210		</#if> 
1211 
1212		<#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()> 
1213	</#if> 
1214 
1215	<#if !catKey??> 
1216		<#assign catKey = ""> 
1217	</#if> 
1218 
1219	<#assign isOICR = false> 
1220	<!-- pretitolo --> 
1221	<#if (visualizza_label_gestione_separata_associata?has_content && getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData())) || catKey?lower_case == "rivalutabili"> 
1222		<#assign pre_titolo_rendimento = "Gestione Separata"> 
1223	<#elseif categoria?lower_case == "index linked"> 
1224		<#assign pre_titolo_rendimento = "Indice"> 
1225	<#elseif categoria?lower_case == "oicr"> 
1226		<#assign pre_titolo_rendimento = "OICR"> 
1227		<#assign isOICR = true> 
1228	<#else> 
1229		<#assign pre_titolo_rendimento = "Fondo"> 
1230	</#if> 
1231 
1232	<!-- valore dei fondi dal web content --> 
1233	<#assign valoreFondoUno =  confTool.getValoreFondoFromStr(valore_1.getData(), locale)> 
1234	<#assign valoreFondoDue =  confTool.getValoreFondoFromStr(valore_2.getData(), locale)> 
1235 
1236	<#if getterUtil.getBoolean(usa_valori_da_fondo.getData())> 
1237		<#assign usaFondo = true> 
1238 
1239		<!-- titolo --> 
1240		<#assign titolo_rendimento = Titolo_rendimento.getData()> 
1241 
1242		<#if titolo_rendimento==""> 
1243			<#assign titolo_rendimento = Titolo_rendimento.getData()> 
1244		</#if> 
1245 
1246		<!-- valore e valuta dei fondi dal db --> 
1247		<#if validator.isNotNull(valoreFondoUno)> 
1248			<#if validator.isNull(valoreFondoDue) || valoreFondoDue == "0"> 
1249				<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)> 
1250				<#assign valoreFondoDue = ""> 
1251			<#else> 
1252				<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)> 
1253				<#assign valoreFondoDue =  confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(), locale)> 
1254			</#if> 
1255		<#else> 
1256			<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(),locale)> 
1257			<#assign valoreFondoDue =  confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(),locale)> 
1258		</#if> 
1259 
1260		<#if valoreFondoDue=="0" || valoreFondoDue == "0,000"> 
1261			<#assign valoreFondoDue = ""> 
1262		</#if> 
1263 
1264		<#assign valutaFondoUno =  confTool.getValutaFondoUnoFromDb(id_fondo.getData())> 
1265		<#assign valutaFondoDue =  confTool.getValutaFondoDueFromDb(id_fondo.getData())> 
1266 
1267		<!-- data aggiornamento valore --> 
1268		<#assign dataAggiornamentoValore = confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)> 
1269 
1270		<!-- rating --> 
1271		<#assign ratings = confTool.getRatingsFromDb(id_fondo.getData())> 
1272 
1273	<#else> 
1274		<#assign usaFondo = false> 
1275 
1276		<!-- titolo --> 
1277		<#assign titolo_rendimento = Titolo_rendimento.getData()> 
1278 
1279		<!-- valuta dei fondi dal web content --> 
1280		<#assign valutaFondoUno =  valuta1.getData()> 
1281		<#assign valutaFondoDue =  valuta_2.getData()> 
1282 
1283		<!--  data aggiornamento valori --> 
1284		<#assign aggiornato_al_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(aggiornato_al.getData()), localeIT)> 
1285		<#assign dataAggiornamentoValore = dateUtil.getDate(aggiornato_al_DateObj, "dd MMM yyyy", localeIT)> 
1286 
1287		<!-- rating --> 
1288		<#assign ratings = Rating.getData()> 
1289 
1290	</#if> 
1291 
1292	<!-- PRIMO BLOCCO --> 
1293	<#assign breadCrumb = confTool.getBreadcrumb(themeDisplay.getLayout(),themeDisplay) > 
1294	<div class="boxesDettaglio togliMargin"> 
1295		<!-- briciole di pane --> 
1296		<div id="breadcrumbs" class="breadcrumbs"> 
1297			<div class="elementi"> 
1298 
1299				<!-- Inizio creazione Breadcrumb --> 
1300 
1301				<#assign titolo_gs_associata = label_gestione_separata_associata.getData()> 
1302				<#assign titolo_da_visualizzare = titolo_rendimento> 
1303 
1304				<#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) && validator.isNotNull(titolo_gs_associata)> 
1305					<#if categoria?lower_case == "previdenza"> 
1306						<#assign titolo_da_visualizzare = titolo_gs_associata> 
1307					</#if> 
1308				</#if> 
1309 
1310				<!-- get article's primaryKey --> 
1311				<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars['reserved-article-id'].data, getterUtil.getDouble(.vars['reserved-article-version'].data))> 
1312				<#assign articlePrimKey = article.resourcePrimKey> 
1313				<#assign resourcePrimKey = getterUtil.getLong(articlePrimKey)> 
1314				<#assign categorie = confTool.getCategoriesByResourcePrimKey(resourcePrimKey)> 
1315				<#assign categorieSize = categorie?size> 
1316 
1317				<#list breadCrumb?keys as key> 
1318					<a href="${key?replace("../../", "/")}"<#if breadCrumb[key]?length gt 25> title="${breadCrumb[key]}"</#if>> 
1319						<span title="${breadCrumb[key]}" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" class="link-name">${breadCrumb[key]}</span> 
1320						<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 
1321							<use href="${themeDisplay.getPathThemeImages()}/accessibilita2024/Chevrons.svg#chevron-right" /> 
1322						</svg> 
1323					</a> 
1324				</#list> 
1325				<span>${themeDisplay.getLayout().getName()}</span> 
1326 
1327				<#list categorie as cur_categoria> 
1328					<#if currentLayoutParent?has_content && cur_categoria.getCategoryId() == catId> 
1329						<!--  --> 
1330						<a 
1331								href="/web${currentLayoutParent.getGroup().getFriendlyURL()}${currentLayoutParent.getFriendlyURL()}?selectedCategoryId=${cur_categoria.getCategoryId()}" 
1332								<#if cur_categoria.getName()?length gt 25> title="${cur_categoria.getName()?capitalize}"</#if> 
1333
1334							<span title="${cur_categoria.getName()}" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" class="link-name">${cur_categoria.getName()}</span> 
1335							<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 
1336								<use href="${themeDisplay.getPathThemeImages()}/accessibilita2024/Chevrons.svg#chevron-right" /> 
1337							</svg> 
1338						</a> 
1339					</#if> 
1340				</#list> 
1341 
1342				<#list categorie as cur_categoria> 
1343					<#if currentLayoutParent?has_content && cur_categoria.getCategoryId() == subcatId> 
1344						<!-- cur_categoria.getCategoryId() == catId --> 
1345						<a 
1346								href="/web${currentLayoutParent.getGroup().getFriendlyURL()}${currentLayoutParent.getFriendlyURL()}?selectedCategoryId=${cur_categoria.getCategoryId()}" 
1347								<#if cur_categoria.getName()?length gt 25> title="${cur_categoria.getName()?capitalize}"</#if> 
1348
1349							<span title="${cur_categoria.getName()}" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" class="link-name">${cur_categoria.getName()}</span> 
1350							<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 
1351								<use href="${themeDisplay.getPathThemeImages()}/accessibilita2024/Chevrons.svg#chevron-right" /> 
1352							</svg> 
1353						</a> 
1354					</#if> 
1355				</#list> 
1356 
1357				${titolo_da_visualizzare} 
1358 
1359				<!-- Fine creazione Breadcrumb --> 
1360 
1361			</div> 
1362		</div> 
1363		<div> 
1364			<div class="supTitle capitalize">${pre_titolo_rendimento}</div> 
1365			<h1 class="titoloRendimento">${titolo_da_visualizzare}</h1> 
1366 
1367			<#if Notifica_alert?? && Notifica_alert.getData() != ""> 
1368 
1369				<div class="descrizioni notifica_alert">${Notifica_alert.getData()}</div> 
1370 
1371				<#assign testoFascetta = confTool.getRendimentoParsed(article, themeDisplay.getLanguageId()).getTestoFascetta(article, themeDisplay.getLanguageId(), catId, subcatId)> 
1372				<#if validator.isNotNull(testoFascetta)> 
1373					<div class="fascetta_rendimento ${catColor}">${testoFascetta}</div> 
1374				</#if> 
1375 
1376			</#if> 
1377 
1378			<#assign strippedHtmlDescrizione = confTool.stripHTML(Descrizione_rendimento_e_quotazione.getData())?trim> 
1379			<#if validator.isNotNull(titolo_rendimento) && strippedHtmlDescrizione?lower_case != titolo_rendimento?trim?lower_case> 
1380				<div class="descrizioni">${Descrizione_rendimento_e_quotazione.getData()}</div> 
1381			</#if> 
1382 
1383		</div> 
1384 
1385		<!-- blocco valore corrente valore protetto --> 
1386		<!-- script da spostare in hook --> 
1387		<script type="text/javascript"> 
1388 
1389			var divisaSimboloMap = { 
1390				'EUR': '&#8364;', 
1391				'USD': '$', 
1392				'':'', 
1393				'%':'%' 
1394			}; 
1395 
1396			jQuery(document).ready(function(){ 
1397				var listaValuta=jQuery(".titoloValuta"); 
1398				if (listaValuta!=null){ 
1399					for (var i=0;i<listaValuta.length;i++){ 
1400						if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){ 
1401							//                                 var index=listaValuta.get(i).outerHTML.indexOf(','); 
1402							//                                 var html = listaValuta.get(i).outerHTML.substring(0,index+1) + "<span class='decimali'>" + listaValuta.get(i).outerHTML.substring(index+1,index+3) + "</span>" + listaValuta.get(i).outerHTML.substring(index+3,listaValuta.get(i).outerHTML.length); 
1403							//                                 listaValuta.get(i).outerHTML = html; 
1404							var listaValuta_split = listaValuta.get(i).innerHTML.split(','); 
1405							var parteIntera = listaValuta_split[0]; 
1406							if(listaValuta_split[1].indexOf(" ")){ 
1407								var listaValuta1_split = listaValuta_split[1].split(" "); 
1408								var parteDecimale = listaValuta1_split[0]; 
1409								var parteValuta = listaValuta1_split[1]; 
1410							}else{ 
1411								var parteDecimale = listaValuta_split[1]; 
1412								var parteValuta = ""; 
1413
1414 
1415							var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
1416							console.log(parteValutaMap + "-" + parteValuta ); 
1417							var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
1418							listaValuta.get(i).innerHTML = html; 
1419						}else{ 
1420							console.log(listaValuta.get(i).innerHTML); 
1421							if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){ 
1422								var listaValuta_split = listaValuta.get(i).innerHTML.split(" "); 
1423								var parteIntera = listaValuta_split[0]; 
1424								var parteValuta = listaValuta_split[1]; 
1425								var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
1426								console.log(parteValutaMap + "-" + parteValuta ); 
1427								var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
1428								listaValuta.get(i).innerHTML = html; 
1429
1430
1431
1432
1433			}); 
1434		</script> 
1435 
1436		<#if valoreFondoDue == "" > 
1437			<!-- blocco a singola colonna 2--> 
1438 
1439			<div class="bloccoValori" > 
1440				<#if Label_valore_corrente.getData()?has_content> 
1441					<h4 class="titoloValori">${Label_valore_corrente.getData()}</h4> 
1442				</#if> 
1443				<div class="bloccoValuta"> 
1444					<h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3> 
1445					<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
1446				</div> 
1447			</div> 
1448 
1449		<#else> 
1450 
1451			<!-- blocco a doppia colonna --> 
1452			<div class="valoriDoppioWrapper"> 
1453				<div class="bloccoValori doppio first" > 
1454					<h4 class="titoloValori">${Label_valore_corrente.getData()}</h4> 
1455					<div class="bloccoValuta"> 
1456						<h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3> 
1457						<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
1458					</div> 
1459				</div> 
1460				<div class="bloccoValori doppio" > 
1461					<h4 class="titoloValori">${Label_valore_protetto.getData()} 
1462						<#if valore_1_min_garantito.getData()!=""> 
1463
1464						</#if> 
1465					</h4> 
1466					<div class="bloccoValuta"> 
1467						<h3 class="titoloValuta">${valoreFondoDue} ${valutaFondoDue}</h3> 
1468						<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
1469					</div> 
1470				</div> 
1471			</div> 
1472			<#if validator.isNotNull(valore_1_min_garantito.getData())> 
1473				<div class="caption"> 
1474					*&nbsp;${valore_1_min_garantito.getData()} 
1475				</div> 
1476			</#if> 
1477		</#if> 
1478 
1479		<div class="reset"> 
1480 
1481			<#if isOICR && validator.isNotNull(Societa_di_gestione.getData())> 
1482				<#assign labelSocietaGestione = "Societ&agrave; di gestione"> 
1483				<#if validator.isNotNull(Label_societa_di_gestione.getData())> 
1484					<#assign labelSocietaGestione = Label_societa_di_gestione.getData()> 
1485				</#if> 
1486				<div class="gestione"> 
1487					<h6 class="">${labelSocietaGestione}: <strong>&nbsp;${Societa_di_gestione.getData()}</strong></h6> 
1488				</div> 
1489			</#if> 
1490 
1491			<#if Istituto_emittente.getData() != ""> 
1492				<h5 class="titolo">${Label_obbligazione_strutturata.getData()}</h5> 
1493				<div class="istituto"> 
1494					<h6 class="">${Label_istituto_emittente.getData()}: <strong>${Istituto_emittente.getData()}</strong></h6> 
1495					<h6 class="">${Label_rating.getData()}: <strong>${Rating.getData()}</strong></h6> 
1496				</div> 
1497			</#if> 
1498 
1499			<#assign Data_scadenza_to_show = ''> 
1500			<#if validator.isNotNull(Data_scadenza.getData())> 
1501				<#assign Data_scadenza_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(Data_scadenza.getData()), localeIT)> 
1502				<!-- 01/01/2100 --> 
1503				<#if dateUtil.compareTo(Data_scadenza_DateObj,dateUtil.newDate(4102441200000)) lt 0 > 
1504					<#assign Data_scadenza_to_show = 'Scadenza ' + dateUtil.getDate(Data_scadenza_DateObj, "dd/MM/yyyy", localeIT)> 
1505				</#if> 
1506			</#if> 
1507 
1508			<#if validator.isNotNull(Data_scadenza_to_show)> 
1509				<h6 class="scadenza nomobile"><strong>${Data_scadenza_to_show}</strong></h6> 
1510			</#if> 
1511		</div> 
1512 
1513		<!-- Da agganciare nel momento in cui caricano i contenuti derivati --> 
1514		<div class="reset"> 
1515			<#if Istituto_emittente_derivata?? && Istituto_emittente_derivata.getData() != ""> 
1516				<h5 class="titolo">${Label_obbligazione_derivata.getData()}</h5> 
1517				<div class="istituto derivata"> 
1518					<h6 class="">${Label_istituto_emittente_derivata.getData()}:<strong>${Istituto_emittente_derivata.getData()}</strong></h6> 
1519					<h6 class="">${Label_rating_derivata.getData()}:<strong>${Rating_derivata.getData()}</strong></h6> 
1520				</div> 
1521			</#if> 
1522 
1523			<#if validator.isNotNull(Data_scadenza_to_show)> 
1524				<h6 class="scadenza onlymobile"><strong>$Data_scadenza_to_show</strong></h6> 
1525			</#if> 
1526 
1527		</div> 
1528 
1529	</div> 
1530 
1531	<!-- FINE PRIMO BLOCCO --> 
1532 
1533 
1534	<!-- SECONDO BLOCCO (GRAFICO STORICO) --> 
1535 
1536	<#assign _listaRendimenti = []> 
1537	<#assign hasBenchmark = false> 
1538	<#assign _benchmarkFondoMap = confTool.getBenchmarkFondo(id_fondo.id_benchmark_fondo.getData())> 
1539	<#if _benchmarkFondoMap?size gt 0> 
1540		<#assign hasBenchmark = true> 
1541	</#if> 
1542 
1543	<#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))> 
1544		<div class="boxesDettaglio storicGraph"> 
1545			<#assign _datiStorico = confTool.getDatiStorico(id_fondo.getData())> 
1546			<#assign _listaRendimenti = _datiStorico.getValoriRendimenti()> 
1547 
1548			<div class="reset"> 
1549				<#if getterUtil.getBoolean(hasBenchmark)> 
1550					<div class="legendaBenchmark" style="float: right; border: 1px solid #eee; padding: 10px; margin-right: 9px;"> 
1551						<span class="fondo"><i></i>Andamento Fondo</span> 
1552						<span class="benchmark"><i></i>Andamento Benchmark</span> 
1553					</div> 
1554 
1555				</#if> 
1556 
1557				<h5 class="titolo"> 
1558					Andamento performance 
1559					<#if getterUtil.getBoolean(hasBenchmark)> 
1560						fondo e benchmark <br/> 
1561					</#if> 
1562					<small class="">Dati aggiornati al ${confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)}</small> 
1563				</h5> 
1564				<#if getterUtil.getBoolean(hasBenchmark)> 
1565					<div style="clear: right"></div> 
1566				</#if> 
1567 
1568				<#if _listaRendimenti?size gt 0> 
1569					<div class="graficoRendimento" > 
1570						<div id="chartdiv"></div> 
1571					</div> 
1572					<div class="datePickers input-text-custom-datepicker-container reset"> 
1573 
1574						<div class="inizio"> 
1575							<div class="input-text-wrapper"> 
1576								<label for="datepickerDa" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
1577									<span class="truncate-text">Data di inizio</span> 
1578								</label> 
1579 
1580								<input type="text" class="is-hoverable datePicker" id="datepickerDa" value="${_datiStorico.getDataInizialeString()}" aria-label="Seleziona data inizio andamento"/> 
1581 
1582								<small id="customHelpTextIdDatepickerDa" class="form-text text-muted custom-help-text"></small> 
1583 
1584								<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
1585 
1586							</div> 
1587						</div> 
1588 
1589						<div class="fine"> 
1590							<div class="input-text-wrapper"> 
1591								<label for="datepickerA" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
1592									<span class="truncate-text">Data di fine</span> 
1593								</label> 
1594 
1595								<input type="text" class="is-hoverable datePicker" id="datepickerA" value="${_datiStorico.getDataFinaleString()}" aria-label="Seleziona data fine andamento"/> 
1596 
1597								<small id="customHelpTextIdDatepickerA" class="form-text text-muted custom-help-text"></small> 
1598 
1599								<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
1600							</div> 
1601						</div> 
1602 
1603					</div> 
1604					<p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p> 
1605					<p class="reset" style="font-style:italic"> 
1606						Attenzione: i valori passati non sono indicativi di quelli futuri. 
1607						<#if getterUtil.getBoolean(hasBenchmark)> 
1608							Si evidenzia inoltre che la performance del Fondo risente dei costi gravanti sullo stesso, mentre il benchmark, 
1609							in quanto indice teorico, non è gravato da costi. 
1610						</#if> 
1611					</p> 
1612				</#if> 
1613			</div> 
1614		</div> 
1615	</#if> 
1616 
1617	<!-- FINE SECONDO BLOCCO --> 
1618 
1619	<!-- BLOCCO PROSPETTO --> 
1620 
1621	<#if !( 
1622	!Colonna_prospetto.getSiblings()?has_content || 
1623	(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
1624	(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
1625	(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
1626	)))> 
1627 
1628		<div class="boxesDettaglio togliMargin"> 
1629			<div class="reset"> 
1630				<p class="">${descrizione_prospetto.getData()}</p> 
1631			</div> 
1632			<#if Colonna_prospetto.getSiblings()?has_content> 
1633				<div class="table"> 
1634					<div class="row theader"> 
1635						<div class="cell"> 
1636							<!-- prima colonnavuota --> 
1637						</div> 
1638						<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
1639							<div class="cell"> 
1640								${cur_Colonna_prospetto.getData()} 
1641							</div> 
1642						</#list> 
1643					</div> 
1644 
1645					<#if Tipo_generazione_righe_prospetto.getData()=="dinamico"> 
1646						<#if Nome_Riga_Prospetto.getSiblings()?has_content> 
1647							<#assign contatore_righe = 0> 
1648							<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto> 
1649								<div class="row"> 
1650									<div class="cell"> 
1651										<div class="">${cur_Nome_Riga_Prospetto.getData()}</div> 
1652									</div> 
1653									<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
1654										<div class="cell"> 
1655											<#assign contatore_allegati = 0> 
1656											<#assign allegatoUrl = ''> 
1657 
1658											<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
1659 
1660												<#if contatore_allegati == contatore_righe> 
1661													<#assign allegatoUrl = allegato.getData()> 
1662												</#if> 
1663												<#assign contatore_allegati = contatore_allegati + 1> 
1664											</#list> 
1665 
1666											<#assign dlFileVersion = ''> 
1667											<#if validator.isNotNull(allegatoUrl)> 
1668												<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1669											</#if> 
1670											<#if validator.isNotNull(dlFileVersion)> 
1671												<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1672											<#else> 
1673												<div>&mdash;</div> 
1674											</#if> 
1675										</div> 
1676									</#list> 
1677								</div> 
1678								<#assign contatore_righe = contatore_righe + 1> 
1679							</#list> 
1680						</#if> 
1681					</#if> 
1682 
1683					<#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali"> 
1684						<div class="row"> 
1685							<div class="cell"> 
1686								<div class="">Composizione al 31/03</div> 
1687							</div> 
1688 
1689							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
1690								<div class="cell"> 
1691									<#assign contatore_allegati = 0> 
1692									<#assign allegatoUrl = ''> 
1693									<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
1694										<#if contatore_allegati == 0> 
1695											<#assign allegatoUrl = allegato.getData()> 
1696										</#if> 
1697										<#assign contatore_allegati = contatore_allegati + 1> 
1698									</#list> 
1699 
1700									<#assign dlFileVersion = ''> 
1701									<#if validator.isNotNull(allegatoUrl)> 
1702										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1703									</#if> 
1704									<#if validator.isNotNull(dlFileVersion)> 
1705										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1706									<#else> 
1707										<div>&mdash;</div> 
1708									</#if> 
1709								</div> 
1710							</#list> 
1711						</div> 
1712 
1713						<div class="row"> 
1714							<div class="cell"> 
1715								<div class="">Composizione al 30/06</div> 
1716							</div> 
1717 
1718							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2> 
1719								<div class="cell"> 
1720									<#assign contatore_allegati = 0> 
1721									<#assign allegatoUrl = ''> 
1722									<#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato> 
1723										<#if contatore_allegati == 1> 
1724											<#assign allegatoUrl = allegato.getData()> 
1725										</#if> 
1726										<#assign contatore_allegati = contatore_allegati + 1> 
1727									</#list> 
1728 
1729									<#assign dlFileVersion = ''> 
1730									<#if validator.isNotNull(allegatoUrl)> 
1731										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1732									</#if> 
1733									<#if validator.isNotNull(dlFileVersion)> 
1734										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1735									<#else> 
1736										<div>&mdash;</div> 
1737									</#if> 
1738								</div> 
1739							</#list> 
1740						</div> 
1741 
1742						<div class="row"> 
1743							<div class="cell"> 
1744								<div class="">Composizione al 30/09</div> 
1745							</div> 
1746 
1747							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3> 
1748								<div class="cell"> 
1749									<#assign contatore_allegati = 0> 
1750									<#assign allegatoUrl = ''> 
1751									<#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato> 
1752										<#if contatore_allegati == 2> 
1753											<#assign allegatoUrl = allegato.getData()> 
1754										</#if> 
1755										<#assign contatore_allegati = contatore_allegati + 1> 
1756									</#list> 
1757 
1758									<#assign dlFileVersion = ''> 
1759									<#if validator.isNotNull(allegatoUrl)> 
1760										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1761									</#if> 
1762									<#if validator.isNotNull(dlFileVersion)> 
1763										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1764									<#else> 
1765										<div>&mdash;</div> 
1766									</#if> 
1767								</div> 
1768							</#list> 
1769						</div> 
1770 
1771						<div class="row"> 
1772							<div class="cell"> 
1773								<div class="">Composizione al 31/12</div> 
1774							</div> 
1775 
1776							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4> 
1777								<div class="cell"> 
1778									<#assign contatore_allegati = 0> 
1779									<#assign allegatoUrl = ''> 
1780									<#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato> 
1781										<#if contatore_allegati == 3> 
1782											<#assign allegatoUrl = allegato.getData()> 
1783										</#if> 
1784										<#assign contatore_allegati = contatore_allegati + 1> 
1785									</#list> 
1786 
1787									<#assign dlFileVersion = ''> 
1788									<#if validator.isNotNull(allegatoUrl)> 
1789										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1790									</#if> 
1791									<#if validator.isNotNull(dlFileVersion)> 
1792										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1793									<#else> 
1794										<div>&mdash;</div> 
1795									</#if> 
1796								</div> 
1797							</#list> 
1798						</div> 
1799					</#if> 
1800				</div> 
1801			</#if> 
1802		</div> 
1803	</#if> 
1804 
1805 
1806	<!-- INIZIO BLOCCO SMARTPHONE PROSPETTO --> 
1807 
1808	<#if !( 
1809	!Colonna_prospetto.getSiblings()?has_content || 
1810	(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
1811	(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
1812	(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
1813	)))> 
1814		<div class="table_smart secondaTab prospetto"> 
1815			<table> 
1816				<tbody> 
1817				<#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData()> <!-- in realta per gli smart le righe sono colonne --> 
1818				<#if tipo_colonne_prospetto == "dinamico"> 
1819 
1820					<tr class="intestazione_smart"> 
1821						<td colspan="1">Anno</td> 
1822						<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto> 
1823							<td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td> 
1824						</#list> 
1825					</tr> 
1826 
1827					<#if Colonna_prospetto.getSiblings()?has_content> 
1828						<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
1829							<#assign velocityCount = cur_Colonna_prospetto?index/> 
1830							<#if velocityCount % 2 == 0> 
1831								<tr class="pari"> 
1832							<#elseif velocityCount % 2 == 1> 
1833								<tr class="dispari"> 
1834							</#if> 
1835 
1836							<td>${cur_Colonna_prospetto.getData()}</td> 
1837							<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
1838								<#assign allegatoUrl = ''> 
1839								<td> 
1840									<#assign allegatoUrl = allegato.getData()> 
1841									<#assign dlFileVersion = ''> 
1842									<#if validator.isNotNull(allegatoUrl)> 
1843										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1844									</#if> 
1845									<#if validator.isNotNull(dlFileVersion)> 
1846										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1847									<#else> 
1848										<div>&mdash;</div> 
1849									</#if> 
1850								</td> 
1851							</#list> 
1852							</tr> 
1853						</#list> 
1854					</#if> 
1855 
1856				<#elseif tipo_colonne_prospetto == "quadrimestrali"> 
1857 
1858					<tr class="intestazione_smart"> 
1859						<td colspan="1">Anno</td> 
1860						<td colspan="1">31Mar</td> 
1861						<td colspan="1">30Giu</td> 
1862						<td colspan="1">30Set</td> 
1863						<td colspan="1">31Dic</td> 
1864					</tr> 
1865 
1866					<#if Colonna_prospetto.getSiblings()?has_content> 
1867						<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
1868							<#assign velocityCount = cur_Colonna_prospetto?index/> 
1869							<#if velocityCount % 2 == 0> 
1870								<tr class="pari"> 
1871							<#elseif velocityCount % 2 == 1> 
1872								<tr class="dispari"> 
1873							</#if> 
1874 
1875							<td>${cur_Colonna_prospetto.getData()}</td> 
1876 
1877							<#assign contatore_allegati = 0> 
1878							<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
1879								<#assign allegatoUrl = ''> 
1880								<td> 
1881									<#assign allegatoUrl = allegato.getData()> 
1882									<#assign dlFileVersion = ''> 
1883									<#if validator.isNotNull(allegatoUrl)> 
1884										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
1885									</#if> 
1886									<#if validator.isNotNull(dlFileVersion)> 
1887										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
1888									<#else> 
1889										<div>&mdash;</div> 
1890									</#if> 
1891								</td> 
1892							</#list> 
1893							</tr> 
1894						</#list> 
1895					</#if> 
1896				</#if> 
1897				</tbody> 
1898			</table> 
1899		</div> 
1900	</#if> 
1901 
1902	<!-- FINE BLOCCO SMARTPHONE PROSPETTO --> 
1903 
1904	<!-- BLOCCO INDICI --> 
1905 
1906	<#if !( 
1907	(!Indici_titolo_alto?has_content || Indici_titolo_alto.getData()=='') && 
1908	(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='') && 
1909	(!Label_titolo_tabella_valore_iniziale_indici?has_content || Label_titolo_tabella_valore_iniziale_indici.getData()=='') && 
1910	(!Label_titolo_tabella_prestazioni_annuali?has_content || Label_titolo_tabella_prestazioni_annuali.getData()=='') && 
1911	(!Indici_titolo_basso?has_content || Indici_titolo_basso.getData()=='') && 
1912	(!titolo_box_tabella?has_content || titolo_box_tabella.getData()=='') 
1913	)> 
1914 
1915	<div class="boxesDettaglio togliMargin"> 
1916		<div class="reset"> 
1917			<h5 class="titolo">${Indici_titolo_alto.getData()}</h5> 
1918			<p class="">${Indici_descrizione_alta.getData()}</p> 
1919 
1920			<#if !(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='')> 
1921				<#assign fileEntryPath = Nome_allegato_valore_iniziale_titoli.Allegato_valore_iniziale_titoli.getData()> 
1922				<#assign dlFileVersion = ''> 
1923				<#if validator.isNotNull(fileEntryPath)> 
1924					<#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
1925				</#if> 
1926 
1927				<#if validator.isNotNull(dlFileVersion)> 
1928					<h6 class="titolo">${Label_titolo_valore_iniziale_titoli.getData()}</h6> 
1929					<div class="archivi"> 
1930						<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
1931							<h6> 
1932								<span class="icona icon-file"></span> 
1933								<div>${Nome_allegato_valore_iniziale_titoli.getData()}</div> 
1934							</h6> 
1935						</a> 
1936					</div> 
1937				</#if> 
1938			</#if> 
1939 
1940			<#if Label_titolo_tabella_valore_iniziale_indici.getData() != ""> 
1941			<h6 class="titolo indici">${Label_titolo_tabella_valore_iniziale_indici.getData()}</h6> 
1942		</div> 
1943		<div class="table"> 
1944 
1945			<#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content> 
1946 
1947				<#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1> 
1948					<div class="row"> 
1949						<div class="cell"> 
1950							${cur_Riga_valore_iniziale_indici_colonna_1.getData()} 
1951						</div> 
1952 
1953						<div class="cell"> 
1954							${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()} 
1955						</div> 
1956 
1957						<div class="cell"> 
1958							${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()} 
1959						</div> 
1960					</div> 
1961				</#list> 
1962 
1963			</#if> 
1964 
1965		</div> 
1966 
1967		<!-- INIZIO BLOCCO SMARTPHONE SECONDA TABELLA --> 
1968		<div class="table_smart secondaTab"> 
1969			<#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content> 
1970				<table> 
1971					<tbody> 
1972					<#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1> 
1973						<#assign velocityCount = cur_Riga_valore_iniziale_indici_colonna_1?index/> 
1974						<#if velocityCount!=1> 
1975							<tr class="intestazione_smart"> 
1976								<td colspan="2">${cur_Riga_valore_iniziale_indici_colonna_1.getData()}</td> 
1977							</tr> 
1978							<tr class="pari"> 
1979								<td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_data_emissione.getData()}</td> 
1980								<td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}</td> 
1981							</tr> 
1982							<tr class="dispari"> 
1983								<td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_colonna_3.getData()}</td> 
1984								<td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}</td> 
1985							</tr> 
1986						</#if> 
1987 
1988					</#list> 
1989					</tbody> 
1990				</table> 
1991			</#if> 
1992		</div> 
1993		<!-- FINE BLOCCO SMARTPHONE SECONDA TABELLA --> 
1994 
1995 
1996 
1997		<div class="reset tab"> 
1998			</#if> 
1999			<#if Label_titolo_tabella_prestazioni_annuali.getData() != ""> 
2000			<h6 class="titolo">${Label_titolo_tabella_prestazioni_annuali.getData()}</h6> 
2001			<#if Prestazione_annuale_data_label.getSiblings()?has_content> 
2002		</div> 
2003		<div class="table"> 
2004 
2005			<#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label> 
2006				<div class="row"> 
2007					<div class="cell"> 
2008						${cur_Prestazione_annuale_data_label.getData()} 
2009					</div> 
2010 
2011					<div class="cell"> 
2012						${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()} 
2013					</div> 
2014				</div> 
2015			</#list> 
2016 
2017		</div> 
2018 
2019 
2020 
2021		<!-- INZIO BLOCCO SMARTPHONE --> 
2022		<div class="table_smart terzaTab"> 
2023			<table> 
2024				<tbody> 
2025				<#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label> 
2026					<#assign velocityCount = cur_Prestazione_annuale_data_label?index/> 
2027					<#if velocityCount==1> 
2028						<tr class="intestazione_smart"> 
2029							<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
2030							<td class="presta_ann">${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
2031						</tr> 
2032					<#elseif velocityCount%2==0> 
2033						<tr class="pari"> 
2034							<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
2035							<td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
2036						</tr> 
2037					<#elseif velocityCount%2==1> 
2038						<tr class="dispari"> 
2039							<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
2040							<td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
2041						</tr> 
2042					</#if> 
2043				</#list> 
2044				</tbody> 
2045			</table> 
2046		</div> 
2047 
2048		<!-- FINE BLOCCO SMARTPHONE --> 
2049 
2050		</#if> 
2051		</#if> 
2052 
2053		<!-- INIZIO BLOCCO TABELLA NxM --> 
2054		<#list titolo_box_tabella.getSiblings() as cur_titolo_box_tabella> 
2055		<div class="reset"> 
2056			<#assign tipoTabella = cur_titolo_box_tabella.tipo_tabella.getData()> 
2057			<#assign descrizioneTabella = cur_titolo_box_tabella.descrizione_tabella.getData()> 
2058			<#if descrizioneTabella!=''> 
2059				<h5 class="titolo prospetto"> 
2060					${cur_titolo_box_tabella.getData()} 
2061				</h5> 
2062				<p class="">${descrizioneTabella}</p> 
2063			<#else> 
2064				<h6 class="titolo"> 
2065					${cur_titolo_box_tabella.getData()} 
2066				</h6> 
2067			</#if> 
2068		</div> 
2069 
2070		<!-- controllo che la prima riga sia valorizzata altrimenti non la stampo --> 
2071		<#assign contTheaderVisible = 0> 
2072		<#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella> 
2073			<#if cur_th_tabella.getData()?has_content> 
2074				<#assign contTheaderVisible = contTheaderVisible + 1> 
2075				<#break> 
2076			</#if> 
2077		</#list> 
2078 
2079		<#assign contRowVisible = 0> 
2080		<#if cur_titolo_box_tabella.tr_tabella?has_content> 
2081			<#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella> 
2082				<#if cur_tr_tabella.getData()?has_content> 
2083					<#assign contRowVisible = contRowVisible + 1> 
2084					<#break> 
2085				<#else> 
2086					<#if cur_tr_tabella.td_tabella?has_content> 
2087						<#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella> 
2088							<!-- se di tipo testo stampo il campo td_tabella --> 
2089							<#if tipoTabella?lower_case == 'testo'> 
2090								<#if cur_td_tabella.getData()?has_content> 
2091									<#assign contRowVisible = contRowVisible + 1> 
2092									<#break> 
2093								</#if> 
2094							</#if> 
2095							<!-- se di tipo documento stampo il campo td_allegato_url --> 
2096							<#if tipoTabella?lower_case == 'documento'> 
2097								<#if cur_td_tabella.td_allegato_url.getData() && cur_td_tabella.td_allegato_url.getData() != ''> 
2098									<#assign contRowVisible = contRowVisible + 1> 
2099									<#break> 
2100								</#if> 
2101							</#if> 
2102						</#list> 
2103					</#if> 
2104				</#if> 
2105			</#list> 
2106		</#if> 
2107 
2108		<#if (contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content) || contRowVisible gt 0> 
2109		<div class="table"> 
2110 
2111			<#if contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content> 
2112			<div class="row theader"> 
2113				<#else> 
2114				<div class="row theader" style="display:none;"> 
2115					</#if> 
2116 
2117					<div class="cell"> 
2118						${cur_titolo_box_tabella.intestazione_tabella.getData()} 
2119					</div> 
2120 
2121					<#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella> 
2122						<div class="cell"> 
2123							${cur_th_tabella.getData()} 
2124						</div> 
2125					</#list> 
2126 
2127				</div> 
2128				<#if cur_titolo_box_tabella.tr_tabella.isEmpty()?has_content> 
2129				<#assign rowCount = 0> 
2130				<#assign velocityCount = 0> 
2131				<#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella> 
2132				<#assign velocityCount = cur_tr_tabella?index/> 
2133				<#assign rowCount = velocityCount> 
2134				<div class="row"> 
2135					<#if rowCount==1> 
2136					<div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;"> 
2137						<#else> 
2138						<div class="cell"> 
2139							</#if> 
2140 
2141							<div class="">${cur_tr_tabella.getData()}</div> 
2142						</div> 
2143 
2144						<#if cur_tr_tabella.td_tabella.isEmpty()?has_content> 
2145						<#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella> 
2146						<#if rowCount==1> 
2147						<div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;"> 
2148							<#else> 
2149							<div class="cell"> 
2150								</#if> 
2151 
2152								<!-- se di tipo testo stampo il campo td_tabella --> 
2153								<#if tipoTabella?lower_case == 'testo'> 
2154									${cur_td_tabella.getData()} 
2155								</#if> 
2156 
2157								<!-- se di tipo documento stampo il campo td_allegato_url --> 
2158								<#if tipoTabella?lower_case == 'documento'> 
2159									<#assign fileEntryPath = cur_td_tabella.td_allegato_url.getData()> 
2160 
2161									<#assign dlFileVersion = ''> 
2162									<#if validator.isNotNull(fileEntryPath)> 
2163										<#assign dlFileVersion =$confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
2164									</#if> 
2165									<#if validator.isNotNull(dlFileVersion)> 
2166										<a class="icona icon-file" href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
2167									<#else> 
2168										<div>&mdash;</div> 
2169									</#if> 
2170								</#if> 
2171							</div> 
2172							</#list> 
2173							</#if> 
2174						</div> 
2175						<!-- end if in piu --> 
2176						</#list> 
2177					</div> 
2178					</#if> 
2179					</#if> 
2180					</#list> 
2181					<!-- FINE BLOCCO TABELLA NxM --> 
2182 
2183 
2184					<div class="reset"> 
2185						<h5 class="titolo">${Indici_titolo_basso.getData()}</h5> 
2186 
2187						<p class="">${Indici_descrizione_bassa.getData()}</p> 
2188					</div> 
2189 
2190				</div> 
2191			</div> <!-- boxesDettaglio togliMargin --> 
2192 
2193			</#if> 
2194 
2195 
2196 
2197			<!-- FINE BLOCCO INDICI --> 
2198 
2199 
2200 
2201			<!-- BLOCCO (DOWNLOADS BOXES) --> 
2202 
2203			<#if !(Download_box_label?? && Download_box_label.getData()?has_content && (!Download_box_label.getSiblings()?has_content || 
2204			(Download_box_label.getSiblings()?size==1 && 
2205			(!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') && 
2206			(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content || 
2207			(Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 && 
2208			(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='') 
2209			)))))> 
2210 
2211				<#list Download_box_label.getSiblings() as cur_Download_box_label> 
2212					<div class="boxesDettaglio togliMargin"> 
2213						<div class="reset download"> 
2214							<#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())> 
2215								<#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size> 
2216								<h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5> 
2217							<#else> 
2218								<h5 class="titolo download">${cur_Download_box_label.getData()}</h5> 
2219							</#if> 
2220							<#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content> 
2221								<div class="archivi"> 
2222									<#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box> 
2223 
2224									<#assign fileEntryPath = cur_Download_box.Allegato_url.getData()> 
2225 
2226									<#assign dlFileVersion = ''> 
2227									<#if validator.isNotNull(fileEntryPath)> 
2228										<#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
2229									</#if> 
2230									<#if validator.isNotNull(dlFileVersion)> 
2231									<#if cur_Download_box.tipo_allegato.getData()=="excel"> 
2232									<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
2233										<h6> 
2234											<span class="icona icon-copy"></span> 
2235											<#else> 
2236											<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
2237												<h6> 
2238													<span class="icona icon-file"></span> 
2239													</#if> 
2240													${cur_Download_box.getData()} 
2241												</h6> 
2242											</a> 
2243											</#if> 
2244											</#list> 
2245								</div> 
2246							</#if> 
2247						</div> 
2248					</div> 
2249				</#list> 
2250			</#if> 
2251 
2252			<!-- FINE BLOCCO (DOWNLOADS BOXES) --> 
2253 
2254			<!-- BLOCCO DISCLAIMER --> 
2255 
2256			<footer > 
2257 
2258				<p class="caption disclaimer">${disclaimer.getData()}</p> 
2259 
2260			</footer> 
2261 
2262			<!-- FINE BLOCCO DISCLAIMER --> 
2263 
2264 
2265			<!-- LINK AL TOP --> 
2266			<a href="#Top" class="btn-outlined back-to-top" title="Torna a inizio pagina" onclick="document.activeElement.blur();"> 
2267				TORNA A INIZIO PAGINA 
2268				<svg class="size-6" fill="none" stroke="#032A5A" stroke-width="1.5" xmlns="http://www.w3.org/2000/svg"> 
2269					<path d="m4.5 15.75 7.5-7.5 7.5 7.5" stroke-linecap="round" stroke-linejoin="round"></path> 
2270				</svg> 
2271			</a> 
2272			<!-- FINE LINK AL TOP --> 
2273 
2274			<script type="text/javascript"> 
2275 
2276				jQuery(document).ready(function(){ 
2277 
2278					/* Nasconde, se presente lo span che contiene la pagina di dettaglio */ 
2279					if(jQuery(".breadcrumbs .elementi span:not(.link-name)").length) { 
2280						jQuery(".breadcrumbs .elementi span:not(.link-name)").hide(); 
2281
2282 
2283					if(jQuery("html").is(".smartphone")) 
2284
2285						convertTableToDivs(); 
2286						swipeProspetto(); 
2287						jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>"); 
2288						jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>"); 
2289						jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items"); 
2290 
2291						jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>"); 
2292 
2293						var bullet=jQuery('<span class="carousel-menu-index">&bull;</span>'); 
2294 
2295						/* creo l'elenco delle slide */ 
2296						jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){ 
2297							bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu"); 
2298						}); 
2299 
2300						var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu'); 
2301 
2302						car.play(); 
2303
2304				}); 
2305 
2306				function updateAndamentoLabel(){ 
2307					jQuery("#andamentoDa").html(jQuery("#datepickerDa").val()); 
2308					jQuery("#andamentoA").html(jQuery("#datepickerA").val()); 
2309
2310 
2311				function applyGradientOnPlot(){ 
2312					var canvasSeries = jQuery(".jqplot-series-canvas")[0]; 
2313					var ctx = canvasSeries.getContext("2d"); 
2314					var my_gradient=ctx.createLinearGradient(0,0,0,300); 
2315					my_gradient.addColorStop(0, "rgba(251,168,129,0.6)"); 
2316					my_gradient.addColorStop(1, "rgba(251,168,129,0.1)"); 
2317					ctx.fillStyle = my_gradient; 
2318					ctx.fill(); 
2319
2320 
2321				function updateDatePickers(){ 
2322					//Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding. 
2323 
2324					var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text(); 
2325 
2326					if(dataInizialeDefault.length>0){ 
2327						var dataNuova = new Date (dataInizialeDefault); 
2328 
2329						jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault)); 
2330					}else{ 
2331						jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
2332
2333 
2334 
2335					jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
2336					jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
2337					jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
2338					jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
2339					jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
2340
2341 
2342				function aggiornaPerformance(dataIniziale, dataFinale){ 
2343					var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale); 
2344 
2345					var valoreIniziale = dati[0][1]; 
2346					var valoreFinale = dati[dati.length - 1][1]; 
2347 
2348					var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100; 
2349					if(!isNumber(performance)){ 
2350						performance = 0; 
2351
2352					var performance_rounded = +performance.toFixed(2); 
2353 
2354					var performance_split = []; 
2355					if(performance_rounded.toString().indexOf(".")>0){ 
2356						performance_split = performance_rounded.toString().split("."); 
2357					}else{ 
2358						performance_split[0] = performance_rounded; 
2359						performance_split[1] = 0; 
2360
2361					jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %"); 
2362
2363 
2364				function postDrawProcessing(){ 
2365					console.log("postDrawHooks!"); 
2366					applyGradientOnPlot(); 
2367 
2368					var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min); 
2369					var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max); 
2370 
2371					aggiornaPerformance(dataIniziale, dataFinale); 
2372 
2373					var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale) 
2374					var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale); 
2375 
2376					//aggiorno solo se diverso per evitare di far scattare onchange 
2377					//if (dataInizialeStr!=jQuery("#datepickerDa").val()) { 
2378					console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr); 
2379					jQuery("#datepickerDa").datepicker("setDate", dataIniziale); 
2380					//} 
2381					//if (dataFinaleStr!=jQuery("#datepickerA").val()) { 
2382					console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr); 
2383					jQuery("#datepickerA").datepicker("setDate", dataFinale); 
2384					//} 
2385 
2386					updateAndamentoLabel(); 
2387
2388 
2389				function isNumber(n) { 
2390					return !isNaN(parseFloat(n)) && isFinite(n); 
2391
2392 
2393				jQuery(document).ready(function() { 
2394 
2395					//window.primavolta = true; 
2396 
2397					jQuery.jsDate.regional['it-IT'] = { 
2398						monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], 
2399						monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'], 
2400						dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'], 
2401						dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], 
2402						formatString: '%d-%m-%Y %H:%M:%S' 
2403					}; 
2404					jQuery.jsDate.regional.getLocale(); 
2405 
2406					Date.prototype.sameDay = function(d) { 
2407 
2408 
2409						return (this.getFullYear() === d.getFullYear() 
2410								&& this.getMonth() === d.getMonth() 
2411								&& this.getDate() === d.getDate()); 
2412 
2413
2414 
2415					//Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione. 
2416					//window.gestioneGrafico garantisce che è una variabile globale! -RC 
2417					window.gestioneGrafico = { 
2418 
2419						//Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC 
2420						pad: 1.1, 
2421 
2422						tuttiIdatiDelGrafico : function() { 
2423 
2424							var tuttiIDati =[]; 
2425 
2426							<#list _listaRendimenti as storicoBean> 
2427							tuttiIDati.push([this.getADate('${storicoBean.getDataAggiornamentoStr()}'),'${storicoBean.getValoreFondoUno()}']); 
2428							</#list> 
2429 
2430							//ritorno una copia dell'array che contiene tutti i dati 
2431							return tuttiIDati.slice(); 
2432						}, 
2433						datiBenchmark : function(){ 
2434							var datiBenchmark = []; 
2435							<#list _benchmarkFondoMap?keys as _benchmarkFondoKey> 
2436							datiBenchmark.push([this.getADate('${_benchmarkFondoKey}'),'${_benchmarkFondoMap[_benchmarkFondoKey]}']); 
2437							</#list> 
2438							return datiBenchmark.slice(); 
2439						}, 
2440						getADate: function (dataStr) 
2441
2442							//console.log("getADate dataStr" + dataStr); 
2443							if (dataStr == null) 
2444								return; 
2445							var partiData = dataStr.split("/"); 
2446							var day = partiData[0]; 
2447							var month = partiData[1] - 1; 
2448							var year = partiData[2]; 
2449							//console.log("year " + year + " month" + month + " day " + day) 
2450							var aDate = new Date(year, month, day, 0, 0, 0, 0); 
2451							return aDate; 
2452						}, 
2453 
2454						datiTraLeDate : function (dataDa, dataA){ 
2455							//console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA); 
2456 
2457							var tuttiIdati = this.tuttiIdatiDelGrafico(); 
2458							//cerco l'elemento minimo superiore a dataDa 
2459							//cerco l'elemnto massimo inferiore a dataA 
2460							//l'array di dati originali è gia ordinato per data 
2461							var indiceDellaDataMinore = -1; 
2462							var indiceDellaDataMaggiore = -1; 
2463							var currDate; 
2464							//cerco la prima data subito superiore a dataDa 
2465							for (var i=0; i< tuttiIdati.length; i++) { 
2466								currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
2467								if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) { 
2468									indiceDellaDataMinore = i; 
2469									break; 
2470
2471
2472							//cerco la prima data subito inveriore  a dataA 
2473							for (var i=tuttiIdati.length -1; i>=0; i--) { 
2474								currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
2475								if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) { 
2476									indiceDellaDataMaggiore = i; 
2477									break; 
2478
2479
2480							//a questo punto ho gli indici delle date minore e maggiore, taglio l'array 
2481							var nDiElementi  = indiceDellaDataMaggiore - indiceDellaDataMinore + 1; 
2482							console.log("nDiElementi" + nDiElementi); 
2483							var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi); 
2484							//se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]] 
2485							if (nuovoRange.length == 0){ 
2486								console.log("ritorno un range vuoto"); 
2487								nuovoRange = [["{$_datiStorico.getDataInizialeString()}"][0],["{$_datiStorico.getDataFinaleString()}"][0]]; 
2488
2489 
2490							return nuovoRange; 
2491						}, 
2492						getAxisBounds: function(dati, pad, dataDa, dataA, datiBenchmark){ 
2493							var _pad = (pad==null||typeof pad == 'undefined')?0:pad; 
2494							var _dataDa = typeof dataDa == 'undefined'?null:dataDa; 
2495							var _dataA = typeof dataA == 'undefined'?null:dataA; 
2496							var _datiBenchmark = typeof datiBenchmark == 'undefined'?null:datiBenchmark; 
2497 
2498							var minXVal = null; 
2499							var maxXVal = null; 
2500							//Vogliamo che Y parta da 0 o dal minimo valore minore di 0 
2501							var minYVal = null; 
2502							var maxYVal = null; 
2503 
2504							for(var i=0; i<dati.length; i++){ 
2505								var valY = parseFloat(dati[i][1]); 
2506								if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){ 
2507									minXVal = dati[i][0]; 
2508
2509								if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){ 
2510									maxXVal = dati[i][0]; 
2511
2512								if(minYVal==null||valY<minYVal){ 
2513									minYVal = valY; 
2514
2515								if(maxYVal==null||valY>maxYVal){ 
2516									maxYVal = valY; 
2517
2518
2519 
2520							if(_datiBenchmark != null){ 
2521								for(var l=0; l<_datiBenchmark.length; l++){ 
2522									var valY = parseFloat(_datiBenchmark[l][1]); 
2523									if(minYVal==null||valY<minYVal){ 
2524										minYVal = valY; 
2525
2526									if(maxYVal==null||valY>maxYVal){ 
2527										maxYVal = valY; 
2528
2529
2530
2531 
2532							if(dataDa!=null){ 
2533								minXVal = dataDa; 
2534
2535							if(dataA!=null){ 
2536								maxXVal = dataA; 
2537
2538 
2539							var padX = 0; 
2540							var padY = 0; 
2541							if(dati.length>1){ 
2542								padX = ((maxXVal - minXVal)*(pad-1))/2; 
2543								//             padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2; 
2544								padY = ((maxYVal - minYVal)*(pad-1))/2; 
2545							}else{ 
2546								padX = 86401000; 
2547								padY = maxYVal*(pad-1); 
2548
2549 
2550							if(padY<0){ 
2551								padY=-padY; 
2552							}else if(padY==0){ 
2553								padY=2; 
2554
2555 
2556							var bounds = { 
2557								minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX), 
2558								maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX), 
2559								//             minY: minYVal>0?0:minYVal-padY, 
2560								minY: (minYVal-padY), 
2561								maxY: maxYVal+padY 
2562
2563 
2564							return bounds; 
2565						}, 
2566						zoomHandler: function() { 
2567							var c = this.plugins.cursor; 
2568							console.log(c); 
2569						}, 
2570 
2571						plotter: null, 
2572						visualizzaGrafico : function (dati, dataDa, dataA){ 
2573							var seriesToPlot; 
2574							var datiBenchmarkFiltered = []; 
2575							try{ 
2576								if (typeof dataDa === 'undefined') dataDa = new Date(gestore.plotter.axes.xaxis.min); 
2577								if (typeof dataA === 'undefined') dataA = new Date(gestore.plotter.axes.xaxis.max); 
2578							}catch(e){ 
2579								//console.log(e); 
2580
2581							var minDate = jQuery("#datepickerDa").datepicker('getDate'),//.datepicker('option', 'minDate'), 
2582									maxDate = jQuery("#datepickerA").datepicker('getDate'),//.datepicker('option', 'maxDate'), 
2583									datiFondo = window.gestioneGrafico.tuttiIdatiDelGrafico().slice(), 
2584									benchmarkSerie = window.gestioneGrafico.datiBenchmark().slice(); 
2585							datiFondo.sort(function(a,b){ 
2586								return a[0] - b[0]; 
2587							}); 
2588 
2589							var datiBenchmarkRebased = []; 
2590							var minFondo = null; 
2591 
2592							for (var i = 0; i < datiFondo.length; i++){ 
2593								if (!isNaN(datiFondo[i][0])){ 
2594									datiFondo[i][0] = new Date(datiFondo[i][0]); 
2595
2596
2597 
2598							for (var i = 0; i < datiFondo.length; i++){ 
2599								if (datiFondo[i][0].sameDay(minDate)){ 
2600									minFondo = datiFondo[i]; 
2601									break; 
2602
2603
2604							for (var i = 0; i < datiFondo.length; i++){ 
2605								if (datiFondo[i][0] >= minDate){ 
2606									minFondo = datiFondo[i]; 
2607									break; 
2608
2609
2610							if (minFondo == null) minFondo = datiFondo[0]; 
2611 
2612							var maxFondo = null; 
2613 
2614							for (var i = 0; i < datiFondo.length; i++){ 
2615								if (datiFondo[i][0].sameDay(maxDate)){ 
2616									maxFondo = datiFondo[i]; 
2617									break; 
2618
2619
2620 
2621							if(maxFondo == null){ 
2622								for (var i = 0; i < datiFondo.length; i++){ 
2623									if (datiFondo[i][0] > maxDate){ 
2624										maxFondo = datiFondo[i]; 
2625										break; 
2626
2627
2628
2629							var datiFiltrati=[]; 
2630							for(var i = 0; i < dati.length; i++){ 
2631								if (window.gestioneGrafico.checkData(dati[i][0], minFondo[0], maxFondo[0], datiFondo)){ 
2632									datiFiltrati.push(dati[i]); 
2633
2634
2635							seriesToPlot = [datiFiltrati]; 
2636							if (window.gestioneGrafico.datiBenchmark().length > 0 ){ 
2637								console.log("maxFondo[0] "+ maxFondo[0]); 
2638								for(var i = 0; i < benchmarkSerie.length; i++){ 
2639									if (window.gestioneGrafico.checkData(benchmarkSerie[i][0], minFondo[0], maxFondo[0], datiFondo)){ 
2640										datiBenchmarkFiltered.push(benchmarkSerie[i]); 
2641
2642
2643								//dati ordinati per data 
2644								datiBenchmarkFiltered.sort(function(a,b){ 
2645									return a[0] - b[0]; 
2646								}); 
2647 
2648								datiFiltrati.sort(function(a,b){ 
2649									return a[0] - b[0]; 
2650								}); 
2651 
2652								if (datiBenchmarkFiltered.length > 1){ 
2653 
2654									for(var i=0;i<datiBenchmarkFiltered.length; i++){ 
2655 
2656										if(datiBenchmarkFiltered[i][0].getTime() === minFondo[0].getTime() && (datiBenchmarkRebased == null || datiBenchmarkRebased.length == 0 )){ 
2657 
2658											var rebased = datiBenchmarkFiltered[i].slice(); 
2659											rebased[0] = rebased[0]; 
2660											rebased[1] = minFondo[1]; 
2661 
2662											datiBenchmarkRebased.push(rebased); 
2663 
2664										}else{ 
2665 
2666											if(i<1){ 
2667												var benchValue = datiBenchmarkFiltered[i][1]; 
2668											}else{ 
2669												var benchValue = ((datiBenchmarkFiltered[i][1]/datiBenchmarkFiltered[i-1][1])*datiBenchmarkRebased[i-1][1]).toFixed(5); 
2670
2671 
2672											var rebased = datiBenchmarkFiltered[i].slice(); 
2673 
2674											rebased[0] = rebased[0]; 
2675											rebased[1] = benchValue; 
2676											datiBenchmarkRebased.push(rebased); 
2677
2678
2679
2680								seriesToPlot.push(datiBenchmarkRebased); 
2681
2682							var singlePoint = dati.length==1; 
2683							var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA, datiBenchmarkRebased); 
2684							var logaritmica = logaritmica; 
2685							console.log("Axis Bounds: " + bounds); 
2686							if(this.plotter != null) 
2687								this.plotter.destroy(); 
2688							if(singlePoint){ 
2689								dati.push(dati[0]); 
2690
2691							this.plotter = jQuery.jqplot('chartdiv',  seriesToPlot, 
2692
2693										title:{ 
2694											text: '', 
2695											show: false 
2696										}, 
2697										axesDefaults: { 
2698										}, 
2699										cursor:{ 
2700											show: true, 
2701											showTooltip: false, 
2702											zoom: false, 
2703											constrainZoomTo: 'x' 
2704										}, 
2705										seriesDefaults: { 
2706 
2707											color: '#fba881',      // CSS color spec to use for the line.  Determined automatically. 
2708											showMarker: singlePoint,   // render the data point markers or not. 
2709											fill: true,        // fill under the line, 
2710											fillAndStroke: singlePoint,       // *stroke a line at top of fill area. 
2711											fillColor: '#fba881', 
2712											fillAlpha: 0.001,      // *custom alpha to apply to fillColor. 
2713											shadow: false   // show shadow or not. 
2714 
2715										}, 
2716										axes:{ 
2717											xaxis:  { 
2718												renderer:jQuery.jqplot.DateAxisRenderer, 
2719												min: bounds.minX, 
2720												max: bounds.maxX, 
2721												//min:minimo, 
2722												//max:maximo, 
2723												tickOptions: {formatString: '%d/%m/%Y'} 
2724											}, 
2725											yaxis: { 
2726												renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer, 
2727												min: bounds.minY, 
2728												max: bounds.maxY, 
2729												tickOptions: {formatString: '%#.3f' +  (divisaSimboloMap['${valutaFondoUno}']!=null?" " + divisaSimboloMap['${valutaFondoUno}']:" " + '${valutaFondoUno}') } 
2730
2731										}, 
2732										series:[{ 
2733											lineWidth:2, 
2734											markerOptions: 
2735
2736														style:'circle' 
2737
2738										},{ 
2739											lineWidth: 1, 
2740											markerOptions: 
2741
2742														style:'circle' 
2743													}, 
2744											color: '#0a4379',      // CSS color spec to use for the line.  Determined automatically. 
2745											linePattern: 'dashed', 
2746											lineWidth: 0.5, 
2747											showMarker: singlePoint,   // render the data point markers or not. 
2748											fill: false, 
2749											shadow: false, 
2750											rendererOptions: { 
2751												smooth: true 
2752
2753										}], 
2754										highlighter: { 
2755											show: true, 
2756											sizeAdjust: 7.5, 
2757											formatString: "%s - %#.3f" 
2758										}, 
2759										grid: { 
2760											drawGridLines: true,        // wether to draw lines across the grid or not. 
2761											gridLineColor: '#f0f1f6',    // *Color of the grid lines. 
2762											background: '#fff',      // CSS color spec for background color of grid. 
2763											borderColor: '#f0f1f6',     // CSS color spec for border around grid. 
2764											borderWidth: 1.0,           // pixel width of border around grid. 
2765											shadow: false,               // draw a shadow for grid. 
2766
2767									}); 
2768 
2769 
2770						}, 
2771 
2772						checkData: function(data, dStart, dEnd, datiFondo){ 
2773							var dStart = typeof dStart == 'undefined'?null:dStart; 
2774							var dEnd = typeof dEnd == 'undefined'?null:dEnd; 
2775 
2776							if (dStart == null || dEnd == null){ 
2777								for(var i=0; i<datiFondo.length; i++){ 
2778									if(dStart == null || datiFondo[i][0] < dStart){ 
2779										dStart = datiFondo[i][0]; 
2780
2781									if(dEnd == null || datiFondo[i][0] > dEnd){ 
2782										dEnd = datiFondo[i][0]; 
2783
2784
2785
2786							if (data >= dStart && data <= dEnd){ 
2787								return true; 
2788
2789							return false; 
2790
2791
2792					<#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))> 
2793 
2794					<#if _listaRendimenti?size gt 0> 
2795 
2796					jQuery.jqplot.sprintf.thousandsSeparator = ''; 
2797					jQuery.jqplot.sprintf.decimalMark = ','; 
2798					var gestore = gestioneGrafico; 
2799					var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico(); 
2800					var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare,this.pad); 
2801					console.log('LIMITS'); 
2802					console.log(bounds); 
2803					// inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti 
2804					jQuery("#datepickerDa").datepicker({ 
2805						//showOtherMonths: false, 
2806						//selectOtherMonths: false, 
2807						changeMonth : true, 
2808						changeYear : true, 
2809						dateFormat : "dd/mm/yy", 
2810						defaultDate : bounds.minX, 
2811						minDate : bounds.minX, 
2812						maxDate : bounds.maxX, 
2813						onSelect : function() { 
2814							jQuery("#datepickerA").datepicker('option', { 
2815								minDate : jQuery(this).datepicker('getDate') 
2816							}); 
2817							updateGraphDatesFromDatePickers(); 
2818							//updateDatePickers(); 
2819						}, 
2820					}, jQuery.datepicker.regional['it']); 
2821					jQuery("#datepickerDa").datepicker("setDate", bounds.minX); 
2822 
2823					jQuery("#datepickerA").datepicker({ 
2824						changeMonth : true, 
2825						changeYear : true, 
2826						dateFormat : "dd/mm/yy", 
2827						defaultDate : bounds.maxX, 
2828						minDate : bounds.minX, 
2829						maxDate : bounds.maxX, 
2830						onSelect : function() { 
2831							jQuery("#datepickerDa").datepicker('option', { 
2832								maxDate : jQuery(this).datepicker('getDate') 
2833							}); 
2834							updateGraphDatesFromDatePickers(); 
2835						}, 
2836						beforeShow : function(input, inst) { 
2837							inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'}); 
2838
2839					}, jQuery.datepicker.regional['it']); 
2840					jQuery("#datepickerA").datepicker("setDate",bounds.maxX); 
2841					function updateGraphDatesFromDatePickers() { 
2842						var dataDaStr = jQuery("#datepickerDa").val(); 
2843						var dataAStr = jQuery("#datepickerA").val(); 
2844						console.log("date cambiate: da " + dataDaStr + " a " + dataAStr); 
2845						// Se date nulle usa gli estremi 
2846						if (dataDaStr == '') 
2847
2848							dataDaStr = gestore.getADate("${_datiStorico.getDataInizialeString()}"); 
2849							jQuery("#datepickerDa").val(dataDaStr); 
2850
2851						if (dataAStr == '') 
2852
2853							dataAStr = gestore.getADate("${_datiStorico.getDataFinaleString()}"); 
2854							jQuery("#datepickerA").val(dataAStr); 
2855
2856						var dataDa = gestore.getADate(dataDaStr); 
2857						var dataA = gestore.getADate(dataAStr); 
2858						// se la data è maggiore di data a non fare nulla 
2859						if (dataDa >= dataA) 
2860							return; 
2861 
2862						gestore.plotter.axes.xaxis.min = dataDa; 
2863						gestore.plotter.axes.xaxis.max = dataA; 
2864 
2865						var interval = (dataA.getTime() - dataDa.getTime()) / 5; 
2866						var ticks = []; 
2867						var currTick = dataDa.getTime(); 
2868						ticks.push(currTick); 
2869						for (var i = 0; i < 5; i++) { 
2870							currTick += interval; 
2871							ticks.push(currTick); 
2872
2873 
2874						gestore.plotter.axes.xaxis.ticks = ticks; 
2875						//gestore.plotter.replot(); 
2876						var datiDaVisualizzare = window.gestioneGrafico.tuttiIdatiDelGrafico(); 
2877						window.gestioneGrafico.visualizzaGrafico(datiDaVisualizzare); 
2878 
2879						// Necessario per riabilitare zoom 
2880						gestore.plotter.axes.xaxis.ticks = []; 
2881					}; 
2882					if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9) 
2883
2884						// carica script che emula il canvas poiché ie < 9 non lo supoporta 
2885						var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js"; 
2886						jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) { 
2887							gestore.visualizzaGrafico(datiDaVisualizzare); 
2888 
2889							applyGradientOnPlot(); 
2890							jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
2891							updateAndamentoLabel(); 
2892						}); 
2893
2894					else 
2895
2896						gestore.visualizzaGrafico(datiDaVisualizzare); 
2897						applyGradientOnPlot(); 
2898						jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
2899						updateAndamentoLabel(); 
2900
2901					updateDatePickers(); 
2902					updateGraphDatesFromDatePickers(); 
2903					aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]); 
2904					jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers); 
2905					$('#datepickerDa').focus(function(){ 
2906						$('#datepickerDa').datepicker('show'); 
2907					}); 
2908 
2909					jQuery('#datepickerDa').click(function(){ 
2910						jQuery('#datepickerDa').datepicker('show'); 
2911					}); 
2912					jQuery('#datepickerA').focus(function(){ 
2913						jQuery('#datepickerA').datepicker('show'); 
2914					}); 
2915 
2916					jQuery('#datepickerA').click(function(){ 
2917						jQuery('#datepickerA').datepicker('show'); 
2918					}); 
2919					</#if> 
2920					</#if> 
2921				}); 
2922			</script> 
2923 
2924 
2925		</div> 
2926 
2927		</#if>  <#-- Fine Fondo_In_valuta #IF --> 
2928 
2929		<#else> 
2930 
2931		<div class="template_rendimenti_e_quotazioni"> 
2932 
2933			<#assign localeIT = localeUtil.fromLanguageId("it")> 
2934			<#assign currentGroup = groupLocalService.getGroup(groupId)> 
2935			<#assign checkDisplayDate = !currentGroup.isStagingGroup()> 
2936			<#assign user = ""> 
2937 
2938			<#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!=""> 
2939				<#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))> 
2940			<#else> 
2941				<#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))> 
2942			</#if> 
2943 
2944			<#assign current_url = request.getAttribute("CURRENT_URL")> 
2945			<#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))> 
2946			<#assign catId = getterUtil.getLong(catIdStr)> 
2947			<!-- catIdStr - catId --> 
2948			<#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))> 
2949			<#assign subcatId = getterUtil.getLong(subcatIdStr)> 
2950			<!-- subcatIdStr - subcatId --> 
2951			<#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))> 
2952			<!-- categoria --> 
2953			<#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))> 
2954			<!-- $sottoCategoria --> 
2955 
2956			<!-- Take layout id --> 
2957			<#assign currentLayoutId = themeDisplay.getPlid()> 
2958			<#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)> 
2959 
2960			<!-- parent layoutId --> 
2961			<#assign currentLayoutParentPlid = currentLayout.getParentPlid()> 
2962			<#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid?number)> 
2963			<#assign catKey = 0> 
2964			<#if validator.isNotNull(catId) && catId!=0> 
2965				<#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()> 
2966			</#if> 
2967 
2968			<#if validator.isNotNull(catKey)> 
2969				<#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()> 
2970			</#if> 
2971 
2972			<#if validator.isNotNull(catId) && catId!=0> 
2973				<#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()> 
2974			</#if> 
2975 
2976			<#assign isOICR = false> 
2977 
2978 
2979			<!-- pretitolo --> 
2980			<#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) || catKey?lower_case == "rivalutabili"> 
2981				<#assign pre_titolo_rendimento = "Gestione Separata"> 
2982			<#elseif categoria?lower_case == "index linked"> 
2983				<#assign pre_titolo_rendimento = "Indice"> 
2984			<#elseif categoria?lower_case == "oicr"> 
2985				<#assign pre_titolo_rendimento = "OICR"> 
2986				<#assign isOICR = true> 
2987			<#else> 
2988				<#assign pre_titolo_rendimento = "Fondo"> 
2989			</#if> 
2990 
2991			<!-- valore dei fondi dal web content --> 
2992			<#assign valoreFondoUno =  confTool.getValoreFondoFromStr(valore_1.getData(), locale)> 
2993			<#assign valoreFondoDue =  confTool.getValoreFondoFromStr(valore_2.getData(), locale)> 
2994 
2995			<#if getterUtil.getBoolean(usa_valori_da_fondo.getData())> 
2996 
2997				<#assign usaFondo = true> 
2998 
2999				<!-- titolo --> 
3000				<#assign titolo_rendimento = Titolo_rendimento.getData()> 
3001 
3002				<#if titolo_rendimento==""> 
3003					<#assign titolo_rendimento = Titolo_rendimento.getData()> 
3004				</#if> 
3005 
3006				<!-- valore e valuta dai fondi dal db --> 
3007				<#if validator.isNotNull(valoreFondoUno)> 
3008 
3009					<#if validator.isNull(valoreFondoDue) || valoreFondoDue == "0" || valoreFondoDue == "0,000"> 
3010						<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)> 
3011						<#assign valoreFondoDue = ""> 
3012					<#else> 
3013						<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)> 
3014						<#assign valoreFondoDue =  confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(), locale)> 
3015					</#if> 
3016				<#else> 
3017					<#assign valoreFondoUno =  confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(),locale)> 
3018					<#assign valoreFondoDue =  confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(),locale)> 
3019				</#if> 
3020 
3021				<#if valoreFondoDue=="0" || valoreFondoDue == "0,000"> 
3022					<#assign valoreFondoDue = ""> 
3023				</#if> 
3024 
3025				<#assign valutaFondoUno =  confTool.getValutaFondoUnoFromDb(id_fondo.getData())> 
3026				<#assign valutaFondoDue =  confTool.getValutaFondoDueFromDb(id_fondo.getData())> 
3027 
3028				<!-- data aggiornamento valore --> 
3029				<#assign dataAggiornamentoValore = confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)> 
3030 
3031				<!-- rating --> 
3032				<#assign ratings = confTool.getRatingsFromDb(id_fondo.getData())> 
3033 
3034			<#else> 
3035 
3036				<#assign usaFondo = false> 
3037 
3038				<!-- titolo --> 
3039				<#assign titolo_rendimento = Titolo_rendimento.getData()> 
3040 
3041				<!-- valuta dei fondi dal web content --> 
3042				<#assign valutaFondoUno =  valuta1.getData()> 
3043				<#assign valutaFondoDue =  valuta_2.getData()> 
3044 
3045				<!--  data aggiornamento valori --> 
3046				<#assign aggiornato_al_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(aggiornato_al.getData()), localeIT)> 
3047				<#assign dataAggiornamentoValore = dateUtil.getDate(aggiornato_al_DateObj, "dd MMM yyyy", localeIT)> 
3048 
3049				<!-- rating --> 
3050				<#assign ratings = Rating.getData()> 
3051 
3052			</#if> 
3053 
3054			<!-- PRIMO BLOCCO --> 
3055			<#assign breadCrumb = confTool.getBreadcrumb(themeDisplay.getLayout(),themeDisplay) > 
3056			<#assign titolo_da_visualizzare = titolo_rendimento> 
3057			<div class="boxesDettaglio togliMargin"> 
3058				<div> 
3059					<div class="supTitle capitalize">${pre_titolo_rendimento}</div> 
3060					<h1 class="titoloRendimento">${titolo_da_visualizzare}</h1> 
3061 
3062					<#if Notifica_alert?? && Notifica_alert.getData() != ""> 
3063 
3064						<div class="descrizioni notifica_alert">${Notifica_alert.getData()}</div> 
3065 
3066						<#assign testoFascetta = confTool.getRendimentoParsed(article, themeDisplay.getLanguageId()).getTestoFascetta(article, themeDisplay.getLanguageId(), catId, subcatId)> 
3067						<#if validator.isNotNull(testoFascetta)> 
3068							<div class="fascetta_rendimento ${catColor}">${testoFascetta}</div> 
3069						</#if> 
3070 
3071					</#if> 
3072 
3073					<#assign strippedHtmlDescrizione = confTool.stripHTML(Descrizione_rendimento_e_quotazione.getData())?trim> 
3074					<#if validator.isNotNull(titolo_rendimento) && strippedHtmlDescrizione?lower_case != titolo_rendimento?trim?lower_case> 
3075						<div class="descrizioni">${Descrizione_rendimento_e_quotazione.getData()}</div> 
3076					</#if> 
3077				</div> 
3078 
3079				<!-- blocco valore corrente valore protetto --> 
3080				<script type="text/javascript"> 
3081 
3082					var divisaSimboloMap = { 
3083						'EUR': '&#8364;', 
3084						'USD': '$', 
3085						'':'', 
3086						'%':'%' 
3087					}; 
3088 
3089					jQuery(document).ready(function(){ 
3090						var listaValuta=jQuery(".titoloValuta"); 
3091						if (listaValuta!=null){ 
3092							for (var i=0;i<listaValuta.length;i++){ 
3093								if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){ 
3094									//                                 var index=listaValuta.get(i).outerHTML.indexOf(','); 
3095									//                                 var html = listaValuta.get(i).outerHTML.substring(0,index+1) + "<span class='decimali'>" + listaValuta.get(i).outerHTML.substring(index+1,index+3) + "</span>" + listaValuta.get(i).outerHTML.substring(index+3,listaValuta.get(i).outerHTML.length); 
3096									//                                 listaValuta.get(i).outerHTML = html; 
3097									var listaValuta_split = listaValuta.get(i).innerHTML.split(','); 
3098									var parteIntera = listaValuta_split[0]; 
3099									if(listaValuta_split[1].indexOf(" ")){ 
3100										var listaValuta1_split = listaValuta_split[1].split(" "); 
3101										var parteDecimale = listaValuta1_split[0]; 
3102										var parteValuta = listaValuta1_split[1]; 
3103									}else{ 
3104										var parteDecimale = listaValuta_split[1]; 
3105										var parteValuta = ""; 
3106
3107 
3108									var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
3109									console.log(parteValutaMap + "-" + parteValuta +" nicola" ); 
3110									console.log (parteIntera + " parteIntera"); 
3111									console.log (parteIntera + " parteIntera"); 
3112 
3113									var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
3114									listaValuta.get(i).innerHTML = html; 
3115								}else{ 
3116									console.log(listaValuta.get(i).innerHTML); 
3117									if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){ 
3118										var listaValuta_split = listaValuta.get(i).innerHTML.split(" "); 
3119										var parteIntera = listaValuta_split[0]; 
3120										var parteValuta = listaValuta_split[1]; 
3121										var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:""); 
3122										console.log(parteValutaMap + "-" + parteValuta ); 
3123										var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta); 
3124										listaValuta.get(i).innerHTML = html; 
3125
3126
3127
3128
3129					}); 
3130				</script> 
3131 
3132				<#if valoreFondoDue == "" > 
3133					<!-- blocco a singola colonna 3--> 
3134 
3135					<div class="bloccoValori" > 
3136						<h4 class="titoloValori">${Label_valore_corrente.getData()}</h4> 
3137						<div class="bloccoValuta"> 
3138							<h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3> 
3139							<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
3140						</div> 
3141					</div> 
3142 
3143				<#else> 
3144 
3145					<!-- blocco a doppia colonna --> 
3146					<div class="valoriDoppioWrapper"> 
3147						<div class="bloccoValori doppio first" > 
3148							<h4 class="titoloValori">${Label_valore_corrente.getData()}</h4> 
3149							<div class="bloccoValuta"> 
3150								<h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3> 
3151								<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
3152							</div> 
3153						</div> 
3154						<div class="bloccoValori doppio" > 
3155							<h4 class="titoloValori">${Label_valore_protetto.getData()} 
3156								<#if valore_1_min_garantito.getData()!=""> 
3157
3158								</#if> 
3159							</h4> 
3160							<div class="bloccoValuta"> 
3161								<h3 class="titoloValuta">${valoreFondoDue} ${valutaFondoDue}</h3> 
3162								<h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6> 
3163							</div> 
3164						</div> 
3165					</div> 
3166					<#if validator.isNotNull(valore_1_min_garantito.getData())> 
3167						<div class="caption"> 
3168							*&nbsp;${valore_1_min_garantito.getData()} 
3169						</div> 
3170					</#if> 
3171				</#if> 
3172 
3173				<div class="reset"> 
3174					<#if isOICR && validator.isNotNull(Societa_di_gestione.getData())> 
3175						<#assign labelSocietaGestione = "Societ&agrave; di gestione"> 
3176						<#if validator.isNotNull(Label_societa_di_gestione.getData())> 
3177							<#assign labelSocietaGestione = Label_societa_di_gestione.getData()> 
3178						</#if> 
3179						<div class="gestione"> 
3180							<h6 class="">${labelSocietaGestione}: <strong>&nbsp;${Societa_di_gestione.getData()}</strong></h6> 
3181						</div> 
3182					</#if> 
3183 
3184					<#if Istituto_emittente.getData() != ""> 
3185						<h5 class="titolo">${Label_obbligazione_strutturata.getData()}</h5> 
3186						<div class="istituto"> 
3187							<h6 class="">${Label_istituto_emittente.getData()}: <strong>${Istituto_emittente.getData()}</strong></h6> 
3188							<h6 class="">${Label_rating.getData()}: <strong>${Rating.getData()}</strong></h6> 
3189						</div> 
3190					</#if> 
3191 
3192					<#assign Data_scadenza_to_show = ''> 
3193					<#if validator.isNotNull(Data_scadenza.getData())> 
3194						<#assign Data_scadenza_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(Data_scadenza.getData()), localeIT)> 
3195						<!-- 01/01/2100 --> 
3196						<#if dateUtil.compareTo(Data_scadenza_DateObj, dateUtil.newDate(4102441200000)) lt 0 > 
3197							<#assign Data_scadenza_to_show = 'Scadenza ' + dateUtil.getDate(Data_scadenza_DateObj, "dd/MM/yyyy", localeIT)> 
3198						</#if> 
3199					</#if> 
3200 
3201					<#if validator.isNotNull(Data_scadenza_to_show)> 
3202						<h6 class="scadenza nomobile"><strong>${Data_scadenza_to_show}</strong></h6> 
3203					</#if> 
3204				</div> 
3205 
3206				<!-- Da agganciare nel momento in cui caricano i contenuti derivati --> 
3207				<div class="reset"> 
3208					<#if Istituto_emittente_derivata?? && Istituto_emittente_derivata.getData() != ""> 
3209						<h5 class="titolo">${Label_obbligazione_derivata.getData()}</h5> 
3210						<div class="istituto derivata"> 
3211							<h6 class="">${Label_istituto_emittente_derivata.getData()}:<strong>${Istituto_emittente_derivata.getData()}</strong></h6> 
3212							<h6 class="">${Label_rating_derivata.getData()}:<strong>${Rating_derivata.getData()}</strong></h6> 
3213						</div> 
3214					</#if> 
3215 
3216					<#if validator.isNotNull(Data_scadenza_to_show)> 
3217						<h6 class="scadenza onlymobile"><strong>$Data_scadenza_to_show</strong></h6> 
3218					</#if> 
3219 
3220				</div> 
3221 
3222			</div> 
3223 
3224			<!-- FINE PRIMO BLOCCO --> 
3225 
3226 
3227			<!-- SECONDO BLOCCO (GRAFICO STORICO) --> 
3228 
3229			<#assign _listaRendimenti = []> 
3230			<#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))> 
3231				<div class="boxesDettaglio storicGraph"> 
3232					<#assign _datiStorico = confTool.getDatiStorico(id_fondo.getData())> 
3233					<#assign _listaRendimenti = _datiStorico.getValoriRendimenti()> 
3234 
3235					<div class="reset"> 
3236						<h5 class="titolo"> 
3237							Andamento performance 
3238							<small class="">Dati aggiornati al ${confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)}</small> 
3239						</h5> 
3240 
3241						<#if _listaRendimenti?size gt 0> 
3242							<div class="graficoRendimento" > 
3243								<div id="chartdiv"></div> 
3244							</div> 
3245							<div class="datePickers input-text-custom-datepicker-container reset"> 
3246 
3247								<div class="inizio"> 
3248									<div class="input-text-wrapper"> 
3249										<label for="datepickerDa" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
3250											<span class="truncate-text">Data di inizio</span> 
3251										</label> 
3252 
3253										<input type="text" class="is-hoverable datePicker" id="datepickerDa" value="${_datiStorico.getDataInizialeString()}" aria-label="Seleziona data inizio andamento"/> 
3254 
3255										<small id="customHelpTextIdDatepickerDa" class="form-text text-muted custom-help-text"></small> 
3256 
3257										<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
3258 
3259									</div> 
3260								</div> 
3261 
3262								<div class="fine"> 
3263									<div class="input-text-wrapper"> 
3264										<label for="datepickerA" data-toggle="tooltip" data-tooltip-custom="isv-tooltip" title="" class="custom-label"> 
3265											<span class="truncate-text">Data di fine</span> 
3266										</label> 
3267 
3268										<input type="text" class="is-hoverable datePicker" id="datepickerA" value="${_datiStorico.getDataFinaleString()}" aria-label="Seleziona data fine andamento"/> 
3269 
3270										<small id="customHelpTextIdDatepickerA" class="form-text text-muted custom-help-text"></small> 
3271 
3272										<div class="calendar-button" aria-label="Apri calendario per selezionare una data"></div> 
3273									</div> 
3274								</div> 
3275 
3276							</div> 
3277							<p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p> 
3278							<p class="reset" style="font-style:italic"> 
3279								Attenzione: i valori passati non sono indicativi di quelli futuri. 
3280							</p> 
3281						</#if> 
3282					</div> 
3283				</div> 
3284			</#if> 
3285 
3286			<!-- FINE SECONDO BLOCCO --> 
3287 
3288			<!-- BLOCCO PROSPETTO --> 
3289			<#if !( 
3290			!Colonna_prospetto.getSiblings()?has_content || 
3291			(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
3292			(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
3293			(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
3294			)))> 
3295 
3296				<div class="boxesDettaglio togliMargin"> 
3297					<div class="reset"> 
3298 
3299						<h5 class="titolo prospetto">${label_prospetto.getData()}</h5> 
3300						<p class="">${descrizione_prospetto.getData()}</p> 
3301 
3302					</div> 
3303 
3304					<#if Colonna_prospetto.getSiblings()?has_content> 
3305						<div class="table"> 
3306 
3307						<div class="row theader"> 
3308							<div class="cell"> 
3309								<!-- prima colonnavuota --> 
3310							</div> 
3311							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
3312								<div class="cell"> 
3313									${cur_Colonna_prospetto.getData()} 
3314								</div> 
3315							</#list> 
3316						</div> 
3317 
3318						<#if Tipo_generazione_righe_prospetto.getData()=="dinamico"> 
3319 
3320							<#if Nome_Riga_Prospetto.getSiblings()?has_content> 
3321								<#assign contatore_righe = 0> 
3322 
3323								<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto> 
3324									<div class="row"> 
3325										<div class="cell"> 
3326											<div class="">${cur_Nome_Riga_Prospetto.getData()}</div> 
3327										</div> 
3328 
3329										<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
3330											<div class="cell"> 
3331												<#assign contatore_allegati = 0> 
3332												<#assign allegatoUrl = ''> 
3333 
3334												<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
3335 
3336													<#if contatore_allegati == contatore_righe> 
3337														<#assign allegatoUrl = allegato.getData()> 
3338													</#if> 
3339													<#assign contatore_allegati = contatore_allegati + 1> 
3340												</#list> 
3341 
3342												<#assign dlFileVersion = ''> 
3343												<#if validator.isNotNull(allegatoUrl)> 
3344													<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3345												</#if> 
3346												<#if validator.isNotNull(dlFileVersion)> 
3347													<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3348												<#else> 
3349													<div>&mdash;</div> 
3350												</#if> 
3351											</div> 
3352										</#list> 
3353									</div> 
3354 
3355									<#assign contatore_righe = contatore_righe + 1> 
3356								</#list> 
3357 
3358								</div> 
3359 
3360							</#if> 
3361						</#if> 
3362					</#if> 
3363 
3364 
3365					<#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali"> 
3366						<div class="row"> 
3367							<div class="cell"> 
3368								<div class="">Composizione al 31/03</div> 
3369							</div> 
3370 
3371							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1> 
3372								<div class="cell"> 
3373									<#assign contatore_allegati = 0> 
3374									<#assign allegatoUrl = ''> 
3375									<#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato> 
3376										<#if contatore_allegati == 0> 
3377											<#assign allegatoUrl = allegato.getData()> 
3378										</#if> 
3379										<#assign contatore_allegati = contatore_allegati + 1> 
3380									</#list> 
3381 
3382									<#assign dlFileVersion = ''> 
3383									<#if validator.isNotNull(allegatoUrl)> 
3384										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3385									</#if> 
3386									<#if validator.isNotNull(dlFileVersion)> 
3387										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3388									<#else> 
3389										<div>&mdash;</div> 
3390									</#if> 
3391								</div> 
3392							</#list> 
3393						</div> 
3394 
3395						<div class="row"> 
3396							<div class="cell"> 
3397								<div class="">Composizione al 30/06</div> 
3398							</div> 
3399 
3400							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2> 
3401								<div class="cell"> 
3402									<#assign contatore_allegati = 0> 
3403									<#assign allegatoUrl = ''> 
3404									<#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato> 
3405										<#if contatore_allegati == 1> 
3406											<#assign allegatoUrl = allegato.getData()> 
3407										</#if> 
3408										<#assign contatore_allegati = contatore_allegati + 1> 
3409									</#list> 
3410 
3411									<#assign dlFileVersion = ''> 
3412									<#if validator.isNotNull(allegatoUrl)> 
3413										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3414									</#if> 
3415									<#if validator.isNotNull(dlFileVersion)> 
3416										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3417									<#else> 
3418										<div>&mdash;</div> 
3419									</#if> 
3420								</div> 
3421							</#list> 
3422						</div> 
3423 
3424						<div class="row"> 
3425							<div class="cell"> 
3426								<div class="">Composizione al 30/09</div> 
3427							</div> 
3428 
3429							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3> 
3430								<div class="cell"> 
3431									<#assign contatore_allegati = 0> 
3432									<#assign allegatoUrl = ''> 
3433									<#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato> 
3434										<#if contatore_allegati == 2> 
3435											<#assign allegatoUrl = allegato.getData()> 
3436										</#if> 
3437										<#assign contatore_allegati = contatore_allegati + 1> 
3438									</#list> 
3439 
3440									<#assign dlFileVersion = ''> 
3441									<#if validator.isNotNull(allegatoUrl)> 
3442										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3443									</#if> 
3444									<#if validator.isNotNull(dlFileVersion)> 
3445										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3446									<#else> 
3447										<div>&mdash;</div> 
3448									</#if> 
3449								</div> 
3450							</#list> 
3451						</div> 
3452 
3453						<div class="row"> 
3454							<div class="cell"> 
3455								<div class="">Composizione al 31/12</div> 
3456							</div> 
3457 
3458							<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4> 
3459								<div class="cell"> 
3460									<#assign contatore_allegati = 0> 
3461									<#assign allegatoUrl = ''> 
3462									<#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato> 
3463										<#if contatore_allegati == 3> 
3464											<#assign allegatoUrl = allegato.getData()> 
3465										</#if> 
3466										<#assign contatore_allegati = contatore_allegati + 1> 
3467									</#list> 
3468 
3469									<#assign dlFileVersion = ''> 
3470									<#if validator.isNotNull(allegatoUrl)> 
3471										<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3472									</#if> 
3473									<#if validator.isNotNull(dlFileVersion)> 
3474										<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3475									<#else> 
3476										<div>&mdash;</div> 
3477									</#if> 
3478								</div> 
3479							</#list> 
3480						</div> 
3481					</#if> 
3482				</div> 
3483			</#if> 
3484 
3485			<!-- INIZIO BLOCCO SMARTPHONE PROSPETTO --> 
3486			<#if !( 
3487			!Colonna_prospetto.getSiblings()?has_content || 
3488			(Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' && 
3489			(!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content || 
3490			(Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='') 
3491			)))> 
3492				<div class="table_smart secondaTab prospetto" style="display:none"> 
3493					<table> 
3494						<tbody> 
3495 
3496						<#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData()> <!-- in realta per gli smart le righe sono colonne --> 
3497						<#if tipo_colonne_prospetto == "dinamico"> 
3498 
3499							<tr class="intestazione_smart"> 
3500								<td colspan="1">Anno</td> 
3501								<#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto> 
3502									<td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td> 
3503								</#list> 
3504							</tr> 
3505 
3506							<#if Colonna_prospetto.getSiblings()?has_content> 
3507								<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
3508									<#assign velocityCount = cur_Colonna_prospetto?index/> 
3509									<#if velocityCount % 2 == 0> 
3510										<tr class="pari"> 
3511									<#elseif velocityCount % 2 == 1> 
3512										<tr class="dispari"> 
3513									</#if> 
3514 
3515									<td>${cur_Colonna_prospetto.getData()}</td> 
3516									<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
3517										<#assign allegatoUrl = ''> 
3518										<td> 
3519											<#assign allegatoUrl = allegato.getData()> 
3520											<#assign dlFileVersion = ''> 
3521											<#if validator.isNotNull(allegatoUrl)> 
3522												<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3523											</#if> 
3524											<#if validator.isNotNull(dlFileVersion)> 
3525												<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3526											<#else> 
3527												<div>&mdash;</div> 
3528											</#if> 
3529										</td> 
3530									</#list> 
3531									</tr> 
3532								</#list> 
3533							</#if> 
3534 
3535						<#elseif tipo_colonne_prospetto == "quadrimestrali"> 
3536 
3537							<tr class="intestazione_smart"> 
3538								<td colspan="1">Anno</td> 
3539								<td colspan="1">31Mar</td> 
3540								<td colspan="1">30Giu</td> 
3541								<td colspan="1">30Set</td> 
3542								<td colspan="1">31Dic</td> 
3543							</tr> 
3544 
3545							<#if Colonna_prospetto.getSiblings()?has_content> 
3546 
3547								<#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto> 
3548									<#assign velocityCount = cur_Colonna_prospetto?index/> 
3549									<#if velocityCount % 2 == 0> 
3550										<tr class="pari"> 
3551									<#elseif velocityCount % 2 == 1> 
3552										<tr class="dispari"> 
3553									</#if> 
3554 
3555									<td>${cur_Colonna_prospetto.getData()}</td> 
3556 
3557									<#assign contatore_allegati = 0> 
3558									<#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato> 
3559										<#assign allegatoUrl = ''> 
3560										<td> 
3561											<#assign allegatoUrl = allegato.getData()> 
3562											<#assign dlFileVersion = ''> 
3563											<#if validator.isNotNull(allegatoUrl)> 
3564												<#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)> 
3565											</#if> 
3566											<#if validator.isNotNull(dlFileVersion)> 
3567												<a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3568											<#else> 
3569												<div>&mdash;</div> 
3570											</#if> 
3571										</td> 
3572									</#list> 
3573									</tr> 
3574								</#list> 
3575							</#if> 
3576						</#if> 
3577						</tbody> 
3578					</table> 
3579				</div> 
3580			</#if> 
3581 
3582			<!-- FINE BLOCCO SMARTPHONE PROSPETTO --> 
3583 
3584			<!-- BLOCCO INDICI --> 
3585 
3586			<#if !( 
3587			(!Indici_titolo_alto?has_content || Indici_titolo_alto.getData()=='') && 
3588			(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='') && 
3589			(!Label_titolo_tabella_valore_iniziale_indici?has_content || Label_titolo_tabella_valore_iniziale_indici.getData()=='') && 
3590			(!Label_titolo_tabella_prestazioni_annuali?has_content || Label_titolo_tabella_prestazioni_annuali.getData()=='') && 
3591			(!Indici_titolo_basso?has_content || Indici_titolo_basso.getData()=='') && 
3592			(!titolo_box_tabella?has_content || titolo_box_tabella.getData()=='') 
3593			)> 
3594			<div class="boxesDettaglio togliMargin"> 
3595				<div class="reset"> 
3596					<h5 class="titolo">${Indici_titolo_alto.getData()}</h5> 
3597					<p class="">${Indici_descrizione_alta.getData()}</p> 
3598 
3599					<#if !(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='')> 
3600						<#assign fileEntryPath = Nome_allegato_valore_iniziale_titoli.Allegato_valore_iniziale_titoli.getData()> 
3601						<#assign dlFileVersion = ''> 
3602						<#if validator.isNotNull(fileEntryPath)> 
3603							<#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
3604						</#if> 
3605 
3606						<#if validator.isNotNull(dlFileVersion)> 
3607							<h6 class="titolo">${Label_titolo_valore_iniziale_titoli.getData()}</h6> 
3608							<div class="archivi"> 
3609								<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
3610									<h6> 
3611										<span class="icona icon-file"></span> 
3612										<div>${Nome_allegato_valore_iniziale_titoli.getData()}</div> 
3613									</h6> 
3614								</a> 
3615							</div> 
3616						</#if> 
3617					</#if> 
3618 
3619					<#if Label_titolo_tabella_valore_iniziale_indici.getData() != ""> 
3620					<h6 class="titolo indici">${Label_titolo_tabella_valore_iniziale_indici.getData()}</h6> 
3621				</div> 
3622				<div class="table"> 
3623 
3624					<#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content> 
3625 
3626						<#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1> 
3627							<div class="row"> 
3628								<div class="cell"> 
3629									${cur_Riga_valore_iniziale_indici_colonna_1.getData()} 
3630								</div> 
3631 
3632								<div class="cell"> 
3633									${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()} 
3634								</div> 
3635 
3636								<div class="cell"> 
3637									${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()} 
3638								</div> 
3639							</div> 
3640						</#list> 
3641 
3642					</#if> 
3643 
3644				</div> 
3645 
3646				<!-- INIZIO BLOCCO SMARTPHONE SECONDA TABELLA --> 
3647				<div class="table_smart secondaTab"> 
3648					<#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content> 
3649						<table> 
3650							<tbody> 
3651							<#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1> 
3652								<#assign velocityCount = cur_Riga_valore_iniziale_indici_colonna_1?index/> 
3653								<#if velocityCount!=1> 
3654									<tr class="intestazione_smart"> 
3655										<td colspan="2">${cur_Riga_valore_iniziale_indici_colonna_1.getData()}</td> 
3656									</tr> 
3657									<tr class="pari"> 
3658										<td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_data_emissione.getData()}</td> 
3659										<td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}</td> 
3660									</tr> 
3661									<tr class="dispari"> 
3662										<td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_colonna_3.getData()}</td> 
3663										<td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}</td> 
3664									</tr> 
3665								</#if> 
3666							</#list> 
3667							</tbody> 
3668						</table> 
3669					</#if> 
3670				</div> 
3671				<!-- FINE BLOCCO SMARTPHONE SECONDA TABELLA --> 
3672 
3673				<div class="reset tab"> 
3674					</#if> 
3675					<#if Label_titolo_tabella_prestazioni_annuali.getData() != ""> 
3676					<h6 class="titolo">${Label_titolo_tabella_prestazioni_annuali.getData()}</h6> 
3677					<#if Prestazione_annuale_data_label.getSiblings()?has_content> 
3678				</div> 
3679 
3680				<div class="table"> 
3681					<#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label> 
3682						<div class="row"> 
3683							<div class="cell"> 
3684								${cur_Prestazione_annuale_data_label.getData()} 
3685							</div> 
3686 
3687							<div class="cell"> 
3688								${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()} 
3689							</div> 
3690						</div> 
3691					</#list> 
3692 
3693				</div> 
3694 
3695				<!-- INZIO BLOCCO SMARTPHONE --> 
3696				<div class="table_smart terzaTab"> 
3697					<table> 
3698						<tbody> 
3699						<#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label> 
3700							<#assign velocityCount = cur_Prestazione_annuale_data_label?index/> 
3701							<#if velocityCount==1> 
3702								<tr class="intestazione_smart"> 
3703									<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
3704									<td class="presta_ann">${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
3705								</tr> 
3706							<#elseif velocityCount%2==0> 
3707								<tr class="pari"> 
3708									<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
3709									<td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
3710								</tr> 
3711							<#elseif velocityCount%2==1> 
3712								<tr class="dispari"> 
3713									<td>${cur_Prestazione_annuale_data_label.getData()}</td> 
3714									<td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td> 
3715								</tr> 
3716							</#if> 
3717						</#list> 
3718						</tbody> 
3719					</table> 
3720				</div> 
3721 
3722				<!-- FINE BLOCCO SMARTPHONE --> 
3723				</#if> 
3724				</#if> 
3725 
3726				<!-- INIZIO BLOCCO TABELLA NxM --> 
3727				<#list titolo_box_tabella.getSiblings() as cur_titolo_box_tabella> 
3728				<div class="reset"> 
3729					<#assign tipoTabella = cur_titolo_box_tabella.tipo_tabella.getData()> 
3730					<#assign descrizioneTabella = $cur_titolo_box_tabella.descrizione_tabella.getData()> 
3731					<#if descrizioneTabella!=''> 
3732						<h5 class="titolo prospetto"> 
3733							${cur_titolo_box_tabella.getData()} 
3734						</h5> 
3735						<p class="">${descrizioneTabella}</p> 
3736					<#else> 
3737						<h6 class="titolo"> 
3738							${cur_titolo_box_tabella.getData()} 
3739						</h6> 
3740					</#if> 
3741				</div> 
3742 
3743				<!-- controllo che la prima riga sia valorizzata altrimenti non la stampo --> 
3744				<#assign contTheaderVisible = 0> 
3745				<#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella> 
3746					<#if cur_th_tabella.getData()?has_content> 
3747						<#assign contTheaderVisible = contTheaderVisible + 1> 
3748						<#break> 
3749					</#if> 
3750				</#list> 
3751 
3752				<#assign contRowVisible = 0> 
3753				<#if cur_titolo_box_tabella.tr_tabella?has_content> 
3754					<#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella> 
3755						<#if cur_tr_tabella.getData()?has_content> 
3756							<#assign contRowVisible = contRowVisible + 1> 
3757							<#break> 
3758						<#else> 
3759							<#if cur_tr_tabella.td_tabella?has_content> 
3760								<#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella> 
3761									<!-- se di tipo testo stampo il campo td_tabella --> 
3762									<#if tipoTabella?lower_case == 'testo'> 
3763										<#if cur_td_tabella.getData()?has_content> 
3764											<#assign contRowVisible = contRowVisible + 1> 
3765											<#break> 
3766										</#if> 
3767									</#if> 
3768									<!-- se di tipo documento stampo il campo td_allegato_url --> 
3769									<#if tipoTabella?lower_case == 'documento'> 
3770										<#if cur_td_tabella.td_allegato_url.getData() && cur_td_tabella.td_allegato_url.getData() != ''> 
3771											<#assign contRowVisible = contRowVisible + 1> 
3772											<#break> 
3773										</#if> 
3774									</#if> 
3775								</#list> 
3776							</#if> 
3777						</#if> 
3778					</#list> 
3779				</#if> 
3780 
3781				<#if (contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content) || contRowVisible gt 0> 
3782				<div class="table"> 
3783 
3784					<#if contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content> 
3785					<div class="row theader"> 
3786						<#else> 
3787						<div class="row theader" style="display:none;"> 
3788							</#if> 
3789 
3790							<div class="cell"> 
3791								${cur_titolo_box_tabella.intestazione_tabella.getData()} 
3792							</div> 
3793 
3794							<#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella> 
3795								<div class="cell"> 
3796									${cur_th_tabella.getData()} 
3797								</div> 
3798							</#list> 
3799 
3800						</div> 
3801						<#if cur_titolo_box_tabella.tr_tabella.isEmpty()?has_content> 
3802						<#assign rowCount = 0> 
3803						<#assign velocityCount = 0> 
3804						<#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella> 
3805						<#assign velocityCount = cur_tr_tabella?index/> 
3806						<#assign rowCount = velocityCount> 
3807						<div class="row"> 
3808							<#if rowCount==1> 
3809							<div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;"> 
3810								<#else> 
3811								<div class="cell"> 
3812									</#if> 
3813 
3814									<div class="">${cur_tr_tabella.getData()}</div> 
3815								</div> 
3816 
3817								<#if cur_tr_tabella.td_tabella.isEmpty()?has_content> 
3818								<#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella> 
3819								<#if rowCount==1> 
3820								<div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;"> 
3821									<#else> 
3822									<div class="cell"> 
3823										</#if> 
3824 
3825										<!-- se di tipo testo stampo il campo td_tabella --> 
3826										<#if tipoTabella?lower_case == 'testo'> 
3827											${cur_td_tabella.getData()} 
3828										</#if> 
3829 
3830										<!-- se di tipo documento stampo il campo td_allegato_url --> 
3831										<#if tipoTabella?lower_case == 'documento'> 
3832											<#assign fileEntryPath = cur_td_tabella.td_allegato_url.getData()> 
3833 
3834											<#assign dlFileVersion = ''> 
3835											<#if validator.isNotNull(fileEntryPath)> 
3836												<#assign dlFileVersion =$confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
3837											</#if> 
3838											<#if validator.isNotNull(dlFileVersion)> 
3839												<a class="icona icon-file" href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"></a> 
3840											<#else> 
3841												<div>&mdash;</div> 
3842											</#if> 
3843										</#if> 
3844									</div> 
3845									</#list> 
3846									</#if> 
3847								</div> 
3848								<!-- end if in piu --> 
3849								</#list> 
3850							</div> 
3851							</#if> 
3852							</#if> 
3853							</#list> 
3854							<!-- FINE BLOCCO TABELLA NxM --> 
3855 
3856 
3857							<div class="reset"> 
3858								<h5 class="titolo">${Indici_titolo_basso.getData()}</h5> 
3859 
3860								<p class="">${Indici_descrizione_bassa.getData()}</p> 
3861							</div> 
3862 
3863						</div> 
3864					</div> <!-- boxesDettaglio togliMargin --> 
3865 
3866					</#if> 
3867					<!-- FINE BLOCCO INDICI --> 
3868 
3869					<!-- BLOCCO (DOWNLOADS BOXES) --> 
3870 
3871					<#if !(Download_box_label?? && Download_box_label.getData()?has_content && (!Download_box_label.getSiblings()?has_content || 
3872					(Download_box_label.getSiblings()?size==1 && 
3873					(!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') && 
3874					(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content || 
3875					(Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 && 
3876					(!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='') 
3877					)))))> 
3878 
3879						<#list Download_box_label.getSiblings() as cur_Download_box_label> 
3880							<div class="boxesDettaglio togliMargin"> 
3881								<div class="reset download"> 
3882									<#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())> 
3883										<#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size> 
3884										<h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5> 
3885									<#else> 
3886										<h5 class="titolo download">${cur_Download_box_label.getData()}</h5> 
3887									</#if> 
3888									<#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content> 
3889										<div class="archivi"> 
3890											<#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box> 
3891 
3892											<#assign fileEntryPath = cur_Download_box.Allegato_url.getData()> 
3893 
3894											<#assign dlFileVersion = ''> 
3895											<#if validator.isNotNull(fileEntryPath)> 
3896												<#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)> 
3897											</#if> 
3898											<#if validator.isNotNull(dlFileVersion)> 
3899											<#if cur_Download_box.tipo_allegato.getData()=="excel"> 
3900											<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
3901												<h6> 
3902													<span class="icona icon-copy"></span> 
3903													<#else> 
3904													<a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"> 
3905														<h6> 
3906															<span class="icona icon-file"></span> 
3907															</#if> 
3908															<div>${cur_Download_box.getData()}</div> 
3909														</h6> 
3910													</a> 
3911													</#if> 
3912													</#list> 
3913										</div> 
3914									</#if> 
3915								</div> 
3916							</div> 
3917						</#list> 
3918					</#if> 
3919 
3920					<!-- FINE BLOCCO (DOWNLOADS BOXES) --> 
3921 
3922					<!-- BLOCCO DISCLAIMER --> 
3923					<footer> 
3924						<p class="caption disclaimer">${disclaimer.getData()}</p> 
3925					</footer> 
3926					<!-- FINE BLOCCO DISCLAIMER --> 
3927 
3928					<#-- 		LINK AL TOP	--> 
3929					<#--        <a href="#Top" class="back-to-top" title="Torna a inizio pagina">	--> 
3930					<#--            TORNA A INIZIO PAGINA <span class="icona icon-angle-up"></span>	--> 
3931					<#--      </a>	--> 
3932					<#-- 		FINE LINK AL TOP	--> 
3933 
3934					<script type="text/javascript"> 
3935 
3936 
3937 
3938						jQuery(document).ready(function(){ 
3939 
3940							/* Nasconde, se presente lo span che contiene la pagina di dettaglio */ 
3941							if(jQuery(".breadcrumbs .elementi span:not(.link-name)").length) { 
3942								jQuery(".breadcrumbs .elementi span:not(.link-name)").hide(); 
3943
3944 
3945							if(jQuery("html").is(".smartphone")) 
3946
3947								convertTableToDivs(); 
3948								swipeProspetto(); 
3949								jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>"); 
3950								jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>"); 
3951								jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items"); 
3952 
3953								jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>"); 
3954 
3955								var bullet=jQuery('<span class="carousel-menu-index">&bull;</span>'); 
3956 
3957								/* creo l'elenco delle slide */ 
3958								jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){ 
3959									bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu"); 
3960								}); 
3961 
3962								var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu'); 
3963 
3964								car.play(); 
3965
3966						}); 
3967 
3968						function updateAndamentoLabel(){ 
3969							jQuery("#andamentoDa").html(jQuery("#datepickerDa").val()); 
3970							jQuery("#andamentoA").html(jQuery("#datepickerA").val()); 
3971
3972 
3973						function applyGradientOnPlot(){ 
3974							var canvasSeries = jQuery(".jqplot-series-canvas")[0]; 
3975							var ctx = canvasSeries.getContext("2d"); 
3976							var my_gradient=ctx.createLinearGradient(0,0,0,300); 
3977							my_gradient.addColorStop(0, "rgba(251,168,129,0.6)"); 
3978							my_gradient.addColorStop(1, "rgba(251,168,129,0.1)"); 
3979							ctx.fillStyle = my_gradient; 
3980							ctx.fill(); 
3981
3982 
3983						function updateDatePickers(){ 
3984							//Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding. 
3985							//jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
3986 
3987							var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text(); 
3988 
3989							if(dataInizialeDefault.length>0){ 
3990								var dataNuova = new Date (dataInizialeDefault); 
3991 
3992								jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault)); 
3993							}else{ 
3994								jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
3995
3996 
3997 
3998							jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
3999							jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
4000							jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
4001							jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min)); 
4002							jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max)); 
4003
4004 
4005						function aggiornaPerformance(dataIniziale, dataFinale){ 
4006							var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale); 
4007 
4008							var valoreIniziale = dati[0][1]; 
4009							var valoreFinale = dati[dati.length - 1][1]; 
4010 
4011							var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100; 
4012							if(!isNumber(performance)){ 
4013								performance = 0; 
4014
4015							var performance_rounded = +performance.toFixed(2); 
4016 
4017							var performance_split = []; 
4018							if(performance_rounded.toString().indexOf(".")>0){ 
4019								performance_split = performance_rounded.toString().split("."); 
4020							}else{ 
4021								performance_split[0] = performance_rounded; 
4022								performance_split[1] = 0; 
4023
4024							jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %"); 
4025
4026 
4027						function postDrawProcessing(){ 
4028							console.log("postDrawHooks!"); 
4029							applyGradientOnPlot(); 
4030 
4031							var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min); 
4032							var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max); 
4033 
4034							aggiornaPerformance(dataIniziale, dataFinale); 
4035 
4036							var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale) 
4037							var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale); 
4038 
4039							//aggiorno solo se diverso per evitare di far scattare onchange 
4040							if (dataInizialeStr!=jQuery("#datepickerDa").val()) { 
4041								console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr); 
4042								jQuery("#datepickerDa").datepicker("setDate", dataIniziale); 
4043
4044							if (dataFinaleStr!=jQuery("#datepickerA").val()) { 
4045								console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr); 
4046								jQuery("#datepickerA").datepicker("setDate", dataFinale); 
4047
4048 
4049							updateAndamentoLabel(); 
4050
4051 
4052						function isNumber(n) { 
4053							return !isNaN(parseFloat(n)) && isFinite(n); 
4054
4055 
4056						jQuery(document).ready(function() { 
4057 
4058							jQuery.jsDate.regional['it-IT'] = { 
4059								monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], 
4060								monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'], 
4061								dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'], 
4062								dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], 
4063								formatString: '%d-%m-%Y %H:%M:%S' 
4064							}; 
4065							jQuery.jsDate.regional.getLocale(); 
4066 
4067							//Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione. 
4068							//window.gestioneGrafico garantisce che è una variabile globale! -RC 
4069							window.gestioneGrafico = { 
4070 
4071								//Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC 
4072								pad: 1.1, 
4073 
4074								tuttiIdatiDelGrafico : function() { 
4075 
4076									var tuttiIDati =[]; 
4077 
4078									<#list _listaRendimenti as storicoBean> 
4079									tuttiIDati.push([this.getADate('${storicoBean.getDataAggiornamentoStr()}'),'${storicoBean.getValoreFondoUno()}']); 
4080									</#list> 
4081 
4082									//ritorno una copia dell'array che contiene tutti i dati 
4083									return tuttiIDati.slice(); 
4084								}, 
4085 
4086								getADate: function (dataStr) 
4087
4088									//console.log("getADate dataStr" + dataStr); 
4089									if (dataStr == null) 
4090										return; 
4091									var partiData = dataStr.split("/"); 
4092									var day = partiData[0]; 
4093									var month = partiData[1] - 1; 
4094									var year = partiData[2]; 
4095									//console.log("year " + year + " month" + month + " day " + day) 
4096									var aDate = new Date(year, month, day, 0, 0, 0, 0); 
4097									return aDate; 
4098								}, 
4099 
4100								datiTraLeDate : function (dataDa, dataA){ 
4101									//console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA); 
4102 
4103									var tuttiIdati = this.tuttiIdatiDelGrafico(); 
4104									//cerco l'elemento minimo superiore a dataDa 
4105									//cerco l'elemnto massimo inferiore a dataA 
4106									//l'array di dati originali è gia ordinato per data 
4107									var indiceDellaDataMinore = -1; 
4108									var indiceDellaDataMaggiore = -1; 
4109									var currDate; 
4110									//cerco la prima data subito superiore a dataDa 
4111									for (var i=0; i< tuttiIdati.length; i++) { 
4112										currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
4113										if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) { 
4114											indiceDellaDataMinore = i; 
4115											break; 
4116
4117
4118									//cerco la prima data subito inveriore  a dataA 
4119									for (var i=tuttiIdati.length -1; i>=0; i--) { 
4120										currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0); 
4121										if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) { 
4122											indiceDellaDataMaggiore = i; 
4123											break; 
4124
4125
4126									//a questo punto ho gli indici delle date minore e maggiore, taglio l'array 
4127									var nDiElementi  = indiceDellaDataMaggiore - indiceDellaDataMinore + 1; 
4128									console.log("nDiElementi" + nDiElementi); 
4129									var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi); 
4130									//se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]] 
4131									if (nuovoRange.length == 0){ 
4132										console.log("ritorno un range vuoto"); 
4133										nuovoRange = [["{$_datiStorico.getDataInizialeString()}"][0],["{$_datiStorico.getDataFinaleString()}"][0]]; 
4134
4135									//se il ragendati ha un solo valore ritorno due valori per far si che il valore sia visibile sul grafico 
4136									//                if (nuovoRange.length == 1){ 
4137									//                    console.log("ritorno un range 1"); 
4138									//                    nuovoRange.push(nuovoRange[0]); 
4139									//                } 
4140									console.log("nuovo range" + nuovoRange); 
4141									return nuovoRange; 
4142								}, 
4143								getAxisBounds: function(dati, pad, dataDa, dataA){ 
4144									var _pad = (pad==null||typeof pad == 'undefined')?0:pad; 
4145									var _dataDa = typeof dataDa == 'undefined'?null:dataDa; 
4146									var _dataA = typeof dataA == 'undefined'?null:dataA; 
4147 
4148									var minXVal = null; 
4149									var maxXVal = null; 
4150									//Vogliamo che Y parta da 0 o dal minimo valore minore di 0 
4151									var minYVal = null; 
4152									var maxYVal = null; 
4153 
4154									for(var i=0; i<dati.length; i++){ 
4155										var valY = parseFloat(dati[i][1]); 
4156										if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){ 
4157											minXVal = dati[i][0]; 
4158
4159										if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){ 
4160											maxXVal = dati[i][0]; 
4161
4162										if(minYVal==null||valY<minYVal){ 
4163											minYVal = valY; 
4164
4165										if(maxYVal==null||valY>maxYVal){ 
4166											maxYVal = valY; 
4167
4168
4169 
4170									if(dataDa!=null){ 
4171										minXVal = dataDa; 
4172
4173									if(dataA!=null){ 
4174										maxXVal = dataA; 
4175
4176 
4177									var padX = 0; 
4178									var padY = 0; 
4179									if(dati.length>1){ 
4180										padX = ((maxXVal - minXVal)*(pad-1))/2; 
4181										//             padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2; 
4182										padY = ((maxYVal - minYVal)*(pad-1))/2; 
4183									}else{ 
4184										padX = 86401000; 
4185										padY = maxYVal*(pad-1); 
4186
4187 
4188									if(padY<0){ 
4189										padY=-padY; 
4190									}else if(padY==0){ 
4191										padY=2; 
4192
4193 
4194									var bounds = { 
4195										minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX), 
4196										maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX), 
4197										//             minY: minYVal>0?0:minYVal-padY, 
4198										minY: minYVal-padY, 
4199										maxY: maxYVal+padY 
4200
4201 
4202									return bounds; 
4203								}, 
4204								zoomHandler: function() { 
4205									var c = this.plugins.cursor; 
4206									console.log(c); 
4207								}, 
4208 
4209								plotter: null, 
4210 
4211								visualizzaGrafico : function (dati, dataDa, dataA){ 
4212									var singlePoint = dati.length==1; 
4213									var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA); 
4214									var logaritmica = logaritmica; 
4215									console.log("Axis Bounds: " + bounds); 
4216									if(this.plotter != null) 
4217										this.plotter.destroy(); 
4218									if(singlePoint){ 
4219										dati.push(dati[0]); 
4220
4221									this.plotter = jQuery.jqplot('chartdiv',  [dati], 
4222
4223												title:{ 
4224													text: '', 
4225													show: false 
4226												}, 
4227												axesDefaults: { 
4228													//                             numberTicks: 5 
4229													// a factor multiplied by the data range on the axis to give the 
4230													// axis range so that data points don't fall on the edges of the axis. 
4231												}, 
4232												cursor:{ 
4233													show: true, 
4234													showTooltip: false, 
4235													zoom: true, 
4236													constrainZoomTo: 'x' 
4237												}, 
4238												seriesDefaults: { 
4239 
4240													color: '#fba881',      // CSS color spec to use for the line.  Determined automatically. 
4241													showMarker: singlePoint,   // render the data point markers or not. 
4242													fill: true,        // fill under the line, 
4243													fillAndStroke: singlePoint,       // *stroke a line at top of fill area. 
4244													fillColor: '#fba881', 
4245													fillAlpha: 0.001,      // *custom alpha to apply to fillColor. 
4246													shadow: false   // show shadow or not. 
4247 
4248												}, 
4249												axes:{ 
4250													xaxis:  { 
4251														renderer:jQuery.jqplot.DateAxisRenderer, 
4252														min: bounds.minX, 
4253														max: bounds.maxX, 
4254														tickOptions: {formatString: '%d/%m/%Y'} 
4255													}, 
4256													yaxis: { 
4257														renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer, 
4258														min: bounds.minY, 
4259														max: bounds.maxY, 
4260														tickOptions: {formatString: '%#.3f' +  (divisaSimboloMap['${valutaFondoUno}']!=null?" " + divisaSimboloMap['${valutaFondoUno}']:" " + '${valutaFondoUno}') } 
4261
4262												}, 
4263												series:[{ 
4264													lineWidth:2, 
4265													markerOptions: 
4266
4267																style:'circle' 
4268
4269												}], 
4270												highlighter: { 
4271													show: true, 
4272													sizeAdjust: 7.5 
4273												}, 
4274												grid: { 
4275													drawGridLines: true,        // wether to draw lines across the grid or not. 
4276													gridLineColor: '#f0f1f6',    // *Color of the grid lines. 
4277													background: '#fff',      // CSS color spec for background color of grid. 
4278													borderColor: '#f0f1f6',     // CSS color spec for border around grid. 
4279													borderWidth: 1.0,           // pixel width of border around grid. 
4280													shadow: false,               // draw a shadow for grid. 
4281
4282 
4283											}); 
4284 
4285
4286
4287 
4288							<#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))> 
4289 
4290							<#if _listaRendimenti?size gt 0> 
4291 
4292							jQuery.jqplot.sprintf.thousandsSeparator = ''; 
4293							jQuery.jqplot.sprintf.decimalMark = ','; 
4294 
4295							var gestore = gestioneGrafico; 
4296							var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico(); 
4297							var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare, this.pad); 
4298 
4299							// inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti 
4300							jQuery("#datepickerDa").datepicker({ 
4301								// showOtherMonths: true, 
4302								// selectOtherMonths: true, 
4303								changeMonth : true, 
4304								changeYear : true, 
4305								dateFormat : "dd/mm/yy", 
4306								defaultDate : bounds.minX, 
4307								minDate : bounds.minX, 
4308								maxDate : bounds.maxX, 
4309								onSelect : function() { 
4310									jQuery("#datepickerA").datepicker('option', { 
4311										minDate : jQuery(this).datepicker('getDate') 
4312									}); 
4313									updateGraphDatesFromDatePickers(); 
4314									// jQuery(this).change(); 
4315									// jQuery(this).blur(); 
4316
4317								// defaultDate: gestore.getADate("$_datiStorico.getDataInizialeString()"), 
4318								// minDate : gestore.getADate("$_datiStorico.getDataInizialeString()"), 
4319								// maxDate : gestore.getADate("$_datiStorico.getDataFinaleString()") 
4320							}, jQuery.datepicker.regional['it']); 
4321							jQuery("#datepickerA").datepicker({ 
4322								changeMonth : true, 
4323								changeYear : true, 
4324								dateFormat : "dd/mm/yy", 
4325								defaultDate : bounds.maxX, 
4326								minDate : bounds.minX, 
4327								maxDate : bounds.maxX, 
4328								onSelect : function() { 
4329									jQuery("#datepickerDa").datepicker('option', { 
4330										maxDate : jQuery(this).datepicker('getDate') 
4331									}); 
4332									updateGraphDatesFromDatePickers(); 
4333									// jQuery(this).change(); 
4334									// jQuery(this).blur(); 
4335								}, 
4336								beforeShow : function(input, inst) { 
4337									inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'}); 
4338 
4339
4340								// defaultDate: gestore.getADate("$_datiStorico.getDataInizialeString()"), 
4341								// minDate : gestore.getADate("$_datiStorico.getDataInizialeString()"), 
4342								// maxDate : gestore.getADate("$_datiStorico.getDataFinaleString()") 
4343							}, jQuery.datepicker.regional['it']); 
4344 
4345							function updateGraphDatesFromDatePickers() { 
4346								var dataDaStr = jQuery("#datepickerDa").val(); 
4347								var dataAStr = jQuery("#datepickerA").val(); 
4348								console.log("date cambiate: da " + dataDaStr + " a " + dataAStr); 
4349								// Se date nulle usa gli estremi 
4350								if (dataDaStr == '') 
4351
4352									dataDaStr = gestore.getADate("${_datiStorico.getDataInizialeString()}"); 
4353									jQuery("#datepickerDa").val(dataDaStr); 
4354
4355								if (dataAStr == '') 
4356
4357									dataAStr = gestore.getADate("${_datiStorico.getDataFinaleString()}"); 
4358									jQuery("#datepickerA").val(dataAStr); 
4359
4360								var dataDa = gestore.getADate(dataDaStr); 
4361								var dataA = gestore.getADate(dataAStr); 
4362								// se la data è maggiore di data a non fare nulla 
4363								if (dataDa >= dataA) 
4364									return; 
4365 
4366								gestore.plotter.axes.xaxis.min = dataDa; 
4367								gestore.plotter.axes.xaxis.max = dataA; 
4368 
4369								var interval = (dataA.getTime() - dataDa.getTime()) / 5; 
4370								var ticks = []; 
4371								var currTick = dataDa.getTime(); 
4372								ticks.push(currTick); 
4373								for (var i = 0; i < 5; i++) { 
4374									currTick += interval; 
4375									ticks.push(currTick); 
4376
4377 
4378								gestore.plotter.axes.xaxis.ticks = ticks; 
4379 
4380								gestore.plotter.replot(); 
4381 
4382								// Necessario per riabilitare zoom 
4383								gestore.plotter.axes.xaxis.ticks = []; 
4384 
4385								// applyGradientOnPlot(); 
4386 
4387							}; 
4388 
4389							if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9) 
4390
4391								// carica script che emula il canvas poiché ie < 9 non lo supoporta 
4392								var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js"; 
4393								jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) { 
4394									gestore.visualizzaGrafico(datiDaVisualizzare); 
4395									updateDatePickers(); 
4396									applyGradientOnPlot(); 
4397									jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
4398									updateAndamentoLabel(); 
4399								}); 
4400 
4401
4402							else 
4403
4404								gestore.visualizzaGrafico(datiDaVisualizzare); 
4405								updateDatePickers(); 
4406								applyGradientOnPlot(); 
4407								jQuery.jqplot.postDrawHooks.push(postDrawProcessing); 
4408								updateAndamentoLabel(); 
4409
4410							updateGraphDatesFromDatePickers(); 
4411							aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]); 
4412 
4413 
4414							jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers); 
4415 
4416							</#if> 
4417 
4418							</#if> 
4419 
4420 
4421						}); 
4422					</script> 
4423 
4424				</div> 
4425				</#if> 
4426 
4427 
4428 
4429 
4430				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/jquery.jqplot.min.js"></script> 
4431				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js"></script> 
4432				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.dateAxisRenderer.min.js"></script> 
4433				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.highlighter.min.js"></script> 
4434				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.cursor.min.js"></script> 
4435				<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.logAxisRenderer.js"></script>