Si è verificato un errore nell'elaborarazione del modello.      
 The following has evaluated to null or missing:
==> response.data.docs.getJSONObject(0)  [in template "3572636#3572671#4340004" at line 28, column 24]
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign doc = response.data.docs.getJ...  [in template "3572636#3572671#4340004" at line 28, column 9]
---- 1<#import "_TEMPLATE_CONTEXT_/3572636/3574130/23609/3793037" as d40>  2  3<#setting url_escaping_charset="UTF-8">  4  5<#assign  6    PUTIL = objectUtil("com.liferay.portal.kernel.util.PortalUtil")  7    uuid = themeDisplay.getURLCurrent()?keep_after("-/c/n/")?keep_before("?")?keep_after_last("_")  8    langId = locale?keep_before("_")  9    contentType = "poi"  10    vueActions = ""  11    doc = ""  12    lat = "0"  13    lng = "0"  14    hasCoords = false  15/>  16  17<#-- <#assign z=request.setAttribute("ogTitle","title")>  18<#assign z=request.setAttribute("ogImage","imgg")>  19<#assign z=request.setAttribute("ogDesc","desc")> -->  20  21<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />  22<#assign z=request.setAttribute("ogUrl","${currentUrl}")>  23  24<#if uuid?has_content>  25    <#assign response = d40.fetchData("https://guestapp.d40.it/v1/search/apt-trento/${contentType}/?uuid=${uuid}")>  26      27    <#if !response.error && response.data.docs?has_content>  28        <#assign doc = response.data.docs.getJSONObject(0)>  29          30        ${request.session.removeAttribute("circularCategories")}  31        ${request.session.setAttribute("circularCategories", doc.details.assetCategoryIds)}  32    </#if>  33</#if>  34  35<#if doc?has_content>  36    <#if doc.details?? && doc.details.name[langId]?has_content>  37        ${PUTIL.setPageTitle(doc.details.name[langId], request)}  38    </#if>  39      40    <#assign vueActions = "getFavorites();">  41      42    <#if doc.details.location.geoCoords.lat?has_content && doc.details.location.geoCoords.lon?has_content>  43        <#assign  44            hasCoords = true  45            lat = doc.details.location.geoCoords.lat  46            lng = doc.details.location.geoCoords.lon  47            vueActions = "getFavorites();buildMap(${lat}, ${lng})"  48        />  49    </#if>  50</#if>  51  52<style>  53    .swiper-button-next:after{  54        content: "";  55    }  56    .swiper-button-prev:after{  57        content: "";  58    }  59    .bg-darkgray{  60        background-color: #e5e5e5 !important;  61    }  62    .min-h-12{  63        min-height: 3rem;  64    }  65    .-ml-5{  66        margin-left: -5%;  67    }  68</style>  69  70<div v-scope id="${d40.portletNamespace}" @vue:mounted="${vueActions}" v-cloak>  71    <#if doc?has_content>  72        <#if themeDisplay.getLayout().getAncestors()?has_content>  73            <section id="breadcrumb" class="z-15 mt-25">  74                <div class="container">  75                    <ol class="breadcrumb flex lg:justify-center">  76                        <li class="pl-1 text-sm mr-2 relative">${d40.getLabel("sei_in")}:</li>  77                          78                        <li class="breadcrumb-item">  79                            <a href="/" class="breadcrumb-link" title="Home">  80                                <span class="breadcrumb-text-truncate text-dark underline">Home</span>  81                            </a>  82                        </li>  83                          84                        <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor>  85                            <li class="breadcrumb-item">  86                                <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${d40.escape(ancestor.getHTMLTitle(locale))}">  87                                    <span class="breadcrumb-text-truncate text-dark underline">  88                                        ${d40.escape(ancestor.getHTMLTitle(locale))}  89                                    </span>  90                                </a>  91                            </li>  92                        </#list>  93                          94                        <li class="breadcrumb-item active">  95                            <span class="breadcrumb-text-truncate text-dark">  96                                ${doc.details.name[langId]}  97                            </span>  98                        </li>  99                    </ol>  100                </div>  101            </section>  102        </#if>  103          104        <section class="relative mt-20">  105            <div class="container">  106                <div class="row">  107                    <div class="col-12 col-lg-7">  108                        <div class="card-row flex-col lg:flex-row mb-10">  109                            <div class="autofit-col autofit-col-expand order-2 lg:order-1">  110                                <div class="autofit-section">  111                                    <p class="text-dark font-semibold font-heading text-3xl lg:text-4xl uppercase">  112                                        ${doc.details.name[langId]}  113                                        <#assign z=request.setAttribute("ogTitle","${doc.details.name[langId]}")>  114                                    </p>  115                                </div>  116                            </div>  117                            <div class="autofit-col justify-start order-1 lg:order-2 mb-3 lg:mb-0">  118                                <div class="autofit-section">  119                                    <div class="flex space-x-4">  120                                        <button type="button" v-if="isFavorite('${doc.uuid}')" @click="removeFavorite($event, '${doc.uuid}')" class="btn btn-link px-2">  121                                            <i class="fas fa-heart text-dark fa-2x"></i>  122                                        </button>  123                                        <button type="button" v-else @click="setFavorite($event, {id: '${doc.uuid}', contentJSON: {title: '${doc.details.name[langId]?js_string}', previewDescription: '', description: '', geoRef: '', previewPicture: '${d40.getDTNPreview(doc)}', viewUrl: '${d40.getDTNUrl(doc.details.name[langId], doc.uuid, contentType)}'}})" class="btn btn-link px-2">  124                                            <i class="fal fa-heart text-dark fa-2x"></i>  125                                        </button>  126                                          127                                        <button type="button" @click="share('${doc.details.name[langId]}', '')" class="btn btn-link px-2">  128                                            <i class="fas fa-share-alt text-dark fa-2x"></i>  129                                        </button>  130                                    </div>  131                                </div>  132                            </div>  133                        </div>  134                          135                        <#if doc.timetables.timeDescription[langId]?has_content>  136                            <div class="text-dark text-lg font-light mb-15 mt-5">  137                                ${doc.timetables.timeDescription[langId]}  138                            </div>  139                        </#if>  140                          141                        <#if doc.details.description[langId]?has_content>  142                            <div class="underline-grow text-dark font-light lg:text-lg leading-loose">  143                                ${doc.details.description[langId]}  144                                  145                                <#if doc.details.description[langId]?length lt 160>  146                                    <#assign   147                                        z=request.setAttribute("ogDesc","${htmlUtil.stripHtml(doc.details.description[langId])}")  148                                    />  149                                <#else>  150                                    <#assign   151                                        z=request.setAttribute("ogDesc","${htmlUtil.stripHtml(doc.details.description[langId])?substring(0,160)}")  152                                    />  153                                </#if>  154                            </div>  155                        </#if>  156                    </div>  157                      158                    <div class="xl:absolute col-12 col-lg-5 xl:max-w-xl lg:right-0">  159                        <div class="bg-light">  160                            <div class="card-body px-5 pt-5 lg:px-10 lg:pt-10 pb-0">  161                                <p class="text-dark font-bold uppercase text-lg mb-0">  162                                    ${d40.getLabel("informazioni_contatti")}  163                                </p>  164                                <#if doc.details.townLabel != "{}">  165                                    <p class="text-dark text-lg mb-0">  166                                        ${d40.getLabel("localita")}: <span class="text-capitalize">${doc.details.townLabel[langId]}</span>  167                                    </p>  168                                </#if>  169                                <#if doc.timetables.timeInfos?has_content>  170                                    <p class="text-dark font-bold text-lg mb-0 mt-3 d-none">  171                                        ${d40.getLabel("date_apertura")}  172                                    </p>  173                                </#if>  174                            </div>  175                              176                              177                            <#if doc.timetables.timeInfos?has_content>  178                                <div class="flex">  179                                    <details class="bg-darkgray w-full lg:w-105% right-0 -ml-5 d-none">  180                                        <summary class="btn btn-link text-dark no-underline my-1 ml-12">  181                                            <i class="fal fa-calendar-alt"></i>  182                                            <span>${doc.timetables.timeInfos.getJSONObject(0).dateFrom} - ${doc.timetables.timeInfos.getJSONObject(0).timeFrom} - ${doc.timetables.timeInfos.getJSONObject(0).timeTo}</span>  183                                            <i class="fal fa-chevron-down fa-lg ml-5"></i>  184                                        </summary>  185                                          186                                        <div class="card-body px-5 lg:px-10">  187                                            <ul>  188                                                <#list doc.timetables.timeInfos.iterator() as datetime>  189                                                    <li class="text-dark mb-1">  190                                                        ${d40.getLabel("dal")} ${datetime.dateFrom}  191                                                        ${d40.getLabel("al")} ${datetime.dateTo}  192                                                        ${d40.getLabel("dalle")} ${datetime.timeFrom}  193                                                        ${d40.getLabel("alle")} ${datetime.timeTo}  194                                                    </li>  195                                                </#list>  196                                            </ul>  197                                        </div>  198                                    </details>  199                                </div>  200                            </#if>  201                              202                              203                            <div class="card-body px-5 lg:px-10">  204                                <#if doc.contacts.getJSONObject(0).telephone?? && doc.contacts.getJSONObject(0).telephone?has_content>  205                                    <#attempt>  206                                        <#list doc.contacts.getJSONObject(0).telephone.iterator() as phone>  207                                            <p class="text-dark text-lg mb-0">  208                                                Tel: ${phone}  209                                            </p>  210                                        </#list>  211                                    <#recover>  212                                        <p class="text-dark text-lg mb-0">  213                                            Tel: ${doc.contacts.getJSONObject(0).telephone}  214                                        </p>  215                                    </#attempt>  216                                      217                                </#if>  218                                <#if doc.contacts.getJSONObject(0).mail?? && doc.contacts.getJSONObject(0).mail?has_content>  219                                    <a href="mailto:${doc.contacts.getJSONObject(0).mail}" class="block no-underline text-dark text-lg space-x-2 mb-0">  220                                        <i class="far fa-envelope text-dark"></i>  221                                        <u>${doc.contacts.getJSONObject(0).mail}</u>  222                                    </a>  223                                </#if>  224                                <#if doc.contacts.getJSONObject(0).websiteUrl[langId]?? && doc.contacts.getJSONObject(0).websiteUrl[langId]?has_content>  225                                    <a href="${doc.contacts.getJSONObject(0).websiteUrl[langId]}" class="block no-underline text-dark text-lg space-x-2 mb-0" target="_blank">  226                                        <i class="far fa-external-link text-dark"></i>  227                                        <u>${d40.getLabel("sito_web")}</u>  228                                    </a>  229                                </#if>  230                                  231                                <#if langId == 'en'>  232                                    <#assign ri_url = "/contact-tourist-office-trento" />  233                                <#elseif langId == 'de'>  234                                    <#assign ri_url = "/kontakt-info-anfrage-trento" />  235                                <#else>  236                                    <#assign ri_url = "/richiesta-informazioni" />  237                                </#if>  238                                  239                                <a href="#contact-form" class="d-none btn bg-green text-white font-bold uppercase px-4 py-2 rounded-0 mt-10">  240                                    ${d40.getLabel("richiedi_info")}  241                                </a>  242                            </div>  243                              244                            <#if hasCoords>  245                                <div class="relative flex h-70">  246                                    <div class="absolute w-full lg:w-105% h-full right-0">  247                                        <div id="suggesto-map" class="monochrome-map size-full border-0"></div>  248                                    </div>  249                                </div>  250                                <div class="card-body p-5 lg:px-10">  251                                    <!-- https://www.google.com/maps/dir/?api=1&travelmode=driving&destination=lat,lon   252                                    https://www.google.com/maps/@${lat},${lng}  253                                    -->  254                                    <a href="https://www.google.com/maps/dir/?api=1&travelmode=driving&destination=${lat},${lng}" class="d-block no-underline space-x-5" target="_blank">  255                                        <span class="font-bold text-dark uppercase">  256                                            ${d40.getLabel("indicazioni_stradali")}  257                                        </span>  258                                        <img src="${d40.icons_folder}/arrow_circle-dark.svg" class="w-20" />  259                                    </a>  260                                </div>  261                            </#if>  262                        </div>  263                    </div>  264                </div>  265            </div>  266        </section>  267          268        <#if doc.details.images?has_content>  269            <#assign usePreview = false>  270              271            <section id="gallery" class="relative overflow-x-hidden mt-20 lg:mt-40">  272                <div class="container">  273                    <p class="text-dark uppercase text-lg lg:text-3xl mb-7">  274                        ${d40.getLabel("galleria_immagini")}  275                    </p>  276                      277                    <div class="swiper-container">  278                        <div class="swiper-wrapper">  279                            <#if doc.details.cover != "[]">  280                                <#assign usePreview = true>  281                                  282                                <#list doc.details.cover.iterator() as pic>  283                                    <div class="swiper-slide">  284                                        <a href="javascript:void(0);" class="card shadow-none border-0 bg-transparent no-underline" data-toggle="modal" data-target="#lightbox-modal" data-slider="${pic?index}" data-senna-off="true">  285                                            <div class="relative">  286                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload rounded-custom size-full fit-cover" alt="" />  287                                            </div>  288                                        </a>  289                                    </div>  290                                      291                                    <#--assign z=request.setAttribute("ogImage","${pic[langId]}")-->  292                                  <#assign z=request.setAttribute("ogImage","${d40.getKitPrefix(pic[langId], 'n-preview_h')}")>                            293                                    294                                    <#break>  295                                </#list>  296                            </#if>  297                              298                            <#list doc.details.images.iterator() as pic>  299                                <#if usePreview>  300                                    <#assign counter = pic?counter>  301                                <#else>  302                                    <#assign counter = pic?index>  303                                </#if>  304                                  305                                <div class="swiper-slide">  306                                    <a href="javascript:void(0);" class="card shadow-none border-0 bg-transparent no-underline" data-toggle="modal" data-target="#lightbox-modal" data-slider="${counter}" data-senna-off="true">  307                                        <div class="relative">  308                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload rounded-custom size-full fit-cover" alt="" />  309                                        </div>  310                                    </a>  311                                </div>  312                            </#list>  313                        </div>  314                    </div>  315                </div>  316                <div class="btn-square absolute btn-prev bg-white left-0">  317                    <span class="sr-only">${d40.getLabel("precedente")}</span>  318                    <i class="fas fa-chevron-left text-dark w-6 h-6"></i>  319                </div>  320                <div class="btn-square absolute btn-next bg-white right-0">  321                    <span class="sr-only">${d40.getLabel("successivo")}</span>  322                    <i class="fas fa-chevron-right text-dark w-6 h-6"></i>  323                </div>  324            </section>  325              326            <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade">  327                <div class="modal-dialog modal-full-screen inset-0 border-0 shadow-none">  328                    <div class="modal-content bg-transparent">  329                        <div class="modal-body overflow-hidden">  330                            <div class="absolute top-0 right-0 z-5">  331                                <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3">  332                                    <span class="sr-only">${d40.getLabel("chiudi")}</span>  333                                    <i class="fal fa-times fa-lg"></i>  334                                </button>  335                            </div>  336                              337                            <#-- lightbox -->  338            				<div id="lightbox-swiper" class="swiper-container h-75 my-auto">  339            				    <div class="swiper-button-prev w-12 h-12">  340                                    <span class="sticker sticker-circle bg-green size-full">  341                                        <span class="sticker-overlay">  342                                            <i class="fas fa-chevron-left fa-2x text-white"></i>  343                                        </span>  344                                    </span>  345                                </div>  346                                  347                                <div class="swiper-button-next w-12 h-12">  348                                    <span class="sticker sticker-circle bg-green size-full">  349                                        <span class="sticker-overlay">  350                                            <i class="fas fa-chevron-right fa-2x text-white"></i>  351                                        </span>  352                                    </span>  353                                </div>  354                                  355                                <div class="swiper-wrapper h-full">  356                                    <#if doc.details.cover != "[]">  357                                        <#list doc.details.cover.iterator() as pic>  358                                            <div class="swiper-slide h-full">  359                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-full_hd')}" loading="lazy" class="lazyload flex h-full object-contain mx-auto" alt="">  360                                            </div>  361                                            <#break>  362                                        </#list>  363                                    </#if>  364                                      365                                    <#list doc.details.images.iterator() as pic>  366                                        <div class="swiper-slide h-full">  367                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-full_hd')}" loading="lazy" class="lazyload flex h-full object-contain mx-auto" alt="">  368                                        </div>  369                                    </#list>  370                                </div>  371                            </div>  372                              373                            <#-- thumbnails -->  374            				<div id="thumbnail-swiper" class="swiper-container" thumbsSlider="">  375                                <div class="swiper-wrapper">  376                                    <#if doc.details.cover != "[]">  377                                        <#list doc.details.cover.iterator() as pic>  378                                            <div class="swiper-slide">  379                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload object-cover cursor-pointer size-full" alt="">  380                                            </div>  381                                            <#break>  382                                        </#list>  383                                    </#if>  384                                      385                                    <#list doc.details.images.iterator() as pic>  386                                        <div class="swiper-slide">  387                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload object-cover cursor-pointer size-full" alt="">  388                                        </div>  389                                    </#list>  390                                </div>  391                            </div>  392                        </div>  393                    </div>  394                </div>  395            </div>  396        </#if>  397          398        <#-- SEZIONE NON USATA  399        <section class="mt-20">  400            <div class="container">  401                <div class="bg-light max-w-xl p-5 lg:p-10">  402                    <div class="card-row space-x-5">  403                        <div class="autofit-col">  404                            <div class="autofit-section">  405                                <i class="fas fa-download text-dark w-7 h-7"></i>  406                            </div>  407                        </div>  408                        <div class="autofit-col autofit-col-expand">  409                            <div class="autofit-section">  410                                <p class="text-dark font-bold text-lg lg:text-xl uppercase mb-0"> Programma completo </p>  411                            </div>  412                        </div>  413                    </div>  414                </div>  415                  416                <div class="row mt-10 lg:mt-20">  417                    <div class="col-12 col-lg-8">  418                        <div class="space-y-10">  419                            <p class="text-dark uppercase text-lg lg:text-3xl">  420                                ${d40.getLabel("dettagli")}  421                            </p>  422                            <div class="space-y-5">  423                                <div class="row">  424                                    <div class="col-12 col-md-3 col-lg-2">  425                                        <p class="text-dark font-bold uppercase">Data</p>  426                                    </div>  427                                    <div class="col-12 col-md-9 col-lg-10">  428                                        <div class="text-dark font-light text-lg">  429                                            Dettagli  430                                        </div>  431                                    </div>  432                                </div>  433                            </div>  434                        </div>  435                    </div>  436                </div>  437            </div>  438        </section>  439        -->  440          441        <section class="mt-20">  442            <div class="container">  443                <div class="bg-light">  444                    <div class="space-y-10 p-5 lg:p-10">  445                        <p class="text-dark uppercase text-lg lg:text-3xl mb-0">  446                            ${d40.getLabel("organizzazione")}  447                        </p>  448                        <div class="space-y-2">  449                            <#if doc.contacts.getJSONObject(0).address.fulltext?? && doc.contacts.getJSONObject(0).address.fulltext?has_content>  450                                <p class="text-dark mb-0">  451                                    ${doc.contacts.getJSONObject(0).address.fulltext}  452                                </p>  453                            </#if>  454                              455                            <#if doc.contacts.getJSONObject(0).mail?? && doc.contacts.getJSONObject(0).mail?has_content>  456                                <a href="mailto:${doc.contacts.getJSONObject(0).mail}" class="d-block text-dark underline">  457                                    ${doc.contacts.getJSONObject(0).mail}  458                                </a>  459                            </#if>  460                              461                            <#if doc.contacts.getJSONObject(0).telephone?? && doc.contacts.getJSONObject(0).telephone?has_content>  462                                <#attempt>  463                                    <#list doc.contacts.getJSONObject(0).telephone.iterator() as phone>  464                                        <p class="text-dark mb-0">  465                                            <span class="font-bold">${d40.getLabel("telefono")}:</span>  466                                            ${phone}  467                                        </p>  468                                    </#list>  469                                <#recover>  470                                    <p class="text-dark mb-0">  471                                        <span class="font-bold">${d40.getLabel("telefono")}:</span>  472                                        ${doc.contacts.getJSONObject(0).telephone}  473                                    </p>  474                                </#attempt>  475                            </#if>  476                        </div>  477                    </div>  478                </div>  479            </div>  480        </section>  481          482        <#--  483        <section class="mt-10">  484            <div class="container">  485                <p class="text-dark uppercase text-lg lg:text-3xl mb-7"> Info sezione </p>  486                <p class="text-dark text-lg font-light mb-0"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </p>  487            </div>  488        </section>  489        -->  490    <#else>  491        <div class="text-center mt-35">  492            <p class="text-dark">  493                ${d40.getLabel("errore_caricamento_contenuto")}  494            </p>  495        </div>  496    </#if>  497</div>  498  499<script type="module">  500    import { createApp } from "https://cdnjs.cloudflare.com/ajax/libs/petite-vue/0.4.1/petite-vue.es.min.js";  501  502    createApp({  503        isMobile: window.innerWidth < 768,  504        favorites: [],  505        getFavorites() {  506            if(localStorage.getItem("favorites") !== null) {  507    			this.favorites = JSON.parse(localStorage.getItem("favorites"));  508    		}  509        },  510        setFavorite(e, item) {  511            e.preventDefault();  512    		this.getFavorites();  513      514    		var newFavorite = {  515    			id: item.id,  516        			contentJSON: {  517    				title: item.contentJSON.title,  518    				previewDescription: item.contentJSON.previewDescription,  519    				description: item.contentJSON.description,  520    				geoRef: item.contentJSON.geoRef,  521    				previewPicture: item.contentJSON.previewPicture,  522    				viewUrl: item.contentJSON.viewUrl,  523    				type: "lfr",  524    			}  525    		};  526      527    		this.favorites.push(newFavorite);  528    		this.saveFavorites();  529    	},  530    	removeFavorite(e, itemId) {  531    	    e.preventDefault();  532    		this.favorites = this.favorites.filter((obj) => obj.id !== itemId);  533    		this.saveFavorites();  534    	},  535    	saveFavorites() {  536    		localStorage.setItem("favorites", JSON.stringify(this.favorites));  537    	},  538    	isFavorite(itemId) {  539    		if (this.favorites.some((e) => e.id == itemId)) {  540    			return true;  541    		}  542      543    		return false;  544    	},  545    	buildMap(lat, lng) {  546            var map = new SuggestoMap("suggesto-map"),  547                location = [parseFloat(lat), parseFloat(lng)];  548              549            var svgIcon = L.divIcon({  550                html: `  551                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44.537 64.343">  552                        <path d="M32.952,68c-4.491-5.935-9.221-11.692-12.837-18.251-3.4-6.175-5.892-12.453-4.094-19.725,2.422-9.787,12.253-17.363,22.112-16.878,11.322.558,20.189,8.638,21.649,19.385.8,5.867-1.25,10.892-3.84,15.837A105.38,105.38,0,0,1,43.958,65.889c-.687.844-1.309,1.739-1.96,2.611-.953,1.06-1.971,2.068-2.841,3.191-.965,1.245-1.729,1.629-2.844.1A50.506,50.506,0,0,0,32.952,68m4.722-46.328A14.156,14.156,0,0,0,23.76,35.59c-.168,7.053,6.542,13.748,13.813,13.783A14.234,14.234,0,0,0,51.46,35.693,14.138,14.138,0,0,0,37.674,21.676" transform="translate(-15.419 -13.129)" fill="#5098c6"/>  553                        <path d="M31.941,63.206A50.288,50.288,0,0,1,35.3,67c1.116,1.526,1.878,1.142,2.844-.1.87-1.123,1.889-2.132,2.841-3.191a8.579,8.579,0,0,1,5.414,2.22c1.659,1.642,1.586,3.631-.455,4.627a21.209,21.209,0,0,1-16.871.723c-1.611-.565-3.293-1.51-3.092-3.645.19-2.018,1.855-2.718,3.511-3.342.833-.315,1.791-.363,2.447-1.079" transform="translate(-14.408 -8.331)" fill="#222"/>  554                        <path d="M36.946,20.929A14.137,14.137,0,0,1,50.732,34.944,14.236,14.236,0,0,1,36.844,48.626c-7.27-.036-13.98-6.732-13.813-13.783A14.157,14.157,0,0,1,36.946,20.929m-.023,5.445a8.4,8.4,0,1,0,8.394,8.22,8.5,8.5,0,0,0-8.394-8.22" transform="translate(-14.69 -12.381)" fill="#fdfcf9"/>  555                        <path d="M36.45,25.9a8.4,8.4,0,0,1,.077,16.809A8.405,8.405,0,1,1,36.45,25.9" transform="translate(-14.218 -11.905)" fill="#222"/>  556                    </svg>`,  557                className: "",  558                iconSize: [44.537, 64.343],  559                iconAnchor: [22.287, 64.343],  560            });  561                  562            var mapData = {  563                tilelayer: "osm",  564                gestureHandling: true,  565                fitBounds: false,  566                mapcenter: location,  567                zoom: 15,  568                markersFilter: "*",  569                markers: [],  570                layers: []  571            };  572                  573            map.sm.createMap(mapData);  574              575            L.circleMarker(location, {  576                radius: 0,  577                color: "#000",  578                fillOpacity: 0,  579                weight: 0  580            }).addTo(map.sm.lmap);  581              582            L.marker(location, {  583                icon: svgIcon  584            }).addTo(map.sm.lmap);  585        },  586        share(title, desc, mode = "legacy") {  587            if (this.isMobile) {  588                var shareData = {  589                    title: title,  590                    text: desc,  591                    url: window.location.href.replaceAll("{", "%7B").replaceAll("}", "%7D")  592                };  593  594                try {  595                    navigator.share(shareData);  596                } catch (err) {  597                    console.error("Error sharing: " + err);  598  599                    if (mode == "legacy") {  600                        this.legacyShare();  601                    } else if (mode == "social") {  602                        this.socialShare(title, desc);  603                    }  604                }  605            } else {  606                if (mode == "legacy") {  607                    this.legacyShare();  608                } else if (mode == "social") {  609                    this.socialShare(title, desc);  610                }  611            }  612        },  613        legacyShare() {  614            var clip = document.createElement("input"),  615                toCopy = window.location.href.replaceAll("{", "%7B").replaceAll("}", "%7D");  616  617            document.body.appendChild(clip);  618            clip.value = toCopy;  619            clip.select();  620            clip.setSelectionRange(0, 999999);  621  622            navigator.clipboard.writeText(clip.value);  623            document.body.removeChild(clip);  624  625            alert("Link copiato");  626        },  627        socialShare(title, desc, image = "") {  628            var link = "#",  629                winHeight = 450,  630                winWidth = 600,  631                winTop = window.screen.height / 2 - winHeight / 2,  632                winLeft = window.screen.width / 2 - winWidth / 2,  633                params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=" + winWidth + ",height=" + winHeight + ",left=" + winLeft + ",top=" + winTop;  634  635            link = "http://www.facebook.com/sharer.php?s=100&p[title]=" + encodeURIComponent(title) + "&p[summary]=" + encodeURIComponent(desc) + "&p[url]=" + window.location.href + "&p[images][0]=" + image;  636  637            window.open(link, "Facebook", params);  638        }  639    }).mount("#${d40.portletNamespace}");  640</script>  641  642<#if doc?has_content>  643    <script>  644        document.addEventListener("DOMContentLoaded", function(){  645          646            document.querySelectorAll('a[href^="#contact"]').forEach(anchor => {  647                anchor.addEventListener('click', function (e) {  648                    e.preventDefault();  649              650                    document.querySelector(this.getAttribute('href')).scrollIntoView({  651                        behavior: 'smooth'  652                    });  653                });  654            });  655              656            var form_title = "${d40.getLabel('contatta_ufficio_apt')}";  657              658            $("<div class='container-fluid bg-light-green'><div class='container'><h3 class='text-light font-semibold font-heading text-3xl lg:text-4xl uppercase pt-4 mb-0'>" + form_title + "</h3></div></div>").insertBefore('#contact-form');  659          660          661            if(${(doc.details.images?has_content)?c}){  662                new Swiper("#gallery .swiper-container", {  663                    slidesPerView: 1,  664                    spaceBetween: 50,  665                    centerSlides: true,  666                    centerInsufficientSlides: true,  667                    breakpoints: {  668                        768: {  669                            slidesPerView: 2,  670                            spaceBetween: 25  671                        },  672                        992: {  673                            slidesPerView: 3,  674                            spaceBetween: 25  675                        }  676                    },  677                    navigation: {  678                        prevEl: "#gallery .btn-prev",  679                        nextEl: "#gallery .btn-next"  680                    }  681                });  682                  683                var thumbnails = new Swiper("#thumbnail-swiper", {  684                    spaceBetween: 10,  685                    slidesPerView: 2,  686                    centerInsufficientSlides: true,  687                    freeMode: true,  688                    watchSlidesVisibility: true,  689                    watchSlidesProgress: true,  690        			breakpoints: {  691        				768: {  692        					slidesPerView: 3  693        				},  694        				992: {  695        					slidesPerView: 4  696        				},  697        				1200: {  698        					slidesPerView: 5  699        				}  700        			},  701                });  702                  703                var lightbox = new Swiper("#lightbox-swiper", {  704        		    spaceBetween: 10,  705                    autoHeight: true,  706                    observer: true,  707                    observeSlideChildren: true,  708                    keyboard: {  709                        enabled: true  710                    },  711                    navigation: {  712                        nextEl: ".swiper-button-next",  713                        prevEl: ".swiper-button-prev"  714                    },  715                    thumbs: {  716                        swiper: thumbnails  717                    }  718                });  719                  720                $("#lightbox-modal").on("shown.bs.modal", function(e){  721                    lightbox.update();  722                    thumbnails.update();  723                    lightbox.slideTo($(e.relatedTarget).data("slider"));  724                    lightbox.update();  725                });  726                  727                $("#lightbox-modal .swiper-wrapper").on("click", function(e){  728                    if($(e.target).attr("class").includes("swiper-slide")){  729                        $("#lightbox-modal").modal("hide");  730                    }  731                });  732                  733                if ($(window).width() > 991) {  734                    var left_col_h = $(".relative.mt-20 > .container > .row > .col-lg-7").outerHeight();  735                    var right_col_h = $(".relative.mt-20 > .container > .row > .col-lg-5").outerHeight();  736                    var marg_h = right_col_h - left_col_h + 40;  737                      738                    if(right_col_h > left_col_h)  739                    {  740                        $('#gallery').removeClass('lg:mt-40 mt-20');  741                        $('#gallery').css({'margin-top':marg_h+'px'});   742                    }  743                }  744            }  745        });  746    </script>  747</#if>  