Se ha producido un error al procesar la plantilla.
Expression layout.getExpandoBridge().getAttribute("max-height") is undefined on line 9, column 33 in 10154#10194#60622.
1<!--[if lte IE 9]> 
2<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.0/jquery.xdomainrequest.min.js'></script> 
3<![endif]--> 
4<#assign liferayUi = taglibLiferayHash["/WEB-INF/tld/liferay-ui.tld"]/> 
5<#assign smart = taglibLiferayHash["/WEB-INF/tld/smart.tld"]/> 
6<#assign liferay_util = taglibLiferayHash["/WEB-INF/tld/liferay-util.tld"] /> 
7<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")> 
8 
9<#assign maxHeight = "maxh_" +  layout.getExpandoBridge().getAttribute("max-height")> 
10<#assign minHeight = "minh_" +  layout.getExpandoBridge().getAttribute("min-height")> 
11<#assign bkgColor = layout.getExpandoBridge().getAttribute("bkg-color")> 
12<#assign originalRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest))> 
13<#assign selector = (originalRequest.getAttribute("selectorCategorias")?string)!"" > 
14<#assign selectorLocalidades = (originalRequest.getAttribute("selectorLocalidades")?string)!"" > 
15<#assign urlBuscador = propsUtil.get("recursos.turisticos.buscador")> 
16<#assign urlMunicipios = propsUtil.get("recursos.turisticos.municipios")> 
17<#assign urlRecursosvb = propsUtil.get("recursos.turisticos.recursosvb")> 
18<#assign resultadosPagina=10> 
19<#assign paramContent = (originalRequest.getParameter("categoria")?string)!""> 
20<#assign paramContentPadre = (originalRequest.getParameter("categoriaPadre")?number)!""> 
21<#assign paramCoordenadaX = (originalRequest.getParameter("coordenadaX")?number)!""> 
22<#assign paramCoordenadaY = (originalRequest.getParameter("coordenadaY")?number)!""> 
23<#assign contador=0> 
24 
25<#--FRIENDLY URLS--> 
26<#assign layoutRecursoPan1 = LayoutLocalService.getFriendlyURLLayout(layout.getGroup().getGroupId(), layout.isPrivateLayout(), "/recursopan1")> 
27<#assign layoutReserva = LayoutLocalService.getFriendlyURLLayout(layout.getGroup().getGroupId(), layout.isPrivateLayout(), "/realiza-reserva")> 
28 
29<#assign urlRecursoPan1 =  layoutRecursoPan1.getRegularURL(request)> 
30<#assign urlReserva =  layoutReserva.getFriendlyURL(locale)> 
31<#assign reserva =  urlReserva?replace("/", "")> 
32 
33<#assign urlValorar = propsUtil.get("recursos.turisticos.valoracionRecursos")> 
34 
35<@liferay_util["buffer"] var="listadosLib"> 
36    <@liferay_util["include"] 
37        page="/html/listados.jsp" 
38        strict=true 
39        useCustomPage=false 
40    /> 
41</@> 
42 
43<div class="panel listadoD recursosMasValorados clearfix ${maxHeight} ${minHeight}" style="background-color: ${bkgColor}"> 
44	<div class="container navBarTopPadding valign-none"> 
45		<div class="row-fluid">  
46			<div class="span12 title"> 
47				<h2> 
48					<@liferayUi["message"] key="portalweb.templates.listado_top6_home.lo_mas_valorado" /> 
49				</h2> 
50			</div>  
51		</div> 
52		<#-- 
53		<div class="row-fluid row-gutter-small row-gutter-bottom">  
54				<div class="span12 "> 
55				    <div class="text-bkg text-container text"> 
56				         
57						<@liferayUi["message"] key="portalweb.templates.listadoRecursos.masValorados.entradilla" /> 
58				    </div> 
59				</div> 
60		</div> 
61		--> 
62		<div class="row-fluid hidden">  
63			<div class="accordion accordion-depo" id="accordionRecursos"> 
64				<div class="accordion-group "> 
65					<div class="accordion-heading text-bkg-result"> 
66						<a class="accordion-toggle dont-intercept" data-toggle="collapse" data-parent="#accordionRecursos" href="#collapseFormRecursos"> 
67							<span class="link-show"><i class="link-icon icon-chevron-down"></i><@liferayUi["message"] key="portalweb.templates.listados.mostrarFiltros" /></span> 
68							<span class="link-hide"><i class="link-icon icon-chevron-up"></i><@liferayUi["message"] key="portalweb.templates.listados.ocultarFiltros" /></span> 
69						</a> 
70					</div> 
71					<div class="accordion-body in collapse" id="collapseFormRecursos"> 
72						<div class="span12 span12 text-bkg clearfix"> 
73							<form  id="filtroMapaRecursos" name="filtroListadoRecursos" action="" method="post" class="event-filters filtroExperiencias buscar">	 
74								<div class="row-fluid"> 
75									<div class="span4 form-item-group input-type-of"> 
76										<label for="txtBusca"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.nombre" /></label> 
77										<input type="text" placeholder="<@liferayUi["message"] key="portalweb.templates.listadoRecursos.plantillaBuscador" />" 	 
78												name="txtBusca" id="txtBusca"> 
79									</div> 
80									 
81									<div class="span4 form-item-group input-type-of"> 
82										<label for="municipio"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.localidad" /></label> 
83										<select class=" sExp populate select2-offscreen" id="municipio" name="municipio" multiple="" tabindex="-1"> 
84										</select> 
85									</div> 
86									 
87									<div class="span4 form-item-group input-type-of"> 
88										<label for="categoria"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.categoria" /></label> 
89										<input class="sExp populate select2-offscreen" id="categoria" name="categoria" tabindex="-1">							 
90									</div> 
91								</div> 
92								 
93								<div class="row-fluid row-gutter-small"> 
94																	 
95									<div class="span4 form-item-group select-order"> 
96										<label for="ordenar"><@liferayUi["message"] key="portalweb.templates.listadoEventos.ordenar" /></label> 
97										<select class="sExp populate select2-offscreen" id="ordenarRecurso" name="ordenarRecurso" > 
98											<option value="3"><@liferayUi["message"] key="portalweb.templates.mapa.masValorado" /></option> 
99											<#if paramCoordenadaX?has_content > 
100											<option value="cercano_ASC"><@liferayUi["message"] key="portalweb.templates.mapa.masCercano" /></option> 
101											</#if> 
102											<option value="1"><@liferayUi["message"] key="portalweb.templates.listadoEventos.titulo" /></option> 
103										</select> 
104									</div> 
105									 
106									<#-- Muestra el combo de radio si llegaron las coordenadas --> 
107									<#if paramCoordenadaX?has_content > 
108										<div class="span4 form-item-group select-order"> 
109											<label for="radioBusqueda"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.radioBusqueda" /></label> 
110											<select class="populate select2-offscreen" id="radioBusqueda" name="radioBusqueda" > 
111												<option value="2">2 KM</option> 
112												<option value="5">5 KM</option> 
113 
114												<option value="10">10 KM</option> 
115 
116												<option value="15">15 KM</option> 
117											</select>						 
118										</div> 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131									</#if> 
132										 
133								</div> 
134 
135								<div class="row-fluid"> 
136									<div class="span4 offset8 form-item-group accions actions-container clearfix"> 
137										<input type="submit" value="Buscar" class="buscar btn btn-primary pull-right" name="buscar" > 
138										<a href="#" class="restablecer pull-right dont-intercept"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.restablecer" /></a> 
139									</div> 
140								</div>	 
141							</form>	 
142						</div> 
143					</div> 
144				</div> 
145			</div> 
146		</div> 
147		 
148		<div class="row-fluid row-gutter">  
149			<div class="span12 vistas clearfix"> 
150				<div class="row-fluid">			 
151					<div class="span5" id="result-header"> 
152						 
153					</div> 
154					 
155					<div class="span6" id="listaVistas"> 
156						<a class="cambioVista dont-intercept" href="#" data-rel="vista-mapa"> 
157							<i class="icon-map-marker"></i> 
158							<span ><@liferayUi["message"] key="portalweb.templates.listadoRecursos.mapa" /></span> 
159						</a> 
160						<a class="cambioVista selected dont-intercept" href="#" data-rel="vista-listado"> 
161							<i class="icon-list"></i> 
162							<span ><@liferayUi["message"] key="portalweb.templates.listadoRecursos.listado" /></span> 
163						</a> 
164					</div> 
165				</div> 
166			</div> 
167		</div> 
168 
169		<div id="topPaginator" class="row-fluid row-gutter-bottom">  
170			<div class="span12"> 
171				<div class=" vistas pag clearfix fake"> 
172				 
173				</div>						 
174			</div> 
175		</div> 
176		 
177		<div class="row-fluid clearfix" id="vista-listado">  
178			<div class="row-fluid">  
179				<div class="span12 clearfix"> 
180					<div id="result-listado"> 
181						<div class="row-fluid row-gutter row-gutter-bottom-large"> 
182							<div class="span12"> 
183								<div class="text-bkg text-container text "> 
184									<span class="offset1"> 
185										<@liferayUi["message"] key="portalweb.templates.listados.buscandoRecursos" /> 
186									</span> 
187								</div> 
188							</div> 
189						</div> 
190					</div> 
191				</div> 
192			</div> 
193			<div id ="bottomPaginator" class="row-fluid">  
194				<div class="span12"> 
195					<div class=" vistas pag clearfix real"> 
196					 
197					</div>						 
198				</div> 
199			</div> 
200		</div> 
201		 
202		<div class="row-fluid row-gutter-bottom hidden" id="vista-mapa">  
203			<div class="span12 height-extra-large" id="listadoRecursosMapWrapper"> 
204				<@smart["mapanavegable"] 
205					mapaElement="mapaLocBusqRec" 
206					containerId="#listadoRecursosMapWrapper" 
207					dimensionsFromContainer="true" 
208					resizeWithContainer="true" 
209					filtro="false" 
210				/> 
211			</div> 
212		</div> 
213		<div class="row-fluid row-gutter"> 
214			<div class="span12"> 
215				<#-- 
216				<div class="row-fluid"> 
217					<div class="span12"> 
218						<div class="title title-bright emphasized"><@liferayUi["message"] key="portalweb.templates.listados.tituloDestacados" /> </div> 
219					</div> 
220				</div> 
221				--> 
222				<div class="row-fluid row-gutter-small"> 
223					<div class="span12"> 
224						<div id="listadoDestacadoEventos"> 
225							<script type="text/javascript" > 
226								//carga el listado destacados 
227								jQuery.post("/web/portal-web/te-puede-interesar", {ajax:true}, function(data){				 
228									jQuery("#listadoDestacadoEventos").replaceWith(jQuery(data).find(".te-puede-interesar-container"));			 
229								}); 
230							</script> 
231						</div> 
232					</div> 
233				</div> 
234			</div> 
235		</div> 
236	</div> 
237 
238<#-- Se importan las librerias de funcionalidades comunes a los listados --> 
239${listadosLib} 
240 
241<script type="text/x-tmpl" id="tmpl-cabecera"> 
242	{% if (o.marcadores.length > 0) { %} 
243		<p class="numRes"><span class="mostramos-total"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.mostramosTotal" /> </span> <span class="num-res"> {%=o.paginacion.resultadosTotales%} </span> <@liferayUi["message"] key="portalweb.templates.listadoRecursos.recursosEncontrados" /></p> 
244	{% } else { %} 
245		<p class="mostramos-ninguno" ><@liferayUi["message"] key="portalweb.templates.listadoRecursos.sinResultados" /></p> 
246	{% } %} 
247</script> 
248 
249<script type="text/x-tmpl" id="tmpl-listado">	 
250			 
251	<div class="listadoRecursosResp"> 
252 
253 
254 
255 
256		{%var it = 0;%}					 
257		 
258		{%	for (var i=0; i<o.marcadores.length; i++) {  
259			 
260				if((it >= ((o.paginacion.pagina-1)*o.paginacion.resultadosPagina)) && (it < (o.paginacion.pagina*o.paginacion.resultadosPagina))){	 
261		%} 
262 
263 
264				<div class="row-fluid row-gutter-bottom"> 
265					<div class="span12 text-bkg"> 
266						<div id="it_{%=o.paginacion.resultadosPagina-1*o.paginacion.resultadosPagina +it%}" class="itemR  clearfix"> 
267							<div class="row-fluid"> 
268								<div class="span9"> 
269									<div class="text-container"> 
270										<div class="row-fluid"> 
271											<div class="span12"> 
272												<div class="tit">  
273												<#--/recursopan1--> 
274												<a href="${urlRecursoPan1}?content={%=o.marcadores[i].pt.id%}" class="enlazaDetalle" title="Ver detalle"> 
275												{%=o.marcadores[i].pt.nombre%} 
276												</a> 
277												</div> 
278											</div> 
279										</div> 
280										<div class="row-fluid"> 
281											<div class="span12"> 
282												<div class="info clearfix"> 
283													<div class="row-fluid"> 
284														<div class="span3"> 
285															{% if (o.marcadores[i].pt.imagen == "") { %} 
286															<div style="background-image: url('${originalRequest.getContextPath()}/imaxes/imagenPrueba.png')" class="img"> 
287																 
288															{% } else { %} 
289																{% if ((o.marcadores[i].pt.imagen).indexOf("/imaxes") == 0) { %} 
290																<div style="background-image: url('{%= o.marcadores[i].pt.imagen%}')" class="img"> 
291																{% } else { %} 
292																<div style="background-image: url('/imaxes/{%= o.marcadores[i].pt.imagen%}')" class="img"> 
293																{% } %} 
294															{% } %} 
295															</div> 
296														</div> 
297														<div class="span9"> 
298															<div class="row-fluid"> 
299																<div class="campos"> 
300																	<span class="cat">  
301																		{%	if(o.marcadores[i].catPai == "" ||  o.marcadores[i].catPai == null){ %} 
302																			   
303																			{%=o.marcadores[i].cat%} 
304																		 
305																		{% }else{ %} 
306																			 
307																			{%= $("#categoria option[value='padre_" +  o.marcadores[i].catPai + "']").text() %} 
308																			  
309																		{%	} %} 
310																		 
311																		>  {%=o.marcadores[i].pt.nombreSubtipo%}</span> 
312																	<span class="localidad">{%=o.marcadores[i].pt.localidad%}</span> 
313																	 
314																	{% if (o.marcadores[i].pt.descripcion && ("" != o.marcadores[i].pt.descripcion)) { %} 
315																	<div class="row-fluid"> 
316																		{%=o.marcadores[i].pt.descripcion %} 
317																	</div> 
318																	{%	} %} 
319																</div> 
320															</div> 
321															<div class="row-fluid row-gutter-small"> 
322																{% if ((o.marcadores[i].pt.telefono) || (o.marcadores[i].pt.telefonoMovil)) { %} 
323																	<div class="span5"> 
324																		<div class="text-info link-list-phone"> 
325																			<ul> 
326 
327																				{% if (o.marcadores[i].pt.telefono) { %} 
328																					{%	for (var j=0; j<o.marcadores[i].pt.telefono.length; j++) { %} 
329																					<li>{%=o.marcadores[i].pt.telefono[j]%}</li>	 
330																					{% } %}																					 
331																				{% } %} 
332 
333 
334																				{% if (o.marcadores[i].pt.telefonoMovil) { %} 
335																					{%	for (var j=0; j<o.marcadores[i].pt.telefonoMovil.length; j++) { %} 
336																					<li>{%=o.marcadores[i].pt.telefonoMovil[j]%}</li> 
337																					{% } %}																							 
338																				{% } %} 
339																			</ul> 
340																		</div> 
341 
342 
343 
344																	</div> 
345																{% } %} 
346																{% if (o.marcadores[i].pt.web) { %} 
347 
348																	<div class="span7"> 
349																		<div class="text-info link-list-contact"> 
350																			<ul> 
351 
352																				{% if (o.marcadores[i].pt.web) { %} 
353																					<a  href="{%=o.marcadores[i].pt.web%}" target="_blank"  ><li>{%=o.marcadores[i].pt.web%}</li></a>										 
354																				{% } %}												 
355																			</ul> 
356																		</div> 
357 
358 
359																	</div> 
360																{% } %} 
361 
362															</div> 
363														</div> 
364													</div> 
365												</div> 
366											</div> 
367										</div> 
368									</div> 
369								</div>											 
370								{%  
371									var cssCol = "itemR-extra-info-container"; 
372									var totalTelefonos = 0; 
373									if (o.marcadores[i].pt.descripcion && ("" != o.marcadores[i].pt.descripcion)) { 
374										cssCol += " con-descripcion"; 
375
376									if (o.marcadores[i].pt.telefono) { 
377										totalTelefonos += o.marcadores[i].pt.telefono.length; 
378
379									if (o.marcadores[i].pt.telefonoMovil) { 
380										totalTelefonos += o.marcadores[i].pt.telefonoMovil.length; 
381
382									if (totalTelefonos > 0) { 
383										cssCol += " con-telefonos-" + totalTelefonos; 
384
385									if (o.marcadores[i].pt.web && ("" != o.marcadores[i].pt.web)) { 
386										cssCol += " con-pweb"; 
387
388									if (o.marcadores[i].pt.esReservable == "1") { 
389										cssCol += " offer"; 
390
391								%} 
392 
393 
394 
395 
396 
397 
398								<div class="span3 {%= cssCol%}"> 
399									<#-- 
400									<div class="row-fluid height-extra-small"> 
401										<a href="/recursopan1?content={%=o.marcadores[i].pt.id%}" class="verDetalle enlazaDetalle" title="Ver detalle"><@liferayUi["message"] key="portalweb.templates.listadoRecursos.verDetalle" /></a> 
402									</div> 
403									--> 
404									 
405									{% if (o.marcadores[i].pt.esReservable == "1") { %} 
406										<div class="row-fluid boundary-row"> 
407											<div class="span12"> 
408												<div class="boundary-container" data-resource-id="{%=o.marcadores[i].pt.id%}"> 
409													{%  
410														var precioMax = o.marcadores[i].pt.precioMax; 
411														var precioMin = o.marcadores[i].pt.precioMin; 
412														var estiloPrecioMin = ''; 
413														if ((precioMax == 0) || (precioMin == precioMax)) { 
414															estiloPrecioMin = "unique-value"; 
415
416														 
417														if ((precioMin > 0) && (precioMax > 0)) { 
418													%} 
419													<div class="boundary-lower"> 
420														<span class="value {%=estiloPrecioMin%}">{%=precioMin%}</span><span class="units">€</span> 
421													</div> 
422															{% if (((precioMin > 0) && (precioMax > 0)) && (precioMin != precioMax)) { %} 
423													<div class="boundary-separator">-</div> 
424															{%  } if ((precioMax > 0) && (precioMin != precioMax)) { %} 
425													<div class="boundary-higher"> 
426														<span class="value">{%= precioMax %}</span><span class="units">€</span> 
427													</div> 
428															{% } %} 
429													{% } %} 
430												</div> 
431											</div> 
432 
433										</div> 
434									{% } %} 
435									 
436									<div class="row-fluid average-container"> 
437										<div class="liferay-rating-score" id="{%=o.marcadores[i].pt.id%}" > 
438									 
439											 
440											{% var numberOfStars = 5;  
441												for (var ind = 1; ind <= numberOfStars; ind++) {  
442													var iconoEstrella = (ind<=o.marcadores[i].pt.valoracionMedia)?"icon-star":"icon-star-empty"; %} 
443												    
444													<a class="dont-intercept rating-element {%=iconoEstrella%}" id="{%=o.marcadores[i].pt.id%}-{%=ind%}" rel="{%=ind%}" onclick="ajaxValoracion('send', {%=ind%}, {%= o.marcadores[i].pt.id %})" title="{%=o.marcadores[i].pt.valoracionMedia%}"></a> 
445 
446											{%	}  %} 
447											 
448										</div> 
449									</div> 
450									 
451									<div class="row-fluid text-bkg-primary-color item-options-container"> 
452										<div class="add-lnk-container" > 
453 
454											<a href="#" class="add-link-text dont-intercept"  
455													data-id-content="{%=o.marcadores[i].pt.id%}" data-title="{%=o.marcadores[i].pt.nombre%}"> 
456												<@liferayUi["message"] key="portalweb.templates.detalleExperienciaPanel2.anadir_viaje" /> 
457											</a> 
458										</div> 
459										{% if (o.marcadores[i].pt.esReservable == "1") { %} 
460										<div class="reservation-lnk-container" > 
461 
462											<span class="reservation-link-icon"></span> 
463											<a href="${reserva}?reservaId={%=o.marcadores[i].pt.id%}" class="reservation-link dont-intercept"> 
464												<@liferayUi["message"] key="portalweb.templates.detalleExperienciaPanel2.reserva" /> 
465											</a> 
466										</div> 
467										{% } %} 
468									</div> 
469									 
470								</div> 
471							</div> 
472						</div> 
473					</div> 
474				</div> 
475			 
476			{%  
477
478				it++;							 
479									 
480			 %}	 
481			  
482		{% } %}	 
483		 
484	</div> 
485	</script> 
486 
487<script type="text/javascript"> 
488 
489		var recursos = '';	 
490		var parametro = '${paramContent}'; 
491		var parametroPadre = '${paramContentPadre}'; 
492		var parametroCoordenadaX = '${paramCoordenadaX}'; 
493		var parametroCoordenadaY = '${paramCoordenadaY}'; 
494 
495				 
496		function cargarListadoRecursos(data){ 
497			//console.log('***********Datos obtidos**********/');		 
498			 
499			numRes = 0; 
500			for (var i=0; i<data.marcadores.length; i++) { 												 
501				for (var j=0; j<data.marcadores[i].pt.length; j++) {  
502						numRes++; 
503					 
504						 
505				} 										 
506
507			numResString=""+numRes;  
508				 
509			var recursosOrd = new Array(); 
510			 
511			for (var i=0; i<data.marcadores.length; i++) {  
512			 for (var j=0; j<data.marcadores[i].pt.length; j++) { 
513			      var objetoMarcador = new Object(); 
514  			       objetoMarcador.cat= data.marcadores[i].catDesc; 
515				   objetoMarcador.catPai=data.marcadores[i].catPai; 
516				   objetoMarcador.pt= data.marcadores[i].pt[j]; 
517				   recursosOrd.push(objetoMarcador); 
518				 
519
520
521			 
522		    //si hay coordenadas y el orden es por cercania 
523			if(parametroCoordenadaX && parametroCoordenadaX!=''){ 
524				if (jQuery("#ordenarRecurso").val()=='cercano_ASC') { 
525					recursosOrd.sort(function (a, b){  
526						try { 
527							return parseFloat(a.pt.distancia) >  parseFloat(b.pt.distancia) ? 1: parseFloat(a.pt.distancia) < parseFloat(b.pt.distancia)? -1 :0; 
528						} catch (error) { 
529							return 0; 
530
531					}); 
532
533			} else  { 
534				if (jQuery("#ordenarRecurso").val()=='3') { 
535					//ordenamos primero por nombre 
536					recursosOrd.sort(function (a, b){ return a.pt.nombre >  b.pt.nombre ? 1: a.pt.nombre < b.pt.nombre? -1 :0;}); 
537					//y luego ordenar por valoracion 
538					recursosOrd.sort(function (a, b){  
539						try { 
540							return parseFloat(a.pt.valoracionMedia) <  parseFloat(b.pt.valoracionMedia) ? 1: parseFloat(a.pt.valoracionMedia) > parseFloat(b.pt.valoracionMedia)? -1 :0; 
541						} catch (error) { 
542								return 0; 
543
544					}); 
545				} else { 
546					recursosOrd.sort(function (a, b){ return a.pt.nombre >  b.pt.nombre ? 1: a.pt.nombre < b.pt.nombre? -1 :0;}); 
547
548
549		     
550			recursos = { 
551					"marcadores": recursosOrd, 
552				    "paginacion": {"pagina" : "1","resultadosPagina":"10","resultadosTotales":numResString} 
553				     
554			};			 
555			 
556			//console.log(recursos); 
557			document.getElementById("result-header").innerHTML = tmpl("tmpl-cabecera", recursos); 
558			document.getElementById("result-listado").innerHTML = tmpl("tmpl-listado", recursos); 
559			 
560			/*jQuery('.add-link-text').on('click', function(e){ 
561				e.preventDefault(); 
562				alert("Esta funcionalidad se implementa en Fase 2") 
563			}); 
564			 
565			/*	if(typeof jQuery('.pagination').jqPagination() !== 'undefined'){ 
566				console.log('paginacion destroy()'); 
567				jQuery('.pagination').jqPagination('destroy','', ''); 
568			}*/ 
569			 
570			addFavouriteLinkListeners(); 
571			 
572			if (numRes > 0) { 
573				jQuery('.vistas').removeClass('result-none'); 
574				var pagination ="<div class='pagination'><a href='#' class='first dont-intercept' data-action='first'>&laquo;</a>"; 
575					pagination += "<a href='#' class='previous dont-intercept' data-action='previous'>&lsaquo;</a>"; 
576					pagination += "<input type='text' readonly='readonly' >"; 
577					pagination +="<a href='#' class='next dont-intercept' data-action='next'>&rsaquo;</a>"; 
578					pagination +="<a href='#' class='last dont-intercept' data-action='last'>&raquo;</a></div>"; 
579					 
580				jQuery('.pagination').remove(); 
581				jQuery('.vistas.pag').append(pagination); 
582				 
583				 
584				jQuery('.pagination').jqPagination({ 
585					link_string	: '#', 
586					max_page	: (numRes%${resultadosPagina}==0? (Math.floor(numRes/${resultadosPagina})) : (Math.floor(numRes/${resultadosPagina}))+1  ), 
587					page_string	: '<@liferayUi["message"] key="portalweb.templates.listados.totalPagina" /> {current_page} <@liferayUi["message"] key="portalweb.templates.listados.totalPaginaDe" /> {max_page}', 
588					 paged: function(page) { 
589						//console.log('pagina cambiada' + page); 
590						recursos.paginacion.pagina=page; 
591						document.getElementById("result-header").innerHTML = tmpl("tmpl-cabecera", recursos); 
592						document.getElementById("result-listado").innerHTML = tmpl("tmpl-listado", recursos); 
593						addFavouriteLinkListeners(); 
594						scrollToTopOfSearchPanel('.panel.recursosMasValorados'); 
595						// Se sincroniza el paginador falso con el real 
596						synchronizePaginators(); 
597
598				}); 
599				 
600				// Se sincroniza por primera vez paginador falso con el real 
601				synchronizePaginators(); 
602				 
603				// Se oculta el formulario de filtros 
604				if (!restablecerEsOrigenBusqueda) { 
605					jQuery('#collapseFormRecursos').collapse('hide'); 
606					jQuery('a.accordion-toggle').addClass('collapsed'); 
607				} else { 
608					restablecerEsOrigenBusqueda = false; 
609
610				 
611			} else { 
612				jQuery('.vistas').addClass('result-none'); 
613
614			 
615			jQuery(".listadoD").css({'height':'auto'}); 
616			 
617			 
618			jQuery('#listaVistas .cambioVista').click(function(e){ 
619				e.preventDefault(); 
620				// Se desmarca cualquier otra vista que estuviese seleccionada 
621				jQuery('#listaVistas .cambioVista').not(this).each(function() { 
622					jQuery(this).removeClass('selected'); 
623				}); 
624				 
625				// Se marca el enlace actual como seleccionado 
626				jQuery(this).addClass('selected'); 
627				 
628				// Se ocultan todas las vistas 
629				jQuery('div [id^=vista-]').each(function() { 
630					jQuery(this).addClass('hidden'); 
631				}); 
632				 
633				// Se muestra la vista referenciada por la seleccion 
634				jQuery('div [id=' + jQuery(this).attr('data-rel')+ ']').removeClass('hidden'); 
635				 
636				// Trampeado para que se muestre bien el mapa 
637				if (jQuery(this).attr('data-rel').indexOf('mapa') > 0){ 
638					console.log("redimensionar"); 
639					setDimensionsFromContainer(jQuery("#listadoRecursosMapWrapper"), '#mapaLocBusqRec'); 
640					redimensionarMapa("mapaLocBusqRec"); 
641
642			}); 
643			 
644			 
645			 
646			jQuery("#ordenarRecurso").select2(); 
647			jQuery("#radioBusqueda").select2(); 
648
649		 
650		/** 
651		* Lanza el evento que incica que se desea anadir un favorito a un viaje 
652		* indicando el origen y el codigo de recurso. 
653		*/ 
654		function addFavouriteLinkListeners() { 
655			jQuery('.add-link-text').on('click', function(e){ 
656				e.preventDefault(); 
657				var idContent = jQuery(this).attr("data-id-content"); 
658				var tituloRecurso = jQuery(this).attr("data-title"); 
659				jQuery(document).trigger({    
660						type: "anadirfavorito_event", 
661						idContent: idContent, 
662						tipoContent:"recurso", 
663						titulo: tituloRecurso 
664				}); 
665			}); 
666
667		 
668		/** 
669		 * JQuery pagination no soporta la sincroncizacion de dos paginadores, se establece 
670		 * un workarround para simular este comportamiento. 
671		 */ 
672		function synchronizePaginators(){ 
673			// Se establece en el falso paginador el texto del autentico 
674			jQuery('.vistas.pag.fake').html(jQuery('.vistas.pag.real').html()); 
675			// Se actualiza el texto del falso paginador 
676			jQuery('.vistas.pag.fake input').val(jQuery('.vistas.pag.real input').val()); 
677			// Se establecen listeners en el falso paginador que disparan los eventos 
678			// correspondientes en el paginador real 
679			jQuery('.vistas.pag.fake .first').on("click", function (e){ 
680				e.preventDefault(); 
681				e.stopImmediatePropagation(); 
682				jQuery('.vistas.pag.real .first').trigger('click'); 
683			}); 
684			jQuery('.vistas.pag.fake .previous').on("click", function (e){ 
685				e.preventDefault(); 
686				e.stopImmediatePropagation(); 
687				jQuery('.vistas.pag.real .previous').trigger('click'); 
688			}); 
689			jQuery('.vistas.pag.fake .next').on("click", function (e){ 
690				e.preventDefault(); 
691				e.stopImmediatePropagation(); 
692				jQuery('.vistas.pag.real .next').trigger('click'); 
693			}); 
694			jQuery('.vistas.pag.fake .last').on("click", function (e){ 
695				e.preventDefault(); 
696				e.stopImmediatePropagation(); 
697				jQuery('.vistas.pag.real .last').trigger('click'); 
698			}); 
699
700		 
701		 
702		filtro = '#PROV:4#STARTINDEX:0#COUNT:50#TPORD:3';	 
703		if(parametro!=''){  
704		filtro += '#TP:' + parametro; 	 
705		 
706
707		 
708		if(parametroPadre!=''){  
709		filtro += '#MTG:' + parametroPadre; 	 
710		 
711
712		if(parametroCoordenadaX!=''){  
713			filtro += '#X:' + parametroCoordenadaX; 	 
714		 
715
716		if(parametroCoordenadaY!=''){  
717			filtro += '#Y:' + parametroCoordenadaY; 	 
718		 
719
720		console.log("FILTRO_RECURSSSSSos:"+ filtro); 
721		 
722		 
723		//Para IE la llamada POST la hacemos asi 
724		if(jQuery("html").hasClass("ie") ) { 
725		 
726		 
727				postIE(filtro); 
728				 
729                     
730        }else{ 
731		 
732		jQuery.post("${urlBuscador}",{'filtro':filtro, 'locale':'${locale.toString()}'},function(data,textStatus){	 
733			if(textStatus=='success'){			 
734			     
735				console.log("AQUI:"); 
736				console.log(data); 
737				cargarListadoRecursos(data); 
738				actualizarDatosNav("mapaLocBusqRec", data); 
739
740		},"json"); 
741		 
742
743 
744 
745		 
746		<#if "" != selectorLocalidades> 
747			var localidades = ${selectorLocalidades}; 
748			cargaLocalidades(localidades); 
749			 
750 
751			function cargaLocalidades(data) { 
752 
753 
754				//console.log(data); 
755				options = ''; 
756				for(var i=0;i<data.municipios.length;i++) options+="<option value='"+ data.municipios[i].id +"'>"+data.municipios[i].nombre+"</option>";					 
757				//console.log(options); 
758				jQuery("#municipio").append(options).select2(); 
759
760		</#if> 
761 
762 
763 
764		 
765		filtro = ''; 
766		 
767		 
768		<#if "" != selector> 
769 
770		var categorias = ${selector}; 
771		//jQuery.post("${urlRecursosvb}",{'locale':'${locale.toString()}'},function(data,textStatus){	 
772		cargaCategorias(categorias); 
773		 
774			function cargaCategorias(data) { 
775 
776 
777				//console.log(data); 
778				options = '';				 
779				var arrayObjetos=new Array(); 
780				 
781				for(var i=0;i<data.datos.length;i++){ 
782				   
783					var objetoOption = new Object(); 
784					 
785					objetoOption.id=data.datos[i].id; 
786					objetoOption.nombre= data.datos[i].nombre; 
787					 
788					var arrayTipos= new Array(); 
789					 
790					for(var j=0; j < data.datos[i].tipos.length;j++){ 
791						var objetoOptionHijo = new Object(); 
792					     objetoOptionHijo.id= data.datos[i].tipos[j].id; 
793						 objetoOptionHijo.nombre= data.datos[i].tipos[j].nombre; 
794						 arrayTipos.push(objetoOptionHijo); 
795
796					if( data.datos[i].metagruposHijos!=null){ 
797						for(var k=0; k < data.datos[i].metagruposHijos.length;k++){ 
798							for(var m=0; m < data.datos[i].metagruposHijos[k].tipos.length; m++ ){ 
799								var objetoOptionHijo2 = new Object(); 
800								 objetoOptionHijo2.id= data.datos[i].metagruposHijos[k].tipos[m].id; 
801								 objetoOptionHijo2.nombre= data.datos[i].metagruposHijos[k].tipos[m].nombre; 
802								 arrayTipos.push(objetoOptionHijo2); 
803
804
805
806 
807					arrayTipos.sort(function (a, b){ 
808					return (a.nombre  > b.nombre ? 1 : a.nombre < b.nombre ? -1 : 0)}); 
809					 
810					objetoOption.tipos= arrayTipos; 
811					arrayObjetos.push(objetoOption); 
812				}	 
813				 
814				arrayObjetos.sort(function (a, b){ 
815					return (a.nombre  > b.nombre ? 1 : a.nombre < b.nombre ? -1 : 0)}); 
816								 
817				/* 
818				for(var i=0;i<arrayObjetos.length;i++){ 
819				   options+="<option value='padre_" +arrayObjetos[i].id +"'>"+arrayObjetos[i].nombre+"</option>"; 
820					 
821					 //Si unicamente se tiene una categoria hija, esta coincide en nombre con la padre y no se muestra la hija. 
822					if(arrayObjetos[i].tipos.length > 1){ 
823						for(var j=0; j< arrayObjetos[i].tipos.length; j++){ 
824							 options+="<option  value='"+ arrayObjetos[i].tipos[j].id +"'>&nbsp;&nbsp;&nbsp;" +arrayObjetos[i].tipos[j].nombre+"</option>"; 
825
826					}					 
827				}*/ 
828				 
829				var categoriasSelect = new Array(); 
830				for(var i=0; i<arrayObjetos.length; i++){ 
831					categoriasSelect.push({id: 'padre_' + arrayObjetos[i].id, text: arrayObjetos[i].nombre, children: new Array()}); 
832					 
833					//Si unicamente se tiene una categoria hija, esta coincide en nombre con la padre y no se muestra la hija. 
834					if(arrayObjetos[i].tipos.length > 1){ 
835						for(var j=0; j< arrayObjetos[i].tipos.length; j++){ 
836							 categoriasSelect[i].children.push({id: arrayObjetos[i].tipos[j].id, text: arrayObjetos[i].tipos[j].nombre}); 
837
838
839
840				 
841				jQuery("#categoria").append(options).select2({multiple:true, data:categoriasSelect}); 
842				 
843				$("#categoria").on('change', function (e) { 
844					var seleccion = $(this).val().split(","); 
845					var longitud = 0; 
846					 
847					if (e.added.children !== undefined){  
848						longitud = e.added.children.length; 
849						 
850						for (var i=0; i < longitud; i++) { 
851							for (var j=0; j < seleccion.length; j++) { 
852								if (e.added.children[i].id == seleccion[j]) { 
853									seleccion.splice(j, 1); 
854
855
856
857
858					 
859					$(this).select2("val",seleccion); 
860				}); 
861				 
862				if(parametro!=''){  
863					//las categorias vienen separadas por comas 
864					var parametroSplit = parametro.split(','); 
865					//seteamos las categorias 
866					$("#categoria").select2("val",  parametroSplit ); 
867					 
868				}	 
869				if(parametroPadre!=''){  
870					$("#categoria").select2("val", ['padre_' + parametroPadre + '']); 
871					 
872				}					 
873				var my_options = $("#categoria"); 
874 
875				/* 
876				var options = $('select#categoria option'); 
877				var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value }; }).get(); 
878				arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; }); 
879				options.each(function(i, o) { 
880				o.value = arr[i].v; 
881					$(o).text(arr[i].t); 
882				}); 
883				*/ 
884
885		</#if> 
886		 
887 
888 
889 
890 
891 
892 
893		jQuery("#filtroMapaRecursos").submit(function(e){ 
894			e.preventDefault(); 
895			//recogida de filtros 
896			 
897			var txtBusca = jQuery("#txtBusca").val(); 
898			var municipio = jQuery("#municipio").select2("val"); 
899			var categoria = jQuery("#categoria").select2("val");	 
900			var ordenar=  jQuery("#ordenarRecurso").val();				 
901 
902			//metemos las categorias en un array; 
903			 
904			var arrayCatPadre= new Array(); 
905			var arrayCatHijo = new Array(); 
906			var srcCat=""; 
907			//diferenciamos si tiene el prefijo padre_ o no 
908			for(var i=0; i< categoria.length; i++){ 
909				if(categoria[i].indexOf('padre_') != -1){ 
910				   srcCat = categoria[i].replace(/padre_/g, ''); 
911				   arrayCatPadre.push(srcCat); 
912				}else{ 
913				   arrayCatHijo.push(categoria[i]); 
914
915			 
916
917						 
918			filtro = '#PROV:4#STARTINDEX:0#COUNT:50#TPORD:3'; 
919			if(municipio!='') filtro += '#MUN:' + municipio;   
920			if(arrayCatHijo!='') filtro += '#TP:' + arrayCatHijo;  
921			if(arrayCatPadre!='') filtro += '#MTG:' + arrayCatPadre; 
922			if(parametro!='') filtro += '#TP:' + parametro;  
923			if(parametroPadre!='') filtro += '#MTG:' + parametroPadre;  
924			if(parametroCoordenadaX!='') filtro += '#X:' + parametroCoordenadaX;  
925			if(parametroCoordenadaY!='') filtro += '#Y:' + parametroCoordenadaY;  
926			if (ordenar=='cercano_ASC') { 
927				var radiobusqueda = jQuery("#radioBusqueda").val() 
928				filtro+= '#RAD:' + radiobusqueda ; 
929
930			if(txtBusca!='') { 
931				filtro += '#TEXT:' + jQuery.base64.encode(txtBusca); 
932
933 
934			if(filtro=='') filtro='#START_INDEX:0#COUNT:20#TPORD:3#PROV:4';	 
935			 
936			//El navegador es IE no se llama al metodo post 
937			if(jQuery("html").hasClass("ie") ) { 
938                     
939				  postIE(filtro); 
940					 
941                     
942			}else{ 
943				jQuery.post("${urlBuscador}",{'filtro':filtro, 'locale':'${locale.toString()}'},function(data,textStatus){	 
944					if(textStatus=='success'){ 
945						cargarListadoRecursos(data); 
946						actualizarDatosNav("mapaLocBusqRec", data);						 
947
948				},"json"); 
949
950		}); 
951		 
952		var restablecerEsOrigenBusqueda = false; 
953		jQuery('.restablecer').bind('click',function(e){ 
954			e.preventDefault(); 
955			jQuery("#txtBusca").val(''); 
956			jQuery("#municipio").select2("val",""); 
957			jQuery("#categoria").select2("val",""); 
958			restablecerEsOrigenBusqueda = true; 
959			jQuery("#filtroMapaRecursos").trigger("submit"); 
960		}); 
961 
962		 
963		//Cuando tiene el foco el campo de busqueda borra el mensaje 
964		$('#txtBusca').focusin(function(){ 
965			jQuery(this).attr('placeholder',''); 
966		}); 
967		 
968		$('#txtBusca').focusout(function(){ 
969			jQuery(this).attr('placeholder','<@liferayUi["message"] key="portalweb.templates.listadoRecursos.plantillaBuscador" />'); 
970		}); 
971		 
972		function  postIE(filtro){ 
973		 
974				 
975				var xmlhttp; 
976				if (window.XMLHttpRequest) 
977				{// code for IE7+, Firefox, Chrome, Opera, Safari 
978					  xmlhttp=new XMLHttpRequest(); 
979
980				else 
981				{// code for IE6, IE5 
982					  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
983
984   			 
985				xmlhttp.open("POST","${urlBuscador}",true); 
986				xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
987				xmlhttp.send("filtro=" + filtro + "&locale':'${locale.toString()}"); 
988				 
989				 
990				xmlhttp.onreadystatechange=function() 
991
992				  if (xmlhttp.readyState==4 && xmlhttp.status==200) 
993
994					 
995					var doc1 = JSON.parse(xmlhttp.responseText); 
996					cargarListadoRecursos(doc1); 
997					actualizarDatosNav("mapaLocBusqRec", doc1); 
998
999
1000		 
1001
1002		 
1003		 
1004		function ajaxValoracion( opcion, rel, codigo) { 
1005			jQuery.post("${urlValorar}",{'opcion':opcion, 'codigo':codigo, 'rel':rel},function(data,textStatus){	 
1006					if(textStatus=='success'){			 
1007						 
1008						  cargarValoracion(data,codigo, rel); 
1009							  
1010    
1011
1012				},"json"); 
1013
1014		 
1015		function cargarValoracion(data, codigo, rel) { 
1016			 
1017				var titulo = rel; 
1018				var keyVote = '<@liferayUi["message"] key="vote" />'; 
1019				var keyVotes = '<@liferayUi["message"] key="votes" />'; 
1020				var average = '<@liferayUi["message"] key="average" />'; 
1021				var html = "<div class=\"rating-label\">"+average+" ("; 
1022				html += data.valoracion.numeroVotaciones+" "; 
1023				html += (data.valoracion.numeroVotaciones==1)?keyVote:keyVotes; 
1024				html += ")"; 
1025				html +="</div>"; 
1026 
1027				 
1028				 
1029				for (var i = 1; i <= 5; i++)  
1030
1031						 
1032					var iconoEstrella = (i<=data.valoracion.valoracionMedia)?"icon-star":"icon-star-empty"; 
1033					html+="<span class=\"dont-intercept rating-element "+iconoEstrella+"\" rel=\""+ i +"\" title=\""+titulo+"\" ></span>"; 
1034					 
1035
1036				 
1037				//sustituye el html 
1038				$("#" + codigo).html(html);	 
1039			 
1040			 
1041
1042		 
1043		 
1044</script> 
1045</div>