If you are looking for an original way to complement your corporate event, Asturias offers you endless experiences in the heart of nature. From exciting activities such as horse riding, canoeing or water adventures such as paddle surfing. What's more, with these companies specialising in active tourism you can turn your event or incentive trip into a unique, adrenaline-filled experience.

Back Asturfly

An error occurred while processing the template.
The following has evaluated to null or missing:
==> assetVocabularyLocalService.fetchGroupVocabulary(themeDisplay.scopeGroupId, "Empresas de Actividades")  [in template "37703#37743#1558935" at line 26, column 18]

----
Tip: If the failing expression is known to 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 vocab = assetVocabularyLocalS...  [in template "37703#37743#1558935" at line 26, column 1]
----
1<#-- Services --> 
2<#assign assetEntryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/> 
4<#assign journalArticleResourceServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/> 
5<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
6<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
7 
8<#-- Reserved vbles --> 
9<#assign title = .vars['reserved-article-title'].data> 
10<#assign articleId=.vars["reserved-article-id"].data /> 
11<#assign description=.vars["reserved-article-description"].data /> 
12<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data /> 
13<#assign date=.vars["reserved-article-display-date"].data /> 
14<#assign request = .vars['request']> 
15 
16<#-- Init --> 
17<#assign assetEntry = journalTool.getAssetEntryByArticleId(groupId, articleId)> 
18<#assign journalArticle = journalTool.getJournalArticleByAssetEntry(assetEntry)> 
19<#assign articleURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()> 
20<#assign articleSocialBookmarks = themeDisplay.getThemeSetting("article-social-bookmarks")!> 
21<#assign layoutSetBannerPath = layoutTool.getLayoutSetBannerPath(groupId, themeDisplay.getLayout().isPrivateLayout())!> 
22<#assign articleMainImageThumbnail3 = dlTool.getThumbnail(smallImageUrl, "3", layoutSetBannerPath)! /> 
23<#assign articleMainImageThumbnail1 = dlTool.getThumbnail(smallImageUrl, "1")! /> 
24 
25<#-- Names category --> 
26<#assign vocab = assetVocabularyLocalService.fetchGroupVocabulary(themeDisplay.scopeGroupId, "Empresas de Actividades") /> 
27 
28<#assign ddmStructureNameNormalize = "template-${friendlyURLNormalizerTool.normalize(journalArticle.getDDMStructure().getName(localeUtil.getDefault()))}" /> 
29<#function sanitizeURL url> 
30	<#if !url?has_content> 
31		<#return "" /> 
32	</#if> 
33	<#assign urlTrimmed = url?trim /> 
34	<#if urlTrimmed?starts_with("javascript:") || urlTrimmed?starts_with("data:") || urlTrimmed?starts_with("vbscript:")> 
35		<#return "" /> 
36	</#if> 
37	<#return htmlUtil.escapeHREF(urlTrimmed) /> 
38</#function> 
39 
40<#function isExternalURL url> 
41	<#if !url?has_content> 
42		<#return false /> 
43	</#if> 
44	<#assign portalURLlc = themeDisplay.getPortalURL()?lower_case /> 
45	<#assign urlLC = url?lower_case /> 
46	<#assign isHttp = urlLC?starts_with("http://") || urlLC?starts_with("https://") /> 
47	<#assign isInternal = (url?starts_with("/")) || (isHttp && urlLC?starts_with(portalURLlc)) /> 
48	<#return isHttp && !isInternal /> 
49</#function>				 
50<#-- Build --> 
51<#if Nombre.data?has_content> 
52	<#assign title = Nombre.data> 
53</#if> 
54<#assign altImgDestacada = title /> 
55<#if AltImagenDestacada ??> 
56	<#if validator.isNotNull(AltImagenDestacada.getData())> 
57		<#assign altImgDestacada = AltImagenDestacada.getData() /> 
58	</#if> 
59</#if> 
60<#assign articleMainImageThumbnail3Safe = sanitizeURL(articleMainImageThumbnail3) /> 
61<#assign articleMainImageThumbnail1Safe = sanitizeURL(articleMainImageThumbnail1) /> 
62 
63<#-- Validaciones de TAB --> 
64<#assign serviciosData = (Informacion.Servicios.data)!"" /> 
65<#assign hasActividades = false /> 
66<#assign hasZonaActividad = ((Informacion.ZonaActividad.data)!)?has_content /> 
67<#if vocab??> 
68	<#list assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) as cat> 
69		<#if cat.vocabularyId == vocab.vocabularyId> 
70			<#assign hasActividades = true /> 
71			<#break> 
72		</#if> 
73	</#list> 
74</#if> 
75<#assign suplementoMascota = (AsturiasMascotas.SuplementoMascota.data)!"" /> 
76<#assign limitacionPeso = (AsturiasMascotas.LimitacionPeso.data)!"" /> 
77<#assign numeroMaximo = (AsturiasMascotas.NumeroMaximo.data)!"" /> 
78<#assign materialNecesario = (AsturiasMascotas.MaterialNecesario.data)!"" /> 
79<#assign suministroMaterial = (AsturiasMascotas.SuministroMaterial.data)!"" /> 
80<#assign admitePPP = (AsturiasMascotas.AdmitePPP.data)!"" /> 
81<#assign otrasMascotas = (AsturiasMascotas.OtrasMascotas.data)!"" /> 
82<#assign otrosAnimales = (AsturiasMascotas.OtrosAnimales.data)!"" /> 
83<#assign precioSuplemento = (AsturiasMascotas.PrecioSuplemento.data)!"" /> 
84<#assign detalleNormas = (AsturiasMascotas.DetalleNormas.data)!"" /> 
85 
86<#assign vocabMascotas = assetVocabularyLocalService.fetchGroupVocabulary(groupId, "Mascotas")! /> 
87<#assign actividadesMascotas = [] /> 
88<#if vocabMascotas?has_content> 
89	<#assign categoriasArticulo = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) /> 
90	<#list categoriasArticulo as cat> 
91		<#if cat.getVocabularyId() == vocabMascotas.getVocabularyId()> 
92			<#if cat.getParentCategoryId() != 0> 
93				<#assign parentCat = assetCategoryLocalService.fetchAssetCategory(cat.getParentCategoryId())! /> 
94				<#if parentCat?has_content && parentCat.getName() == "Actividades"> 
95					<#assign actividadesMascotas = actividadesMascotas + [cat] /> 
96				</#if> 
97			</#if> 
98		</#if> 
99	</#list> 
100</#if> 
101<#assign hasIconos = suplementoMascota?has_content || limitacionPeso?has_content || numeroMaximo?has_content || materialNecesario?has_content || suministroMaterial?has_content /> 
102<#assign hasActividadesMascotas = actividadesMascotas?has_content /> 
103<#assign hasNormas = admitePPP?has_content || otrasMascotas?has_content || detalleNormas?has_content /> 
104 
105<article class="template ${ddmStructureNameNormalize}" role="article"> 
106	<header class="article-header-wrapper row no-gutters"> 
107		<div class="article-header-container article-header-container-static"> 
108			<div class="container"> 
109				<div class="row no-gutters"> 
110					<div class="col-md-6"> 
111						<div class="article-image" style="background-image: url('${articleMainImageThumbnail3Safe}')" role="img" aria-label="${altImgDestacada}"> 
112							<img class="hide-accessible" src="${articleMainImageThumbnail3Safe}" alt="" /> 
113						</div> 
114					</div> 
115					<div class="article-info-wrapper col-md-6"> 
116						<div class="article-info"> 
117							<h2 class="article-title">${title}</h2> 
118							<div class="article-list-wrapper"> 
119								<ul class="article-list list-unstyled article-list-info"> 
120									<li class="article-list-item mb-4"> 
121										<span class="fas fa-map-marker-alt" aria-hidden="true"></span> 
122										<span class="hide-accessible">${languageUtil.get(request,"location")}</span> 
123										<span class="field-wrapper"> 
124											<#if Contacto.Concejo.data?has_content> 
125												<span class="important">${Contacto.Concejo.data}</span> 
126											</#if> 
127											<#if Contacto.Zona.data?has_content> 
128												<span class="text d-block">${Contacto.Zona.data}</span> 
129											</#if> 
130										</span> 
131									</li> 
132									<#if Contacto.Direccion?? && Contacto.Direccion.data?has_content || Contacto.CP?? && Contacto.CP.data?has_content || Contacto.Localidad?? && Contacto.Localidad.data?has_content> 
133										<li class="article-list-item"> 
134											<span class="far fa-address-card" aria-hidden="true"></span> 
135											<span class="hide-accessible">${languageUtil.get(request,"address")}</span> 
136											<span class="field-wrapper"> 
137												<span class="field">${languageUtil.get(request, "address")}:</span> 
138												<span class="text">${(Contacto.Direccion.data)!}</span><span aria-hidden="true"> ■ </span> 
139												<span class="text">${(Contacto.CP.data)!} - ${(Contacto.Localidad.data)!}</span> 
140											</span> 
141										</li> 
142									</#if> 
143									<#if Contacto.DireccionSedeAlternativa.data?has_content> 
144										<#list Contacto.DireccionSedeAlternativa.getSiblings() as dirAlt> 
145											<li class="article-list-item <#if dirAlt?is_last>mb-4</#if>"> 
146												<span class="far fa-address-card" aria-hidden="true"> 
147													<span class="hide-accessible">${languageUtil.get(request,"address")}</span> 
148												</span> 
149												<span class="field-wrapper"> 
150													<span class="field">${languageUtil.get(request, "address")}:</span> 
151													<span class="text">${dirAlt.getData()}</span> 
152												</span> 
153											</li> 
154										</#list> 
155									</#if> 
156									<#if Contacto.Telefono.data?has_content>									 
157										<li class="article-list-item"> 
158											<span class="fas fa-phone-alt" aria-hidden="true"></span> 
159											<span class="hide-accessible">${languageUtil.get(request, "phone")}</span> 
160											<span class="field-wrapper"> 
161												<span class="field">${languageUtil.get(request, "phone")}:</span> 
162												<#list Contacto.Telefono.getSiblings() as telephone> 
163													<#if telephone.data?has_content> 
164														<#assign rawTelefono = telephone.data?trim /> 
165														<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
166														<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
167														<#assign numberLength = numberTelefono?length /> 
168														<#if numberLength == 9> 
169															<#assign hrefNumber = "+34${numberTelefono}" /> 
170														<#else> 
171															<#assign hrefNumber = numberTelefono /> 
172														</#if> 
173														<span class="text"> 
174															<a href="tel:${htmlUtil.escapeHREF(hrefNumber)}" aria-label="${languageUtil.format(request, 'call', rawTelefono)}"> 
175																${rawTelefono} 
176															</a> 
177															<#if !telephone?is_last><span aria-hidden="true"> | </span></#if> 
178														</span> 
179													</#if> 
180												</#list> 
181											</span> 
182										</li> 
183									</#if> 
184									<#assign whatsappData = (Contacto.whatsapp.data)!"" /> 
185									<#if whatsappData?has_content> 
186										<#assign cleanNumber = whatsappData?replace(" ", "")?replace("-", "")?replace("(", "")?replace(")", "") /> 
187										<#assign whatsappNumber = cleanNumber /> 
188										<#if !cleanNumber?starts_with("+") && !cleanNumber?starts_with("34")> 
189											<#assign whatsappNumber = "34${cleanNumber}" /> 
190										<#elseif cleanNumber?starts_with("34") && !cleanNumber?starts_with("+")> 
191											<#assign whatsappNumber = cleanNumber /> 
192										<#elseif cleanNumber?starts_with("+")> 
193											<#assign whatsappNumber = cleanNumber?substring(1) /> 
194										</#if> 
195										<#assign whatsappURLRaw = "https://wa.me/${whatsappNumber}" /> 
196										<#assign whatsappURL = sanitizeURL(whatsappURLRaw) /> 
197										<#if whatsappURL?has_content> 
198											<li class="article-list-item"> 
199												<span class="fab fa-whatsapp" aria-hidden="true"></span> 
200												<span class="hide-accessible">WhatsApp</span> 
201												<span class="field-wrapper"> 
202													<span class="field">WhatsApp:</span> 
203													<span class="text"> 
204														<a href="${whatsappURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.get(request, 'contact-via-whatsapp')} ${whatsappData} - ${languageUtil.get(request, 'opens-new-window')}"> 
205															${whatsappData} 
206															<span class="fas fa-external-link-alt ml-1 font-size-08" aria-hidden="true"></span> 
207														</a> 
208													</span> 
209												</span> 
210											</li> 
211										</#if> 
212									</#if> 
213									<#if Contacto.Email?? && Contacto.Email.data?has_content> 
214										<li class="article-list-item"> 
215											<span class="far fa-envelope" aria-hidden="true"></span> 
216											<span class="hide-accessible">${languageUtil.get(request,"email")}</span> 
217											<span class="field-wrapper"> 
218												<span class="field">${languageUtil.get(request, "email")}:</span> 
219												<span class="text"> 
220													<#list Contacto.Email.getSiblings() as Item> 
221														<#if Item.data?trim?has_content> 
222															<#assign emailAddress = Item.data?trim /> 
223															<a href="mailto:${htmlUtil.escapeHREF(emailAddress)}" aria-label="${languageUtil.format(request,'email-to', emailAddress)}"> 
224																${emailAddress} 
225															</a> 
226															<#if Item_has_next>, </#if> 
227														</#if> 
228													</#list> 
229												</span> 
230											</span> 
231										</li> 
232									</#if> 
233									<#if Contacto.Web?? && Contacto.Web.getSiblings()?has_content> 
234										<#assign hasValidURL = false /> 
235										<#list Contacto.Web.getSiblings() as web> 
236											<#if web.data?trim?has_content> 
237												<#assign linkURL = web.data?trim /> 
238												<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
239													<#assign hasValidURL = true /> 
240													<#break> 
241												</#if> 
242											</#if> 
243										</#list> 
244										<#if hasValidURL> 
245											<li class="article-list-item web"> 
246												<span class="fas fa-link" aria-hidden="true"></span> 
247												<span class="hide-accessible">${languageUtil.get(request, "site")}</span> 
248											<span class="field-wrapper d-inline-flex flex-wrap align-items-center gap-2"> 
249													<span class="field mr-1">${languageUtil.get(request, "site")}:</span> 
250													<#assign webCount = 0 /> 
251													<#list Contacto.Web.getSiblings() as web> 
252														<#if web.data?trim?has_content> 
253															<#assign linkURL = web.data?trim /> 
254															<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
255																<#assign webCount = webCount + 1 /> 
256															</#if> 
257														</#if> 
258													</#list> 
259													<#assign validIndex = 0 /> 
260													<#list Contacto.Web.getSiblings() as web> 
261														<#if web.data?trim?has_content> 
262															<#assign linkURL = web.data?trim /> 
263															<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
264																<#if !stringUtil.startsWith(linkURL, "http://") && !stringUtil.startsWith(linkURL, "https://")> 
265																	<#assign linkURL = "https://${linkURL}" /> 
266																</#if> 
267																<#assign validIndex = validIndex + 1 /> 
268																<#assign linkNumber = validIndex /> 
269																<a href="${htmlUtil.escapeHREF(linkURL)}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.get(request, 'site')} ${linkNumber} - ${htmlUtil.escape(title)} (${languageUtil.get(request, 'opens-new-window')})" class="text d-inline-flex align-items-center gap-1 text-nowrap"> 
270																	<#if webCount gt 1> 
271																		${languageUtil.get(request, "visit")} ${linkNumber} 
272																	<#else> 
273																		${languageUtil.get(request, "visit")} 
274																	</#if> 
275																	<span class="fas fa-external-link-alt ml-1 font-size-08" aria-hidden="true"></span> 
276																</a> 
277																<#if validIndex lt webCount> 
278																	<span class="mx-2 text-muted">|</span> 
279																</#if> 
280															</#if> 
281														</#if> 
282													</#list> 
283												</span> 
284											</li> 
285										</#if> 
286									</#if> 
287									<#if hasActividades?has_content> 
288										<li class="article-list-item web"> 
289											<span class="fas fa-clock" aria-hidden="true"></span> 
290											<span class="field-wrapper"> 
291												<span class="field">${languageUtil.get(request, "infoasturias-actividades")}:</span> 
292												<span class="text"> 
293													<a href="#tabContent2" class="internal-tab-link" data-tab-heading="tabHeading2" data-tab-content="tabContent2" aria-label="${languageUtil.get(request, 'infoasturias-actividadess')}"> 
294														${languageUtil.get(request, "view")} 
295														<span class="fas fa-caret-right ml-1 font-size-08" aria-hidden="true"></span> 
296													</a> 
297												</span> 
298											</span> 
299										</li> 
300									</#if> 
301									<#assign accesibilidadPath = (Informacion.Accesibilidad.data)!"" /> 
302									<#if accesibilidadPath?has_content> 
303										<#attempt> 
304											<#assign dlFileEntry = dlTool.getDLFileEntryByPath(accesibilidadPath) /> 
305											<#if dlFileEntry??> 
306												<#assign downloadURLRaw = "/documents/${groupId}/${dlFileEntry.getUuid()}" /> 
307												<#assign downloadURL = sanitizeURL(downloadURLRaw) /> 
308												<#if downloadURL?has_content> 
309													<#assign fileName = dlFileEntry.getFileName() /> 
310													<#assign fileSize = dlFileEntry.getSize() /> 
311													<#assign displaySize = (fileSize > 1048576)?then((fileSize / 1048576)?string("0.##") + " MB", ((fileSize / 1024)?round) + " KB") /> 
312													<li class="article-list-item document document-pdf"> 
313														<span class="far fa-file-pdf" aria-hidden="true"></span> 
314														<span class="hide-accessible">${languageUtil.get(request,"infoasturias-accesibilidad")}</span> 
315														<span class="field-wrapper"> 
316															<span class="field">${languageUtil.get(request, "infoasturias-accesibilidad")}:</span> 
317															<span class="text"> 
318																<a href="${downloadURL}" download="${fileName}" aria-label="${languageUtil.get(request, 'infoasturias-accesibilidad')}, PDF, ${displaySize}"> 
319																	${languageUtil.get(request, "infoasturias-accesibilidad")} 
320																	<span class="text-muted small ml-1" aria-hidden="true">(${displaySize})</span> 
321																	<span class="fas fa-download ml-1" aria-hidden="true"></span> 
322																</a>	 
323															</span> 
324														</span>		 
325													</li> 
326												</#if> 
327											</#if> 
328											<#recover> 
329										</#attempt> 
330									</#if> 
331									<#if Documentos?? && Documentos.Archivo?? && Documentos.Archivo.data?has_content> 
332										<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Documentos.Archivo.data) /> 
333										<#if validator.isNotNull(dlFileEntry)> 
334											<#assign ext = dlFileEntry.getExtension()! /> 
335											<li class="article-list-item document document-${htmlUtil.escape(ext)}"> 
336												<span class="fas fa-file" aria-hidden="true"></span> 
337												<span class="hide-accessible">${languageUtil.get(request,"related-documents")}</span> 
338												<span class="field-wrapper"> 
339													<span class="field">${languageUtil.get(request, "related-documents")}:</span> 
340													<span class="text"> 
341														<#list Documentos.Archivo.getSiblings() as Item> 
342															<#if Item.data?has_content> 
343																<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Item.data) /> 
344																<#if validator.isNotNull(dlFileEntry)> 
345																	<#assign downloadURL = sanitizeURL("/documents/${groupId}/${dlFileEntry.getUuid()}") /> 
346																	<#assign fileSize = dlFileEntry.getSize() /> 
347																	<#assign fileSizeKB = (fileSize / 1024)?round /> 
348																	<#assign fileExt = dlFileEntry.getExtension()?upper_case /> 
349																	<#if Item.ArchivoTitulo.data?has_content> 
350																		<#assign fileName = Item.ArchivoTitulo.data /> 
351																	<#else> 
352																		<#assign fileName = dlFileEntry.getTitle() /> 
353																	</#if> 
354																	<#assign downloadLabel = languageUtil.get(request, 'download') /> 
355																	<#assign formatLabel = languageUtil.get(request, 'format') /> 
356																	<#assign sizeLabel = languageUtil.get(request, 'size') /> 
357																	<#assign kbLabel = languageUtil.get(request, 'kb') /> 
358																	<#assign ariaLabelText = "${downloadLabel} ${fileName}, ${formatLabel} ${fileExt}, ${sizeLabel} ${fileSizeKB} ${kbLabel}" /> 
359																	<a href="${downloadURL}" download aria-label="${ariaLabelText}"> 
360																		${fileName} 
361																		<span class="file-info" aria-hidden="true"> 
362																			(${fileExt}, ${fileSizeKB} KB) 
363																		</span> 
364																		<span class="fas fa-download ml-1" aria-hidden="true"></span> 
365																	</a> 
366																	<#if Item_has_next>, </#if> 
367																</#if> 
368															</#if> 
369														</#list> 
370													</span> 
371												</span>		 
372											</li> 
373										</#if> 
374									</#if>			 
375								</ul> 
376							</div> 
377							<#if (RedesSociales.Facebook.data)!?has_content || (RedesSociales.Twitter.data)!?has_content || (RedesSociales.Instagram.data)!?has_content || (RedesSociales.Youtube.data)!?has_content || (RedesSociales.TikTok.data)!?has_content || (RedesSociales.Pinterest.data)!?has_content || (RedesSociales.Rss.data)!?has_content || (RedesSociales.OtrosCanales.NombreCanal.data)!?has_content> 
378								<div class="article-socials-wrapper mt-4"> 
379									<div class="socials-wrapper"> 
380									<div class="socials"> 
381										<ul class="list-inline items socials"> 
382											<#if RedesSociales.Facebook.data?has_content> 
383												<#assign linkURLRaw = RedesSociales.Facebook.data?trim /> 
384												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
385													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
386												</#if> 
387												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
388												<#if linkURL?has_content> 
389													<li class="list-inline-item item facebook"> 
390														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Facebook')} ${languageUtil.get(request,'opens-new-window')}"> 
391														  <span class="fab fa-facebook-f" aria-hidden="true"></span> 
392														  <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span> 
393														</a> 
394													</li> 
395												</#if> 
396											</#if> 
397											<#if RedesSociales.Twitter.data?has_content> 
398												<#assign linkURLRaw = RedesSociales.Twitter.data?trim /> 
399												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
400													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
401												</#if> 
402												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
403												<#if linkURL?has_content> 
404													<li class="list-inline-item item twitter"> 
405														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','X (Twitter)')} ${languageUtil.get(request,'opens-new-window')}"> 
406															<span class="fa-brands fa-x-twitter" aria-hidden="true"></span> 
407															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','X (Twitter)')}</span> 
408														</a> 
409													</li> 
410												</#if> 
411											</#if> 
412											<#if RedesSociales.Instagram.data?has_content> 
413												<#assign linkURLRaw = RedesSociales.Instagram.data?trim /> 
414												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
415													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
416												</#if> 
417												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
418												<#if linkURL?has_content> 
419													<li class="list-inline-item item instagram"> 
420														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Instagram')} ${languageUtil.get(request,'opens-new-window')}"> 
421															<span class="fab fa-instagram" aria-hidden="true"></span> 
422															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span> 
423														</a> 
424													</li> 
425												</#if> 
426											</#if> 
427											<#if RedesSociales.Youtube.data?has_content> 
428												<#assign linkURLRaw = RedesSociales.Youtube.data?trim /> 
429												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
430													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
431												</#if> 
432												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
433												<#if linkURL?has_content> 
434													<li class="list-inline-item item youtube"> 
435														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','YouTube')} ${languageUtil.get(request,'opens-new-window')}"> 
436															<span class="fab fa-youtube" aria-hidden="true"></span> 
437															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','YouTube')}</span> 
438														</a> 
439													</li> 
440												</#if> 
441											</#if> 
442											<#if RedesSociales.Tiktok?? && RedesSociales.Tiktok.data?has_content> 
443												<#assign linkURLRaw = RedesSociales.Tiktok.data?trim /> 
444												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
445													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
446												</#if> 
447												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
448												<#if linkURL?has_content> 
449													<li class="list-inline-item item tiktok"> 
450														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','TikTok')} ${languageUtil.get(request,'opens-new-window')}"> 
451															<span class="fab fa-tiktok" aria-hidden="true"></span> 
452															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','TikTok')}</span> 
453														</a> 
454													</li> 
455												</#if> 
456											</#if> 
457											<#if RedesSociales.Pinterest.data?has_content> 
458												<#assign linkURLRaw = RedesSociales.Pinterest.data?trim /> 
459												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
460													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
461												</#if> 
462												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
463												<#if linkURL?has_content> 
464													<li class="list-inline-item item pinterest"> 
465														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Pinterest')} ${languageUtil.get(request,'opens-new-window')}"> 
466															<span class="fab fa-pinterest-p" aria-hidden="true"></span> 
467															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span> 
468														</a> 
469													</li> 
470												</#if> 
471											</#if> 
472											<#if RedesSociales.Rss.data?has_content> 
473												<#assign linkURLRaw = RedesSociales.Rss.data?trim /> 
474												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
475													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
476												</#if> 
477												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
478												<#if linkURL?has_content> 
479													<li class="list-inline-item item rss"> 
480														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','RSS')} ${languageUtil.get(request,'opens-new-window')}"> 
481															<span class="fas fa-rss" aria-hidden="true"></span> 
482															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','RSS')}</span> 
483														</a> 
484													</li> 
485												</#if> 
486											</#if> 
487											<#if RedesSociales.OtrosCanales.NombreCanal??> 
488												<#list RedesSociales.OtrosCanales.NombreCanal.getSiblings() as Canal> 
489													<#if Canal.CanalUrl.data?trim?has_content && Canal.data?trim?has_content> 
490														<#assign linkURLRaw = Canal.CanalUrl.data?trim /> 
491														<#assign canalName = Canal.data?trim /> 
492														<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
493															<#assign linkURLRaw = "https://${linkURLRaw}" /> 
494														</#if> 
495														<#assign linkURL = sanitizeURL(linkURLRaw) /> 
496														<#if linkURL?has_content> 
497															<li class="list-inline-item item other-channel"> 
498																<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x', canalName)} ${languageUtil.get(request,'opens-new-window')}"> 
499																	<span class="fas fa-share-alt" aria-hidden="true"></span> 
500																	<span class="hide-accessible">${languageUtil.format(request,'go-to-x', canalName)}</span> 
501																</a> 
502															</li> 
503														</#if> 
504													</#if> 
505												</#list> 
506											</#if> 
507											</ul> 
508										</div> 
509									</div> 
510								</div> 
511							</#if> 
512						</div> 
513					</div> 
514				</div> 
515			</div> 
516		</div>  
517	</header> 
518	 
519	<div class="sheet sheet-lg"> 
520		<#if Informacion.Titulo.data?has_content> 
521			<div class="article-great"> 
522				${Informacion.Titulo.data} 
523			</div>	 
524		</#if> 
525		<#assign hasTab1 = Informacion.Texto.data?has_content> 
526		<#assign hasTab2 = hasActividades || hasZonaActividad /> 
527		<#assign hasTab3 = serviciosData?has_content> 
528		<#assign hasTab4 = Contacto.Temporadas?? && Contacto.Temporadas.data?has_content || Contacto.FechasDeCierre?? && Contacto.FechasDeCierre.data?has_content> 
529		<#assign hasTab5 = hasIconos || hasActividadesMascotas || hasNormas /> 
530		<#assign hasTab6 = Geolocalizacion.Coordenadas.data?has_content>		 
531		<#assign showFirstTab = true>	 
532		<div class="article-accordion accordion"> 
533			<#if Visualizador.Slide.getData()?has_content> 
534				<h3 class="h3">${languageUtil.get(locale,"model.resource.com.liferay.portlet.imagegallery")}</h3>			 
535				<div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>"> 
536					<#list Visualizador.Slide.getSiblings() as Slide> 
537						<#if validator.isNotNull(Slide.getData()) || validator.isNotNull(Slide.SlideUrl.getData())> 
538							<#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! /> 
539							<#assign slideThumbnail2Raw = dlTool.getThumbnailByJSON(Slide.data, "2")! /> 
540							<#assign slidePathRaw = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! /> 
541							<#assign slideUrlRaw = Slide.SlideUrl.data /> 
542							<#if slideUrlRaw?has_content> 
543								<#assign slideTitleRaw = "${languageUtil.get(request, 'video')} ${Slide?index}" /> 
544								<#if Slide.SlideTitulo.data?has_content> 
545									<#assign slideTitleRaw = Slide.SlideTitulo.data />   
546								</#if> 
547								<#assign slideUrl = stringUtil.replace(slideUrlRaw, 'watch?v=', 'embed/') /> 
548								<#assign slideThumbnail2Raw = stringUtil.replace(slideUrl, 'www', 'img') /> 
549								<#assign slideThumbnail2Raw = stringUtil.replace(slideThumbnail2Raw, 'embed', 'vi') /> 
550								<#assign slideThumbnail2Raw = '${slideThumbnail2Raw}/mqdefault.jpg' /> 
551								<#if slideUrl?contains("vimeo")> 
552									<#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') /> 
553									<#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') /> 
554									<#if slideVimeoId?has_content> 
555										<#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' /> 
556										<#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! /> 
557										<#if slideVimeoJsonContent?has_content> 
558											<#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) /> 
559											<#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) /> 
560											<#assign slideThumbnail2Raw = slideVimeoJsonItem.thumbnail_medium /> 
561										</#if> 
562									</#if> 
563								</#if> 
564								<#assign slideUrlSafe = sanitizeURL(slideUrl) /> 
565								<#assign slideThumbnail2Safe = sanitizeURL(slideThumbnail2Raw) /> 
566								<#assign slideTitle = htmlUtil.escape(slideTitleRaw) /> 
567								<#if slideUrlSafe?has_content && slideThumbnail2Safe?has_content> 
568									<div id="slide-${Slide?index}" class="slide"> 
569										<a class="card card-simple card-video" href="#" role="button" tabindex="0" onclick="event.preventDefault(); showDialogIframe('${slideUrlSafe}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe'); return false;" aria-label="${languageUtil.format(request, 'open-video-x', slideTitle)}"> 
570											<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2Safe}')" role="img" aria-label="${slideTitle}"> 
571												<img class="hide-accessible" src="${slideThumbnail2Safe}" alt="" /> 
572											</span> 
573										</a> 
574									</div> 
575								</#if> 
576							<#else> 
577								<#assign slideTitleRaw = "${languageUtil.get(request, 'image')} ${Slide?index}" /> 
578								<#if Slide.SlideTitulo.data?has_content> 
579									<#assign slideTitleRaw = Slide.SlideTitulo.data />   
580								</#if> 
581								 
582								<#assign slideAltRaw = slideTitleRaw />									 
583								<#if Slide.ImagenAlt??>							 
584									<#if Slide.ImagenAlt.data?has_content> 
585										<#assign slideAltRaw = Slide.ImagenAlt.data />   
586									</#if> 
587								</#if> 
588								<#assign slidePath = sanitizeURL(slidePathRaw) /> 
589								<#assign slideThumbnail2Safe = sanitizeURL(slideThumbnail2Raw) /> 
590								<#assign slideTitle = htmlUtil.escape(slideTitleRaw) /> 
591								<#assign slideAlt = htmlUtil.escape(slideAltRaw) /> 
592								<#if slidePath?has_content && slideThumbnail2Safe?has_content> 
593								  <div class="slide"> 
594									<a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}" aria-label="${languageUtil.format(request, 'view-image-x', slideTitle)}"> 
595										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2Safe}')" role="img" aria-label="${slideAlt}"> 
596											<img class="hide-accessible" src="${slideThumbnail2Safe}" alt="" /> 
597										</span> 
598									</a> 
599								  </div> 
600								</#if> 
601							</#if> 
602						</#if> 
603					</#list> 
604				</div> 
605			</#if> 
606		 
607			<#if hasTab1> 
608				<div id="tab1" class="article-section accordion-item"> 
609					<a href="#tabContent1" id="tabHeading1" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent1" data-toggle="liferay-collapse"> 
610						<h3 class="h3 accordion-header"> 
611							${languageUtil.get(request,'info')} 
612						</h3> 
613					</a> 
614					<div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" role="region" aria-labelledby="tabHeading1"> 
615						<#if Informacion.Texto.data?has_content> 
616							${Informacion.Texto.data} 
617						</#if> 
618					</div> 
619				</div> 
620				<#assign showFirstTab = false> 
621			</#if> 
622			 
623			<#if hasTab2> 
624				<div id="tab2" class="article-section accordion-item"> 
625					<a href="#tabContent2" id="tabHeading2" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent2" data-toggle="liferay-collapse"> 
626						<h3 class="h3 accordion-header"> 
627							${languageUtil.get(request,'infoasturias-actividades')} 
628						</h3> 
629					</a> 
630					<div id="tabContent2" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2" role="region"> 
631						<#if hasActividades> 
632							<#assign actividadCats = [] /> 
633							<#list assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) as cat> 
634								<#if vocab?? && cat.vocabularyId == vocab.vocabularyId> 
635									<#assign actividadCats = actividadCats + [cat] /> 
636								</#if> 
637							</#list> 
638							<#if actividadCats?has_content> 
639								<ul class="row list-unstyled article-list article-list-characteristics" role="list" aria-label="${languageUtil.get(request,'infoasturias-actividades')}"> 
640									<#list actividadCats as cat> 
641										<li class="col-12 col-sm-6 col-lg-4 mb-2 d-flex align-items-center"> 
642											<span class="fas fa-check text-success flex-shrink-0" aria-hidden="true"></span> 
643											<span class="value pl-2">${cat.getTitle(locale)}</span> 
644										</li> 
645									</#list> 
646								</ul> 
647							</#if> 
648						</#if> 
649						<#if hasZonaActividad> 
650							<div class="mb-4 title-normas <#if hasActividades>mt-5</#if>"> 
651								${languageUtil.get(request,'infoasturias-turismo-activo-zona-actividades')} 
652							</div> 
653							<#assign zonaContent = Informacion.ZonaActividad.data /> 
654							<#assign cleanZona = zonaContent?replace('<[^>]+>', '', 'r')?trim /> 
655							<#assign ubicaciones = cleanZona?split(',') /> 
656							<#if ubicaciones?has_content> 
657								<ul class="row list-unstyled font-size-09" role="list" aria-label="${languageUtil.get(request,'infoasturias-turismo-activo-zona-actividades')}"> 
658									<#list ubicaciones as ubicacion> 
659										<#assign ubicacionClean = ubicacion?trim /> 
660										<#if ubicacionClean?has_content> 
661											<li class="col-12 col-sm-6 col-lg-4 mb-2 d-flex align-items-center"> 
662												<span class="fas fa-map-pin text-success flex-shrink-0 small" aria-hidden="true"></span> 
663												<span class="pl-2">${ubicacionClean}</span> 
664											</li> 
665										</#if> 
666									</#list> 
667								</ul> 
668							</#if> 
669						</#if> 
670					</div> 
671				</div> 
672				<#assign showFirstTab = false /> 
673			</#if> 
674 
675			<#if hasTab3> 
676				<div id="tab3" class="article-section accordion-item"> 
677					<a href="#tabContent3" id="tabHeading3" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent3" data-toggle="liferay-collapse"> 
678						<h3 class="h3 accordion-header"> 
679							${languageUtil.get(request,'infoasturias-servicios')} 
680						</h3> 
681					</a> 
682					<div id="tabContent3" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3" role="region"> 
683						<#assign serviciosClean = serviciosData 
684							?replace('&nbsp;', ' ') 
685							?replace('<br />\n\t ', '') 
686							?replace('<br />', '') 
687							?replace('<ul>', '<ul role="list">') /> 
688						${serviciosClean} 
689					</div> 
690				</div> 
691				<#assign showFirstTab = false /> 
692			</#if> 
693			 
694			<#if hasTab4> 
695				<div id="tab4" class="article-section accordion-item"> 
696					<a href="#tabContent4" id="tabHeading4" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent4" data-toggle="liferay-collapse"> 
697						<h3 class="h3 accordion-header"> 
698							${languageUtil.get(request,'infoasturias-temporadas')} 
699						</h3> 
700					</a> 
701					<div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4" role="region"> 
702						<#if Contacto.Temporadas.data?has_content> 
703							<div class="mb-4 d-flex align-items-start"> 
704								<span class="fas fa-calendar color-green mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
705								<div class="flex-grow-1"> 
706									<span class="hide-accessible">${languageUtil.get(request,"infoasturias-temporadas")}</span> 
707									${Contacto.Temporadas.data} 
708								</div> 
709							</div> 
710						</#if> 
711						<#if Contacto.FechasDeCierre.data?has_content> 
712							<div class="mt-4"> 
713								<span class="hide-accessible">${languageUtil.get(request,"infoasturias-fechas-de-cierre")}</span> 
714								<div class="mb-2 d-flex align-items-start"> 
715									<span class="fas fa-door-open color-green mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
716									<span class="important flex-grow-1">${languageUtil.get(request,'infoasturias-fechas-de-cierre')}:</span> 
717								</div> 
718								<div class="pl-4"> 
719									${Contacto.FechasDeCierre.data} 
720								</div> 
721							</div> 
722						</#if> 
723					</div> 
724				</div> 
725				<#assign showFirstTab = false /> 
726			</#if>	 
727		 
728			<#if hasTab5> 
729				<div id="tab5" class="article-section accordion-item"> 
730					<a href="#tabContent5" id="tabHeading5" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent5" data-toggle="liferay-collapse"> 
731						<h3 class="h3 accordion-header"> 
732							${languageUtil.get(request,'infoasturias-info-mascotas')} 
733						</h3> 
734					</a> 
735					<div id="tabContent5" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading5" role="region"> 
736						<#if hasIconos> 
737							<div class="list-iconos mb-3 d-flex flex-wrap justify-content-center"> 
738								<#if suplementoMascota?has_content> 
739									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
740										<#if suplementoMascota == "Si"> 
741											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Suplemento por mascota") /> 
742											<#if imgArray?has_content && imgArray[0]?has_content> 
743												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-con-suplemento')}" loading="lazy"></div> 
744												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-con-suplemento')}</span> 
745											</#if> 
746										<#else> 
747											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Sin suplemento por mascota") /> 
748											<#if imgArray?has_content && imgArray[0]?has_content> 
749												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-suplemento')}" loading="lazy"></div> 
750												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-suplemento')}</span> 
751											</#if> 
752										</#if> 
753									</div> 
754								</#if> 
755								<#if limitacionPeso?has_content> 
756									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
757										<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Limitación de tamaño") /> 
758										<#if imgArray?has_content && imgArray[0]?has_content> 
759											<div> 
760												<img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-peso')}" loading="lazy"> 
761												<span class="value">${limitacionPeso}</span> 
762											</div> 
763											<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-peso')}</span> 
764										</#if> 
765									</div> 
766								</#if> 
767								<#if numeroMaximo?has_content> 
768									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
769										<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Número máximo de perros por persona") /> 
770										<#if imgArray?has_content && imgArray[0]?has_content> 
771											<div> 
772												<img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}" loading="lazy"> 
773												<span class="value-icono">${numeroMaximo}</span> 
774											</div> 
775											<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}</span> 
776										</#if> 
777									</div> 
778								</#if> 
779								<#if materialNecesario?has_content> 
780									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
781										<#if materialNecesario == "Si"> 
782											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Hace falta material para la actividad") /> 
783											<#if imgArray?has_content && imgArray[0]?has_content> 
784												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-material')}" loading="lazy"></div> 
785												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-material')}</span> 
786											</#if> 
787										<#else> 
788											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "No hace falta material para la actividad") /> 
789											<#if imgArray?has_content && imgArray[0]?has_content> 
790												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-material')}" loading="lazy"></div> 
791												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-material')}</span> 
792											</#if> 
793										</#if> 
794									</div> 
795								</#if> 
796								<#if materialNecesario == "Si" && suministroMaterial?has_content> 
797									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
798										<#if suministroMaterial == "Si"> 
799											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Suministran material") /> 
800											<#if imgArray?has_content && imgArray[0]?has_content> 
801												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-suministran-material')}" loading="lazy"></div> 
802												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-suministran-material')}</span> 
803											</#if> 
804										<#else> 
805											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "No suministran material") /> 
806											<#if imgArray?has_content && imgArray[0]?has_content> 
807												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-suministran-material')}" loading="lazy"></div> 
808												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-suministran-material')}</span> 
809											</#if> 
810										</#if> 
811									</div> 
812								</#if> 
813							</div> 
814						</#if> 
815						<#if hasActividadesMascotas> 
816							<div class="article-info-table mb-2"> 
817								<h4 class="mb-4 text-success text-center article-info-border"> 
818									${languageUtil.get(request,'infoasturias-actividades-mascotas')} 
819								</h4> 
820								<ul class="row list-unstyled article-list mb-5"  
821									role="list" 
822									aria-label="${languageUtil.get(request,'infoasturias-actividades-mascotas')}"> 
823									<#list actividadesMascotas as actividad> 
824										<li class="col-12 col-sm-6 col-lg-4 mb-2 d-flex align-items-center"> 
825											<span class="fas fa-check text-success flex-shrink-0" aria-hidden="true"></span> 
826											<span class="value pl-1">${actividad.getTitle(locale)}</span> 
827										</li> 
828									</#list> 
829								</ul> 
830								<#if hasNormas> 
831									<div class="normas-mascotas"> 
832										<h4 class="mb-4 text-success text-center article-info-border"> 
833											${languageUtil.get(request,'infoasturias-normas-mascotas')} 
834										</h4> 
835										<ul class="list-unstyled" role="list"> 
836											<#if admitePPP?has_content> 
837												<li class="d-flex align-items-start mb-2"> 
838													<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
839													<span class="text-rule"> 
840														<#if admitePPP == "Si"> 
841															${languageUtil.get(request,'infoasturias-mascotas-ppp')}. 
842														<#else> 
843															${languageUtil.get(request,'infoasturias-mascotas-no-ppp')}. 
844														</#if> 
845													</span> 
846												</li> 
847											</#if> 
848											<#if otrasMascotas?has_content> 
849												<li class="d-flex align-items-start mb-2"> 
850													<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
851													<span class="text-rule"> 
852														<#if otrasMascotas == "Si"> 
853															${languageUtil.get(request,'infoasturias-otras-mascotas')}: 
854															<#if otrosAnimales?has_content> 
855																<strong>${otrosAnimales}</strong> 
856															</#if> 
857														<#else> 
858															${languageUtil.get(request,'infoasturias-no-otras-mascotas')}. 
859														</#if> 
860													</span> 
861												</li> 
862											</#if> 
863											<#if precioSuplemento?has_content> 
864												<li class="d-flex align-items-start mb-2"> 
865													<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
866													<span class="text-rule"> 
867														${languageUtil.get(request,'infoasturias-mascotas-suplemento')}:  
868														<strong>${precioSuplemento}€</strong> 
869													</span> 
870												</li> 
871											</#if> 
872											<#if detalleNormas?has_content> 
873												<#assign normasParagraphs = detalleNormas?split('</p>') /> 
874												<#list normasParagraphs as parrafo> 
875													<#if parrafo?trim?has_content> 
876														<#assign cleanParrafo = parrafo?replace('<p>', '')?replace('<p[^>]*>', '', 'r')?trim /> 
877														<#if cleanParrafo?has_content> 
878															<li class="d-flex align-items-start mb-2"> 
879																<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
880																<span class="text-rule">${cleanParrafo}</span> 
881															</li> 
882														</#if> 
883													</#if> 
884												</#list> 
885											</#if>									 
886										</ul> 
887									</div> 
888								</#if> 
889							</div> 
890						</#if> 
891					</div> 
892				</div> 
893				<#assign showFirstTab = false /> 
894			</#if> 
895			<#if hasTab6> 
896				<#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
897				<div id="tab6" class="article-section article-section-map accordion-item"> 
898					<a href="#tabContent6" id="tabHeading6" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent6" data-toggle="liferay-collapse"> 
899						<h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-how-to-get')}</h3> 
900					</a> 
901					<div id="tabContent6" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading6" role="region"> 
902						<div id="article-map-wrapper-${articleId}" class="article-map-wrapper">  
903							<div id="article-map-content-${articleId}" style="width: 100%; height: 500px; z-index:1" role="application" aria-label="${languageUtil.format(request,'infoasturias-mapa-de', title)}"><!-- MAP --></div> 
904							<div class="hide-accessible" aria-live="polite"> 
905								<p>${languageUtil.get(request,'first-name')}: ${title}</p> 
906								<p>GPS: ${Geolocalizacion.Coordenadas.data}</p> 
907								<#if (Contacto.Direccion.data)?has_content || ((Contacto.CP.data)?has_content) || ((Contacto.Localidad.data)?has_content)> 
908									<p>${languageUtil.get(request,'address')}: ${((Contacto.Direccion.data)!)?js_string} ■ ${((Contacto.CP.data)!)?js_string} - ${((Contacto.Localidad.data)!)?js_string}</p> 
909								</#if> 
910							</div>								 
911							<div class="article-map-form">  
912								<div class="name important">${title}</div> 
913								<div class="gps"><span class="label">GPS:</span> <span class="value important">${Geolocalizacion.Coordenadas.data}</span></div> 
914								<form action="https://maps.google.es/maps" method="get" target="_blank"> 
915									<input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}"> 
916									<label for="saddrText"><span class="label hide-accessible">${languageUtil.get(request,'infoasturias-insert-from')}: </span></label> 
917									<label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label> 
918									<input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
919									<input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
920									<button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} &raquo;</button> 
921								</form> 
922							</div> 
923						</div> 
924						<script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script> 
925						<script type="text/javascript"> 
926							AUI().ready('aui-base', function(A){ 
927								var lat = ${coordenadas[0]}, 
928									lng = ${coordenadas[1]}, 
929									zoom = 16; 
930								mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16}); 
931 
932								//Marker 
933								var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png'; 
934								var defaultIcon = L.icon({ 
935									iconUrl: defaultIconTheme, 
936									iconSize:     [36, 53], 
937									iconAnchor:   [18, 53], 
938									iconShadow:   [0,0], 
939									popupAnchor:  [0, -30] 
940								}); 
941								var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent); 
942								 
943								var contentString = '<div class="row">'; 
944								contentString += '<div class="col-12">'; 
945								contentString += '<div class="h4">${htmlUtil.escape(title)}</div>'; 
946								contentString += '</div>'; 
947								contentString += '</div>'; 
948								 
949								contentString += '<div class="row">'; 
950								contentString += '<div class="col-12">'; 
951								<#if validator.isNotNull(articleMainImageThumbnail1Safe)> 
952									contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1Safe}" alt="$title"/>'; 
953								</#if> 
954								contentString += '<dl class="mb-0">'; 
955								<#if (Contacto.Direccion.data)?has_content || ((Contacto.CP.data)?has_content) || ((Contacto.Localidad.data)?has_content)> 
956									contentString += '<dt class="important">${languageUtil.get(request,"address")}</dt>'; 
957									contentString += '<dd>${((Contacto.Direccion.data)!)?js_string}<br>${((Contacto.CP.data)!)?js_string}} - ${((Contacto.Localidad.data)!)?js_string}</dd>'; 
958								</#if> 
959								<#if Contacto.Telefono.data?has_content> 
960									contentString += '<dt class="important">${languageUtil.get(request,'phone')}</dt>'; 
961									contentString += '<dd>${Contacto.Telefono.data}</dd>'; 
962								</#if> 
963								<#if Contacto.Email.getData()?has_content> 
964									contentString += '<dt class="important">${languageUtil.get(request,'email')}</dt>'; 
965									<#list Contacto.Email.getSiblings() as Item> 
966										contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>'; 
967									</#list> 
968								</#if> 
969								<#if Contacto.Web.data?has_content> 
970									<#assign linkURL = Contacto.Web.data/> 
971									<#if !stringUtil.startsWith(linkURL, "http")> 
972										<#assign linkURL = "https://${Contacto.Web.data}"/> 
973									</#if> 
974									contentString += '<dt class="important">${languageUtil.get(request,'site')}</dt>'; 
975									contentString += '<dd><a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd>'; 
976								</#if> 
977								contentString += '</dl>'; 
978								contentString += '</div>'; 
979								contentString += '</div>'; 
980								<#if description?has_content> 
981									 <#assign descriptionClean = description?replace("\n", "", "r")?replace("\r", "", "r") /> 
982									contentString += '<div class="row"><div class="col-12">${htmlUtil.escapeJS(descriptionClean)}</div></div>'; 
983								</#if> 
984								marker.bindPopup(contentString); 
985 
986								//Contributor 
987								L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
988									attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.' 
989								}).addTo(mapContent); 
990								 
991							}); //AUI.ready 
992						</script> 
993					</div> 
994				</div> 
995				<#assign showFirstTab = false> 
996			</#if>		 
997		</div> 
998		 
999		<#if  validator.isNotNull(Observaciones.Observacion.data) || validator.isNotNull(Observaciones.MasInformacion.data) || validator.isNotNull(OtrosDatos.DatosFacilitadosPor.data) || validator.isNotNull(CodigoDGT.data) > 
1000			<div class="article-border"> 
1001				<#if Observaciones.Observacion?has_content> 
1002					${Observaciones.Observacion.data} 
1003				</#if> 
1004				<#if Observaciones.MasInformacion?has_content> 
1005					<#list  Observaciones.MasInformacion.getSiblings() as Item> 
1006						<#if stringUtil.matches(Item.data, "//") || stringUtil.matches(Item.data, "www") > 
1007							<div><a class="" href="${Item.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${Item.data}</a></div> 
1008						<#else> 
1009							<div><span class="">${Item.data}</span></div> 
1010						</#if> 
1011					</#list> 
1012				</#if> 
1013				<#if OtrosDatos.DatosFacilitadosPor?has_content> 
1014					<div><span class="important mr-1">${languageUtil.get(request,'infoasturias-datos-facilitados-por')}:</span><span class="text-wrapper">${OtrosDatos.DatosFacilitadosPor.data}.</span></div> 
1015				</#if> 
1016					 
1017					<#if CodigoDGT.data?has_content> 
1018					<div><span class="text-wrapper mr-1">Empresa de turismo activo inscrita en el Registro de Actividades Turísticas del Principado de Asturias con el código</span><span class="important">${CodigoDGT.data}.</span></div> 
1019					</#if> 
1020			</div> 
1021		</#if> 
1022		 
1023		<div class="row mt-5"> 
1024			<div class="col-xs-12 mb-3"> 
1025				<div class="text-center"> 
1026					<#if Contacto.Email.data?has_content> 
1027						<a href="mailto:${Contacto.Email.data}?Subject=${title}:%20${languageUtil.get(request,'infoasturias-more-info')}" class="btn btn-default text-center text-uppercase"> 
1028							<span class="far fa-envelope mr-2"> 
1029								<span class="hide-accessible">${languageUtil.get(request,"email")}</span> 
1030							</span> 
1031							${languageUtil.get(request,'infoasturias-contacto-alojamiento')} 
1032						</a> 
1033					</#if>					 
1034				</div>	 
1035			</div> 
1036		</div> 
1037	</div> 
1038	 
1039	<#-- Related --> 
1040	<#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/> 
1041	<#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0> 
1042		<div class="article-related portlet-background-grey-container"> 
1043			<div class="container"> 
1044				<h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3> 
1045				<div class="slick article-related-slick"> 
1046					<#list relatedJournalArticles as currentJournalArticle> 
1047						<#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/> 
1048							<div class="slide"> 
1049								<a class="card background card-background-9-14"  href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}"> 
1050									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');"> 
1051										<img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}"> 
1052										<span class="card-body"> 
1053											<span class="card-title">${currentJournalArticle.getTitle(locale)}</span> 
1054										</span> 
1055									</span> 
1056								</a> 
1057							</div> 
1058					</#list> 
1059				</div> 
1060			</div> 
1061		</div> 
1062	</#if> 
1063	 
1064	<#-- Nearby Articles --> 
1065	<#assign classTypeIds = [] /> 
1066	<#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 25)! /> 
1067	<#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0> 
1068		<div class="article-nearby portlet-container-margin"> 
1069			<div class="container"> 
1070				<div class="article-nearby-container"> 
1071					<h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3> 
1072					<div class="slick article-nearby-slick"> 
1073						<#list assetsNearJournalArticles as currentJournalArticle> 
1074							<#assign viewURLRaw = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true) /> 
1075							<#assign viewURL = sanitizeURL(viewURLRaw) /> 
1076							<#assign articleTitle = currentJournalArticle.getTitle(locale) /> 
1077							<#assign articleDescription = currentJournalArticle.getDescription(locale) /> 
1078							<#assign smallImageURLRaw = currentJournalArticle.getSmallImageURL() /> 
1079							<#assign smallImageURL = sanitizeURL(smallImageURLRaw) /> 
1080							<#assign distanceKm = currentJournalArticle.getVersion() /> 
1081							<#assign categoriesNamesRaw = journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"]) /> 
1082							<#assign categoriesNames = htmlUtil.escape(categoriesNamesRaw) /> 
1083							 
1084							<#if viewURL?has_content && smallImageURL?has_content && articleTitle?has_content> 
1085								<div class="slide"> 
1086									<a class="card" href="${viewURL}" aria-label="${languageUtil.format(request, 'go-to-x', articleTitle)}"> 
1087										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${smallImageURL}')" role="img" aria-label="${articleTitle}"> 
1088											<img class="hide-accessible" src="${smallImageURL}" alt="" />					 
1089											<#if articleDescription?has_content> 
1090												<span class="card-hover"> 
1091													<span class="card-text">${articleDescription}</span> 
1092												</span> 
1093											</#if> 
1094										</span> 
1095										<span class="card-body"> 
1096											<span class="card-title">${articleTitle}</span> 
1097											<span class="card-subtitle"> 
1098												<span class="d-block"> 
1099													<span class="sr-only">${languageUtil.get(request, 'distance')}: </span> 
1100													${distanceKm} ${languageUtil.get(request, 'km')} 
1101												</span> 
1102												<#if categoriesNames?has_content> 
1103													<span class="d-block">${categoriesNames}</span> 
1104												</#if> 
1105											</span> 
1106										</span> 
1107									</a> 
1108								</div> 
1109							</#if> 
1110						</#list> 
1111					</div> 
1112				</div> 
1113			</div> 
1114		</div> 
1115	</#if> 
1116</article> 
1117<script type="application/ld+json"> 
1118
1119	"@context": "https://schema.org", 
1120	"@type": ["LocalBusiness"], 
1121	"@id": "${articleURL}", 
1122	"name": "${title?json_string}", 
1123	"url": "${articleURL}" 
1124	<#if articleMainImageThumbnail3Safe?has_content> 
1125		,"image": "${themeDisplay.getPortalURL()}${articleMainImageThumbnail3Safe}" 
1126	</#if>   
1127	<#if Informacion.Texto.data?has_content> 
1128		<#assign cleanDesc = htmlUtil.extractText(Informacion.Texto.data)?trim /> 
1129		<#if cleanDesc?has_content> 
1130			,"description": "${cleanDesc?json_string}" 
1131		</#if> 
1132	</#if> 
1133	<#if ((Contacto.Direccion.data)!)?has_content || ((Contacto.CP.data)!)?has_content> 
1134		,"address": { 
1135			"@type": "PostalAddress" 
1136			<#if (Contacto.Direccion.data)!?has_content> 
1137				,"streetAddress": "${Contacto.Direccion.data?json_string}" 
1138			</#if> 
1139			<#if (Contacto.CP.data)!?has_content> 
1140				,"postalCode": "${(Contacto.CP.data)!}" 
1141			</#if> 
1142			<#if (Contacto.Localidad.data)!?has_content> 
1143				,"addressLocality": "${Contacto.Localidad.data?json_string}" 
1144			</#if> 
1145			<#if (Contacto.Concejo.data)!?has_content> 
1146				,"addressRegion": "${Contacto.Concejo.data?json_string}" 
1147			</#if> 
1148			,"addressCountry": "ES" 
1149
1150	</#if> 
1151	<#if Geolocalizacion.Coordenadas.data?has_content> 
1152		<#assign coordenadas = stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
1153		,"geo": { 
1154			"@type": "GeoCoordinates", 
1155			"latitude": "${coordenadas[0]}", 
1156			"longitude": "${coordenadas[1]}" 
1157
1158	</#if> 
1159	<#if Contacto.Telefono.data?has_content> 
1160		,"telephone": [ 
1161			<#assign phoneCount = 0 /> 
1162			<#list Contacto.Telefono.getSiblings() as telephone> 
1163				<#if telephone.data?has_content> 
1164					<#assign phoneCount = phoneCount + 1 /> 
1165				</#if> 
1166			</#list> 
1167			<#assign phoneIndex = 0 /> 
1168			<#list Contacto.Telefono.getSiblings() as telephone> 
1169				<#if telephone.data?has_content> 
1170					<#assign rawTelefono = telephone.data?trim /> 
1171					<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
1172					<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
1173					<#assign numberLength = numberTelefono?length /> 
1174					<#assign phoneIndex = phoneIndex + 1 /> 
1175					<#if numberLength == 9> 
1176						"+34${numberTelefono}"<#if phoneIndex < phoneCount>,</#if> 
1177					<#else> 
1178						"${numberTelefono?json_string}"<#if phoneIndex < phoneCount>,</#if> 
1179					</#if> 
1180				</#if> 
1181			</#list> 
1182
1183	</#if> 
1184	<#if Contacto.Email.getData()?has_content> 
1185		,"email": [ 
1186			<#assign emailCount = 0 /> 
1187			<#list Contacto.Email.getSiblings() as Item> 
1188				<#if Item.data?trim?has_content> 
1189					<#assign emailCount = emailCount + 1 /> 
1190				</#if> 
1191			</#list> 
1192			<#assign emailIndex = 0 /> 
1193			<#list Contacto.Email.getSiblings() as Item> 
1194				<#if Item.data?trim?has_content> 
1195					<#assign emailIndex = emailIndex + 1 /> 
1196					"${Item.data?json_string}"<#if emailIndex < emailCount>,</#if> 
1197				</#if> 
1198			</#list> 
1199
1200	</#if> 
1201	<#if vocab??> 
1202		<#assign actividadCats = [] /> 
1203		<#list assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) as cat> 
1204			<#if cat.vocabularyId == vocab.vocabularyId> 
1205				<#assign actividadCats = actividadCats + [cat] /> 
1206			</#if> 
1207		</#list> 
1208		<#if actividadCats?has_content> 
1209			,"makesOffer": [ 
1210				<#list actividadCats as cat> 
1211					{"@type": "Offer", 
1212						"itemOffered": { 
1213							"@type": "Offer", 
1214							"name": "${cat.getTitle(locale)?json_string}", 
1215							"category": "Adventure Tourism" 
1216
1217					}<#if cat_has_next>,</#if> 
1218				</#list> 
1219
1220		</#if> 
1221	</#if> 
1222	<#if Contacto.Temporadas.data?has_content> 
1223		<#assign cleanTemp = htmlUtil.extractText(Contacto.Temporadas.data)?trim /> 
1224		<#if cleanTemp?has_content> 
1225			,"openingHoursSpecification": { 
1226				"@type": "OpeningHoursSpecification", 
1227				"description": "${cleanTemp?json_string}" 
1228
1229		</#if> 
1230	</#if> 
1231
1232</script> 
1233<script type="text/javascript"> 
1234	(function() { 
1235		'use strict'; 
1236		setTimeout(function() { 
1237			var links = document.querySelectorAll('.internal-tab-link'); 
1238			links.forEach(function(link) { 
1239				link.addEventListener('click', function(e) { 
1240					e.preventDefault(); 
1241					 
1242					var tabHeadingId = this.getAttribute('data-tab-heading'); 
1243					var tabContentId = this.getAttribute('data-tab-content'); 
1244					var tabControl = document.getElementById(tabHeadingId); 
1245					var tabContent = document.getElementById(tabContentId); 
1246					 
1247					if (!tabControl || !tabContent) return; 
1248					 
1249					var isExpanded = tabControl.getAttribute('aria-expanded') === 'true'; 
1250					if (!isExpanded) { 
1251						tabControl.click(); 
1252						setTimeout(function() { 
1253							scrollToElement(tabControl); 
1254						}, 350); 
1255					} else { 
1256						scrollToElement(tabControl); 
1257
1258				}); 
1259			}); 
1260		}, 500); 
1261	   
1262		function scrollToElement(element) { 
1263			var elementPosition = element.getBoundingClientRect().top; 
1264			var offsetPosition = elementPosition + window.pageYOffset - 140; 
1265			window.scrollTo({ 
1266				top: offsetPosition, 
1267				behavior: 'smooth' 
1268			}); 
1269			setTimeout(function() { 
1270				element.focus(); 
1271			}, 400); 
1272
1273	})(); 
1274</script>