An error occurred while processing the template.
Error on line 37, column 25 in 10154#10194#23814
journalArticleLocalService.getLatestArticle(curEntry.getClassPK()) is undefined.
It cannot be assigned to journalArticle
1<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")> 
2<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService")> 
3<#assign vocabularyUtil = serviceLocator.findService("com.liferay.portlet.asset.service.AssetVocabularyLocalService") > 
4 
5<#assign liferayUi = taglibLiferayHash["/WEB-INF/tld/liferay-ui.tld"]/> 
6<#assign liferayPortlet = taglibLiferayHash["/WEB-INF/tld/liferay-portlet.tld"]/> 
7<#assign smart = taglibLiferayHash["/WEB-INF/tld/smart.tld"]/> 
8 
9<#assign originalRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest))> 
10<#assign resultadosPagina = 4> 
11<#assign fechaDesdeHoy = .now?string("dd/MM/y")> 
12 
13<#assign filtroListado = (originalRequest.getParameter("filtro"))!("#CTYPEID:11240#CNAMEID:10109#NUMRES:4#PAG:0#ORDFIELDDATE:Fecha#ORRDERTYPE:ASC#Fecha_DESDE:${fechaDesdeHoy}")/> 
14<#setting locale="${locale}"> 
15 
16<#--FRIENDLY URLS--> 
17<#assign layoutDetalleEvento = LayoutLocalService.getFriendlyURLLayout(layout.getGroup().getGroupId(), layout.isPrivateLayout(), "/detalle-evento")> 
18<#assign urlDetalleEvento = layoutDetalleEvento.getRegularURL(request)> 
19 
20<#assign varEvento = "[]" /> 
21<#assign recuperadoListadoCompleto = (originalRequest.getParameter("recuperadoListadoCompleto"))!("false")> 
22<#if ("false" == recuperadoListadoCompleto)> 
23	<#-- filtro para el listado de eventos sin paginar --> 
24	<#if filtroListado?contains("#NUMRES:")> 
25		<#assign filtroListadoAux = filtroListado[(filtroListado?index_of("NUMRES:"))..] /> 
26		<#assign filtroListadoCompleto = "#NUMRES:1000" + filtroListado[0..(filtroListado?index_of("#NUMRES:"))] + filtroListadoAux[(filtroListadoAux?index_of("#") + 1)..] /> 
27	<#else> 
28		<#assign filtroListadoCompleto = "#NUMRES:1000" + filtroListado /> 
29	</#if> 
30	 
31	<#-- Se recupera el listado completo de eventos --> 
32	<@smart["filtradopublicador"] filtro=filtroListadoCompleto /> 
33 
34	<#assign varEvento = "[" /> 
35	<#if entries?has_content> 
36		<#list entries as curEntry>	 
37			<#assign journalArticle = journalArticleLocalService.getLatestArticle(curEntry.getClassPK())/> 
38			<#assign content = journalArticle.getContentByLocale(locale)/> 
39			<#assign doc = saxReaderUtil.read(content)/>															 
40			<#assign varEvento = varEvento + "{ \"color\": \"#177E95\", \"colorBrightnessFactor\": 1, \"colorSaturationFactor\": 1, \"content\": \"" + doc.selectSingleNode("//*/dynamic-element[@name='Titulo']/dynamic-content").getText()?js_string /> 
41			<#assign varEvento = varEvento +  ":#:" + journalArticle.getUrlTitle() +"\"," /> 
42			<#assign varEvento = varEvento +  "\"startDate\" : \"" + doc.selectSingleNode("//*/dynamic-element[@name='Fecha']/dynamic-content").getText() + "\","/> 
43			<#assign varEvento = varEvento + "\"endDate\" : \"" + doc.selectSingleNode("//*/dynamic-element[@name='Fecha']/dynamic-content").getText() + "\""/> 
44			<#assign varEvento = varEvento +  "}" /> 
45			<#if curEntry_has_next> 
46				<#assign varEvento = varEvento +  "," /> 
47			</#if> 
48		</#list> 
49	</#if>	 
50	<#assign varEvento = varEvento +  "]" /> 
51	<#assign recuperadoListadoCompleto = "true" /> 
52</#if> 
53	 
54<#-- Se recupera el listado segun la pagina solicitada --> 
55 
56<div class="panel listado eventos clearfix bkg-bottom"> 
57	<section class="container navBarTopPadding valign-none"> 
58		<div class="row-fluid">  
59			<div class="span12 title"> 
60				<h2> 
61					<@liferayUi["message"] key="portalweb.templates.listadoEventos.eventos" /> 
62				</h2> 
63			</div>  
64		</div> 
65 
66		<div class="row-fluid row-gutter">  
67			<div class="accordion accordion-depo" id="accordionEventos"> 
68				<div class="accordion-group "> 
69					<div class="accordion-heading"> 
70						<a class="accordion-toggle dont-intercept" data-toggle="collapse" data-parent="#accordionEventos" href="#collapseFormEventos"> 
71							<span class="link-show"><i class="link-icon icon-chevron-down"></i><@liferayUi["message"] key="portalweb.templates.listados.mostrarFiltros" /></span> 
72							<span class="link-hide"><i class="link-icon icon-chevron-up"></i><@liferayUi["message"] key="portalweb.templates.listados.ocultarFiltros" /></span> 
73						</a> 
74					</div> 
75					<div class="accordion-body collapse" id="collapseFormEventos"> 
76						<div class="span12 span12 text-bkg clearfix"> 
77							<form  id="filtroMapaEventos" name="filtroListadoEventos" method="post" class="event-filters">	 
78								<input type="hidden" name="pag" id="pag" value="${entriesPagTag}" > 
79								<input type="hidden" name="resTot" id="resTot" value="${entriesTotalTag}" > 
80								<input type="hidden" name="filtro" id="filtro" value="${filtroListado}" > 
81								<input type="hidden" name="recuperadoListadoCompleto" id="recuperadoListadoCompleto" value="${recuperadoListadoCompleto}" > 
82								 
83								<div class="row-fluid"> 
84									 
85									<div class="span4 form-item-group input-search">  
86										<label for="txtBusca"><@liferayUi["message"] key="portalweb.templates.listadoEventos.buscarEventos" /></label> 
87										<input type="text" placeholder="<@liferayUi["message"] key="portalweb.templates.listadoEventos.buscarEventos" />" name="txtBusca" id="txtBusca"> 
88									</div> 
89 
90									<div class="span4 form-item-group input-type-of"> 
91										<label for="tipos"><@liferayUi["message"] key="portalweb.templates.listadoEventos.delTipo" /></label> 
92										<select class="sExp populate select2-offscreen" id="tipos" name="tipos" multiple="" tabindex="-1" > 
93											<#assign vocabulary = vocabularyUtil.getGroupVocabulary(groupId, "eventos")  > 
94											<#assign categorias = vocabulary.getCategories() > 
95											<#list categorias as cat> 
96												<option value="${cat.getPrimaryKey()}">${cat.getTitle(locale)} </option>  
97											</#list> 
98										</select> 
99									</div> 
100								 
101									<div class="span4 form-item-group select-order"> 
102										<label for="ordenar"><@liferayUi["message"] key="portalweb.templates.listadoEventos.ordenar" /></label> 
103										<select class="populate select2-offscreen" id="ordenar" name="ordenar" > 
104											<option value="expirationDate_ASC"><@liferayUi["message"] key="portalweb.templates.listadoEventos.masRecientes" /></option> 
105											<option value="expirationDate_DESC"><@liferayUi["message"] key="portalweb.templates.listadoEventos.masAntiguas" /></option> 
106											<option value="title_ASC"><@liferayUi["message"] key="portalweb.templates.listadoEventos.titulo" /></option> 
107											<#--<option value="valoradas"><@liferayUi["message"] key="portalweb.templates.listadoExperiencias.lasMasValoradas" /></option>--> 
108										</select> 
109									</div> 
110								</div> 
111				 
112								<div class="row-fluid row-gutter-small"> 
113									<div id="desdeDatePicker" class="span4 form-item-group datepicker datepicker-from" > 
114										<label for="txtDesde"><@liferayUi["message"] key="portalweb.templates.listadoEventos.desde" /></label> 
115										<input type="text"  id="txtDesde" class="calendario" value="${fechaDesdeHoy}"> 
116										<i class="icon-calendar"></i> 
117									</div> 
118 
119									<div id="hastaDatePicker"  class="span4 form-item-group datepicker datepicker-to"> 
120										<label for="txtHasta"><@liferayUi["message"] key="portalweb.templates.listadoEventos.hasta" /></label> 
121										<input type="text" value="" name="txtHasta" id="txtHasta" class="calendario"> 
122										<i class="icon-calendar"></i> 
123									</div> 
124								</div> 
125 
126								<div class="row-fluid"> 
127									<div class="span4 offset8 form-item-group accions actions-container clearfix"> 
128										<input type="submit" value='<@liferayUi["message"] key="search" />' class="buscar btn btn-primary pull-right" name="buscar" /> 
129										<a href="#" class="restablecer pull-right dont-intercept"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.restablecer" /></a> 
130									</div> 
131								</div> 
132							</form> 
133						</div> 
134					</div> 
135				</div> 
136			</div>  
137		</div> 
138			 
139		<div id="listadoEventosWrapp">	 
140			<div id="listadoEventosAjax"> 
141				<div class="row-fluid">				 
142					<div class="span9 clearfix"> 
143						<div class="row-fluid row-gutter">  
144							<div class="vistas clearfix" >								 
145								<span class=""><span class="mostramos-total"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.mostramosTotal" /></span> <span class="num-res">${entriesTotalTag} </span><@liferayUi["message"] key="portalweb.templates.listadoEventos.eventosEncontrados" /></span>	 
146							</div>  
147						</div> 
148						 
149						<div id="topPaginator" class="row-fluid row-gutter-bottom">  
150							<div class="span12"> 
151								<div class=" vistas pag clearfix fake"> 
152								 
153								</div>						 
154							</div> 
155						</div> 
156 
157						<div class="row-fluid hidden" id="cajaBuscandoEventos"> 
158							<div class="span12 row-gutter-bottom" > 
159								<div class="text-bkg text-container text "> 
160									<span class="offset1"> 
161										<@liferayUi["message"] key="searching,-please-wait" /> 
162									</span> 
163								</div> 
164							</div> 
165						</div> 
166						 
167						<div class="row-fluid" id="listadoEventosResp"> 
168							<div class="span12 listadoEventosResp"> 
169								<#if entries?has_content> 
170									<#list entries as curEntry> 
171										<#assign journalArticle = journalArticleLocalService.getLatestArticle(curEntry.getClassPK())> 
172										<#assign urlFormada = urlDetalleEvento + "?content=" + journalArticle.getUrlTitle()> 
173										<#assign content = journalArticle.getContentByLocale(locale)> 
174										<#assign doc = saxReaderUtil.read(content)> 
175										 
176										<article class="row-gutter-bottom evento-listado"> 
177											<div  class="itemR clearfix"> 
178												<div class="text-container"> 
179													<header class="row-fluid"> 
180														<h3 class="tit titulo-evento span7"> 
181															<#assign title = (doc.selectSingleNode("//*/dynamic-element[@name='Titulo']/dynamic-content").getText())!""> 
182															<#assign pk= "" + curEntry.getClassPK() >  
183															<#assign groupId= "" + layout.getGroup().getGroupId() > 
184															<a href="${urlFormada}" target="_blank">  
185																${doc.selectSingleNode("//*/dynamic-element[@name='Titulo']/dynamic-content").getText()} 
186															</a> 
187														</h3> 
188														<#assign fecha = doc.selectSingleNode("//*/dynamic-element[@name='Fecha']/dynamic-content").getText() > 
189														<#assign num = fecha?number> 
190														<time datetime="${num?number_to_date?string["yyyy-MM-dd"]}" class="tit fecha-evento span5" > 
191															${num?number_to_date?string.long} 
192														</time>																 
193													</header> 
194													<div class="row-fluid row-gutter-small"> 
195														<div class="info clearfix"> 
196															<#if doc.selectSingleNode("//*/dynamic-element[@name='Imagenes']/dynamic-content")??  
197																&& doc.selectSingleNode("//*/dynamic-element[@name='Imagenes']/dynamic-content").getText() != "" 
198																&& doc.selectSingleNode("//*/dynamic-element[@name='Imagenes']/dynamic-content").getText() != "null">	 
199																<div class="span3"> 
200																	<div style="background-image: url('${doc.selectSingleNode("//*/dynamic-element[@name='Imagenes']/dynamic-content").getText()}');" class="img">								 
201																	</div> 
202																</div> 
203																<div class="span9"> 
204															<#else> 
205																<div class="span12"> 
206															</#if>	 
207															 
208																<div class="campos"> 
209																	<#if doc.selectSingleNode("//*/dynamic-element[@name='Localidad']/dynamic-content").getText() != "" > 
210																		<div class="localidad"> 
211																			${doc.selectSingleNode("//*/dynamic-element[@name='Localidad']/dynamic-content").getText()} 
212																		</div> 
213																	</#if> 
214																	<p class="text"> ${doc.selectSingleNode("//*/dynamic-element[@name='Entrada']/dynamic-content").getText()}</p> 
215																</div> 
216															</div> 
217														</div>												 
218													</div> 
219												</div> 
220												 
221												<div class="row-fluid"> 
222													<div class="span12 ver-detalle" > 
223														<a href="${urlFormada}"> <@liferayUi["message"] key="portalweb.templates.listadoRecursos.verDetalle" /></a> 
224													</div> 
225												</div> 
226											</div> 
227										</article> 
228									</#list> 
229								</#if>	 
230							</div> 
231						</div> 
232					</div> 
233					 
234					<div class="span3 calendarioFijo row-gutter"> 
235						<span class="calendario-titulo"> <@liferayUi["message"] key="portalweb.templates.detalleEvento.descubre_eventos" /></span> 
236						<div class="calendarListadoBuscador">&nbsp;</div> 
237						<div class="capaEvento">&nbsp;</div> 
238					</div> 
239				</div>	 
240			</div> 
241		</div> 
242		 
243		<div id ="bottomPaginator" class="row-fluid">  
244			<div class="span12"> 
245				<div class=" vistas pag clearfix real"> 
246				 
247				</div>						 
248			</div> 
249		</div> 
250 
251	</section> 
252		 
253	<script src="/html/js/i18n/datepicker-${locale.getLanguage()}.js"></script> 
254	 
255	<script> 
256		<@liferayPortlet["renderURL"] windowState="exclusive" var="urlAjaxExp"	/> 
257		console.log("filtro recibido: " + "${filtroListado}"); 
258		var eventos = ${varEvento}; 
259		 
260		for (i=0; i<eventos.length; i++){ 
261			eventos[i].startDate = new Date(parseInt(eventos[i].startDate)); 
262			eventos[i].endDate = new Date(parseInt(eventos[i].endDate)); 
263
264		 
265		jQuery(".sExp").select2(); 
266		jQuery("#ordenar").select2(); 
267		 
268		var numResT = ${entriesTotalTag}; 
269		var filtroR = '${filtroListado}'; 
270		var pageR = ${entriesPagTag}+1; 
271		 
272		function recargaEventos(data){ 
273			var t0 = performance.now(); 
274			if(typeof data != "undefined"){ 
275				jQuery("#listadoEventosAjax").replaceWith(jQuery(data).find("#listadoEventosAjax"));	 
276				numResT = jQuery(data).find("#resTot").val(); 
277				filtroR = jQuery(data).find("#filtro").val(); 
278				pageR = jQuery(data).find("#pag").val() +1 ; 
279			}else{ 
280				numResT = ${entriesTotalTag};	 
281				filtroR = jQuery("#filtro").val(); 
282				pageR = jQuery("#pag").val() +1; 
283
284			 
285			console.log("NUM:" + numResT); 
286			if (numResT > 0) { 
287				jQuery('.vistas').removeClass('result-none'); 
288				var pagination ="<div class='pagination'><a href='#' class='first dont-intercept' data-action='first'>&laquo;</a>"; 
289				pagination += "<a href='#' class='previous dont-intercept' data-action='previous'>&lsaquo;</a>"; 
290				pagination += "<input type='text' readonly='readonly' />"; 
291				pagination +="<a href='#' class='next dont-intercept' data-action='next'>&rsaquo;</a>"; 
292				pagination +="<a href='#' class='last dont-intercept' data-action='last'>&raquo;</a></div>"; 
293				 
294				jQuery('.pagination').remove(); 
295				 
296				jQuery('.vistas.pag').append(pagination);			 
297 
298				jQuery('.pagination').jqPagination({ 
299					link_string	: '#', 
300					max_page	: (numResT%4==0? (Math.floor(numResT/4)) : (Math.floor(numResT/4))+1  ), 
301					page_string	: '<@liferayUi["message"] key="portalweb.templates.listados.totalPagina" /> {current_page} <@liferayUi["message"] key="portalweb.templates.listados.totalPaginaDe" /> {max_page}',	 
302					 paged: function(page) { 
303						console.log('pagina cambiada' + page); 
304						console.log('filtroR' + filtroR); 
305						var nuevoFiltro = ""; 
306						filtroBloques = filtroR.split("#"); 
307						for(var i=1;i<filtroBloques.length;i++){ 
308							 
309							itemsBloque = filtroBloques[i].split(":"); 
310							 
311							if(itemsBloque[0]=='PAG'){ 
312								nuevoFiltro += "#PAG:" + (page-1);			        		 
313							}else 	nuevoFiltro += "#" +filtroBloques[i]; 
314
315						console.log("nuevoFiltro: " + nuevoFiltro); 
316						//scrollToTopOfSearchPanel('.panel.eventos'); 
317						jQuery('#cajaBuscandoEventos').removeClass('hidden'); 
318						jQuery('#listadoEventosResp').hide(500); 
319						jQuery('.calendarListadoBuscador').hide(500); 
320						synchronizePaginators(); 
321						 
322						jQuery.post("${urlAjaxExp}",{filtro:nuevoFiltro},function(data,textStatus){	 
323							if(textStatus=='success'){ 
324 
325								jQuery("#listadoEventosAjax").replaceWith(jQuery(data).find("#listadoEventosAjax")); 
326								 
327								//scrollToTopOfSearchPanel('.panel.eventos'); 
328								jQuery('#cajaBuscandoEventos').addClass('hidden'); 
329								jQuery('#listadoEventosResp').show(500); 
330								jQuery('.calendarListadoBuscador').show(500); 
331								synchronizePaginators(); 
332								 
333								cargaDatePicker('input.calendario'); 
334								cargaCalendario(); 
335
336						}); 
337
338				}); 
339				 
340				synchronizePaginators(); 
341				 
342				// Se oculta el formulario de filtros 
343				if (!restablecerEsOrigenBusqueda) { 
344					jQuery('#collapseFormEventos').collapse('hide'); 
345					jQuery('a.accordion-toggle').addClass('collapsed'); 
346				} else { 
347					restablecerEsOrigenBusqueda = false; 
348
349				 
350			} else { 
351				jQuery('.vistas').addClass('result-none'); 
352
353			 
354			cargaDatePicker('input.calendario'); 
355			cargaCalendario(); 
356			var t1 = performance.now(); 
357			console.log("recargaEventos: " + (t1 - t0) + " milliseconds.") 
358
359		 
360		/** 
361		 * JQuery pagination no soporta la sincroncizacion de dos paginadores, se establece 
362		 * un workarround para simular este comportamiento. 
363		 */ 
364		function synchronizePaginators(){ 
365			// Se establece en el falso paginador el texto del autentico 
366			jQuery('.vistas.pag.fake').html(jQuery('.vistas.pag.real').html()); 
367			// Se actualiza el texto del falso paginador 
368			jQuery('.vistas.pag.fake input').val(jQuery('.vistas.pag.real input').val()); 
369			// Se establecen listeners en el falso paginador que disparan los eventos 
370			// correspondientes en el paginador real 
371			jQuery('.vistas.pag.fake .first').on("click", function (e){ 
372				e.preventDefault(); 
373				e.stopImmediatePropagation(); 
374				jQuery('.vistas.pag.real .first').trigger('click'); 
375			}); 
376			jQuery('.vistas.pag.fake .previous').on("click", function (e){ 
377				e.preventDefault(); 
378				e.stopImmediatePropagation(); 
379				jQuery('.vistas.pag.real .previous').trigger('click'); 
380			}); 
381			jQuery('.vistas.pag.fake .next').on("click", function (e){ 
382				e.preventDefault(); 
383				e.stopImmediatePropagation(); 
384				jQuery('.vistas.pag.real .next').trigger('click'); 
385			}); 
386			jQuery('.vistas.pag.fake .last').on("click", function (e){ 
387				e.preventDefault(); 
388				e.stopImmediatePropagation(); 
389				jQuery('.vistas.pag.real .last').trigger('click'); 
390			}); 
391
392		 
393		 function cargaDatePicker(myTrigger){ 
394			var today = new Date(); 
395			jQuery('#txtDesde').datepicker({ 
396				dateFormat: "dd/mm/yy", 
397				onSelect: function(date) { 
398					fecha=new Date(date); 
399					jQuery('#txtHasta').datepicker('option', 'minDate', date); 
400
401			}); 
402			jQuery('#txtDesde').datepicker("option", "dateFormat", "dd/mm/yy"); 
403			jQuery('#txtHasta').datepicker({dateFormat: "dd/mm/yy"}); 
404			jQuery('#txtHasta').datepicker("option", "dateFormat", "dd/mm/yy"); 
405 
406
407		  
408		 function cargaCalendario(){ 
409			YUI().use('aui-scheduler', 
410			function(Y) { 
411				 
412				var monthView = new Y.SchedulerMonthView( 
413
414					height:200 
415
416				); 
417 
418				new Y.Scheduler( 
419
420					activeView: monthView, 
421					boundingBox: '.calendarListadoBuscador', 
422					//date: new Date(),		      
423					items: eventos, 
424					render: true, 
425					views: [ monthView ], 
426					firstDayOfWeek:1 
427					 
428
429				); 
430			}	 
431			); 
432			 
433
434 
435		jQuery("#filtroMapaEventos").submit(function(e) { 
436			e.preventDefault(); 
437			 
438			buscar(); 
439		}); 
440		 
441		 
442		function buscar() { 
443			// recogida de filtros 
444			var tipos = jQuery("#tipos").select2("val"); 
445			var fechaDesde = jQuery("#txtDesde").val(); 
446			var fechaHasta = jQuery("#txtHasta").val(); 
447			var campoTexto=  jQuery("#txtBusca").val(); 
448			 
449			var ordenar=  jQuery("#ordenar").val(); 
450					 
451			var filtro = "#CTYPEID:11240#CNAMEID:10109#NUMRES:4#PAG:0"; 
452			 
453			if(tipos!=''){ 
454				filtro += "#CAT:" + tipos; 	 
455
456			 
457			if(fechaDesde!=''){ 
458				filtro += "#Fecha_DESDE:" + fechaDesde; 	 
459
460			 
461			if(fechaHasta!=''){ 
462				filtro += "#Fecha_HASTA:" + fechaHasta; 	 
463
464			 
465			if(ordenar!=''){ 
466				<#--if(ordenar === 'valoradas'){	  
467				   filtro += "#MOSTVALUED:DESC"; 
468				} else { 
469					ordenar_bloques = ordenar.split("_");  
470					if (ordenar_bloques && (ordenar_bloques.length > 1)) { 
471						filtro += "#ORDFIELDDATE:Fecha#ORRDERTYPE:" + (ordenar_bloques[1].toUpperCase()); 
472
473				}--> 
474				 
475				ordenar_bloques = ordenar.split("_");  
476				if (ordenar_bloques[0] == "expirationDate") { 
477					filtro += "#ORDFIELDDATE:Fecha#ORRDERTYPE:" + ordenar_bloques[1]; 
478					 
479
480				else { 
481					filtro += "#ORRDERCOL:" + ordenar_bloques[0] + "#ORRDERTYPE:" + ordenar_bloques[1]; 
482
483
484			 
485			if(campoTexto!=''){ 
486				filtro += "#KEYWORDS:" + campoTexto;	 
487
488			 
489			console.log("buscando eventos con el filtro: " + filtro); 
490			jQuery.post("${urlAjaxExp}",{filtro:filtro},function(data,textStatus){	 
491				if(textStatus=='success'){ 
492					recargaEventos(data);					 
493
494			}); 
495
496		 
497		var restablecerEsOrigenBusqueda = false; 
498		var defaultOrder = jQuery('#ordenar').select2("val"); 
499		jQuery('.restablecer').on('click',function(e){ 
500			e.preventDefault(); 
501			jQuery("#tipos").select2("val",""); 
502			jQuery('#txtBusca').val(""); 
503			jQuery('#txtDesde').val("${fechaDesdeHoy}"); 
504			jQuery('#txtHasta').val(""); 
505			jQuery('#ordenar').select2("val", defaultOrder); 
506			restablecerEsOrigenBusqueda = true; 
507			buscar(); 
508		}); 
509		 
510		// Seleccionar el contenido del campo de texto al hacer click 
511		jQuery('#txtBusca').on('click',function(e){ 
512			this.setSelectionRange(0, this.value.length); 
513		}); 
514		 
515		jQuery(document).ready(function(){ 
516			recargaEventos(); 
517		}) 
518		/*  
519		jQuery("body").delegate('.scheduler-event-short','click',function(e){ 
520			var html= ''; 
521			 
522			td = jQuery(this).closest('td');	 
523			 
524			contentPartes = td.find('.scheduler-event-content').html().split(":#:"); 
525			var title = cleanUpSpecialChars(contentPartes[0].toLowerCase()); 
526			title = replaceAll(title.toLowerCase(), " ", "-"); 
527			 
528			html += "<a href='" + "${urlDetalleEvento}" + "?content=" + contentPartes[1] +"' >"; 
529			html += contentPartes[0]; 
530			html += "</a><br/>"; 
531 
532			jQuery('.capaEvento').empty().append(html); 
533			var offset = jQuery(this).offset(); 
534			jQuery('.capaEvento').offset({ top: offset.top, left: '0px'}).show(); 
535		}) 
536		 
537		jQuery(window).bind('click',function(e){ 
538			 
539			if((jQuery('.capaEvento').has(e.target).length==0) && (e.target.className.indexOf('scheduler-event-short') == -1)){	 
540				jQuery('.capaEvento').hide(); 
541
542		})	 
543		 */ 
544		//Cuando tiene el foco el campo de busqueda borra el mensaje 
545		$('#txtBusca').focusin(function(){ 
546			$(this).attr('placeholder',''); 
547		}); 
548		 
549		$('#txtBusca').focusout(function(){ 
550			$(this).attr('placeholder','<@liferayUi["message"] key="portalweb.templates.listadoEventos.buscarEventos" />'); 
551		}); 
552		 
553		function replaceAll(str, find, replace) { 
554  			return str.replace(new RegExp(find, 'g'), replace); 
555
556		 
557		function cleanUpSpecialChars(str){ 
558		    str = str.replace(/[ÀÁÂÃÄÅ]/g,"A"); 
559		    str = str.replace(/[àáâãäå]/g,"a"); 
560		    str = str.replace(/[ÈÉÊË]/g,"E"); 
561		    str = str.replace(/[èéêë]/g,"e"); 
562		    str = str.replace(/[ÌÍÎÏ]/g,"I"); 
563		    str = str.replace(/[ìíîï]/g,"i"); 
564		    str = str.replace(/[ÒÓÔÖ]/g,"O"); 
565		    str = str.replace(/[òóôö]/g,"o"); 
566		    str = str.replace(/[ÙÚÛÜ]/g,"U"); 
567		    str = str.replace(/[ùúûü]/g,"u"); 
568		    //.... all the rest 
569		    return str.replace(/[^a-z0-9]/gi,' '); // final clean up 
570
571 
572	</script>		 
573</div>