PageSourceSearch

https://www.avia.cat/altres-continguts/contactar

html avia.cat collected 2026-10-02 14:05:16 UTC 109,276 bytes, 2,017 lines download raw bytes

1<!DOCTYPE HTML>
2<html lang="ca" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ca" >
3    <head>
4        <!-- METADATA -->
5<meta charset="utf-8">
6<meta name="viewport" content="width=device-width, initial-scale=1">
7<meta name="title" lang="ca" content="Contactar - Ajuntament d&#039;Avià">
8<meta name="description" lang="ca" content="">
9<meta name="author" lang="ca" content="Ajuntament d&#039;Avià">
10<meta name="date" lang="ca" content="2014-12-22 09:51:38">
11<meta name="generator" lang="ca" content="Ajuntament d&#039;Avià">
12<meta name="robots" content="index, follow">
13
14        <title>Contactar - Ajuntament d'Avià</title>
15
16        <!-- Global Site Tag (gtag.js) - Google Analytics v4-->
vendor: 124 bytes, lines 16-17
16
17<script type="text/plain" data-type="text/javascript" data-name="ga" data-src="https://www.googletagmanager.com/gtag/js?id=
17G-4X25MLZ3HH
vendor: 12 bytes, line 17
17"></script>
18<script type="text/plain" data-type="text/javascript" data-name="ga">
19    
vendor: 140 bytes, lines 19-23
19window.dataLayer = window.dataLayer || [];
20    function gtag(){dataLayer.push(arguments);}
21    gtag('js', new Date());
22
23    gtag('config', '
23G-4X25MLZ3HH
vendor: 8 bytes, lines 23-24
23');
24    
24// Creates the default tracker.
25    gtag('event', 'page_view', { 'send_to': 'G-4X25MLZ3HH' });
26</script>
26
27<!-- End of code Global Site Tag (gtag.js) - Google Analytics v4-->
28        <link rel="canonical" href="/altres-continguts/contactar">
29
30        <link rel="stylesheet" href="/front/view/js/bower_components/bootstrap/dist/css/bootstrap.min.css?ver=1790949915">
31<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css?ver=1790949915">
32<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-icons.min/index.css?ver=1790949915">
33<link rel="stylesheet" href="/front/view/js/bower_components/tempus-dominus.min.css/index.css?ver=1790949915">
34<link rel="stylesheet" href="/common/bower_components/select2/dist/css/select2.min.css?ver=1790949915">
35
36        <!-- Real Favicon Genenrator-->
37<link rel="apple-touch-icon" href="/themes/avia/images/favicons/apple-touch-icon.png">
38<link rel="icon" type="image/png" href="/themes/avia/images/favicons/favicon-16x16.png" sizes="16x16">
39<link rel="icon" type="image/png" href="/themes/avia/images/favicons/favicon-32x32.png" sizes="32x32">
40<link rel="shortcut icon" href="/themes/avia/images/favicons/favicon.ico">
41        
41<script src="/front/controller/klaro-config.php"></script>
vendor: 1 bytes, line 41
41
42<script>
43	// Fallback defensiu: si per algun motiu el PHP no retorna la configuració,
44	// assegurem una configuració mínima perquè Klaro no falli i mostri el banner.
45	window.klaroConfig = window.klaroConfig || {
46		version: '1.0',
47		elementID: 'klaro',
48		storageMethod: 'cookie',
49		storageName: 'klaro',
50		cookieName: 'klaro',
51		htmlTexts: true,
52		acceptAll: true,
53		hideDeclineAll: false,
54		services: []
55	};
56</script>
vendor: 1 bytes, line 56
56
57<script src="/front/view/js/klaro.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 57
57
58<script src="/front/view/js/klaro-init.js?ver=1790949915"></script>
58
59
60        <!-- Twitter Card data -->
61<meta name="twitter:card" content="summary">
62<meta name="twitter:title" content="Contactar">
63<meta name="twitter:description" content="">
64<meta name="twitter:image" content="https://www.avia.cat/themes/avia/images/logos/header.png">
65    <meta name="twitter:image:alt" content="Logo">
66        <!-- Open Graph data -->
67<meta property="og:title" content="Contactar">
68<meta property="og:type" content="website">
69<meta property="og:url" content="https://www.avia.cat/altres-continguts/contactar">
70<meta property="og:image" content="https://www.avia.cat/themes/avia/images/logos/header.png">
71    <meta property="og:image:alt" content="Logo">
72    <meta property="og:image" content="https://www.avia.cat/themes/avia/images/logos/header_inv.png">
73    <meta property="og:image:alt" content="Logo invertit">
74    <meta property="og:description" content="">
75<meta property="og:site_name" content="Ajuntament d&#039;Avià">
76
77        <!-- HTML5 compatible tags -->
78<script>
79    document.createElement('header');
80    document.createElement('footer');
81    document.createElement('section');
82    document.createElement('aside');
83    document.createElement('nav');
84    document.createElement('article');
85    document.createElement('hgroup');
86    document.createElement('lh');
87</script>
87
88        
88<script>window.mapsConfig = { layerType: 'OpenStreetMap_Mapnik' };</script>
88
89<link rel="stylesheet" href="/front/view/js/bower_components/FreezeUI/freeze-ui.min.css">
90<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/leaflet.css">
91<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/Control.Loading.css">
92<script  src="/front/view/js/bower_components/FreezeUI/freeze-ui.min.js"></script>
vendor: 1 bytes, line 92
92
93<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.js"></script>
vendor: 1 bytes, line 93
93
94<script src="/front/view/js/bower_components/es6-promise/es6-promise.min.js"></script>
vendor: 1 bytes, line 94
94
95<script>ES6Promise.polyfill();</script>
vendor: 1 bytes, line 95
95
96<script  src='/front/view/js/bower_components/Leaflet/default/Leaflet.GoogleMutant.js'></script>
vendor: 1 bytes, line 96
96
97<script src="/front/view/js/googleMapsInit.js"></script>
vendor: 1 bytes, line 97
97
98<script type="text/plain" data-type="text/javascript" data-name="maps" data-src="https://maps.google.com/maps/api/js?key=AIzaSyDzMQfPcdyACxfYosZzQs43alxB8BKfkx8&amp;loading=async&amp;callback=onGoogleMapsReady"></script>
vendor: 1 bytes, line 98
98
99<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.maps.js"></script>
vendor: 1 bytes, line 99
99
100<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.clone.js"></script>
vendor: 1 bytes, line 100
100
101<script  src="/front/view/js/bower_components/Leaflet/default/Control.Loading.js"></script>
vendor: 1 bytes, line 101
101
102<script src="/front/view/js/bower_components/jquery.min/index.js"></script>
vendor: 1 bytes, line 102
102
103<script src="/front/view/js/maps.js"></script>
103        <!-- Init addHeadExtraStyles -->
104        <style>html body{font-size:1em !important;} </style>
105        <!-- End addHeadExtraStyles -->
106        <!-- Font Awesome 7 + v4-shims for backward compatibility -->
107        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" rel="stylesheet">
108        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/v4-shims.min.css" rel="stylesheet">
109        <!-- Popperjs + Tempus Dominus -->
110        
110<script src="/front/view/js/bower_components/popper.min/index.js?ver=1790949915"></script>
vendor: 1 bytes, line 110
110
111<script src="/front/view/js/bower_components/tempus-dominus.min.js/index.js?ver=1790949915"></script>
111
112                <link rel="stylesheet" media="all" href="/themes/avia/styles/style.min.css?ver=1790949915">
113            </head>
114    <body class="page id-62">
115        <nav class="skip-links" aria-label="Dreceres d&#039;accessibilitat"><ul><li><a href="#site-header">Saltar a la capçalera</a></li><li><a href="#readspeakerPage">Saltar al contingut</a></li><li><a href="#footer-content">Saltar al peu de pàgina</a></li></ul></nav>        <header id="site-header" tabindex="-1">
116                                    <div class="toolbar clearfix">
117    <div class="container-xl">
118                <div class="fright">
119            <div class="toolbarItem">
120    <div class="toolbarItem page-62 page-contactar current">
121    <a 
122        href="/altres-continguts/contactar"
123        target="_self"
124        rel=""
125            >
126        Contactar    </a>
127</div>
128</div>                        <div id="social" class="toolbarItem">
129                  
130    <a target="_blank" aria-label="Twitter" href="https://twitter.com/ajuntamentavia?lang=ca" title="Obre en finestra nova: Twitter">
131        <span style="display: none">Twitter</span>
132        <img src="/themes/avia/images/icons/social/twitter.png" alt="Twitter" width="32" height="32">
133    </a>
134  
135    <a target="_blank" aria-label="Facebook" href="https://www.facebook.com/ajuntamentavia/" title="Obre en finestra nova: Facebook">
136        <span style="display: none">Facebook</span>
137        <img src="/themes/avia/images/icons/social/facebook.png" alt="Facebook" width="32" height="32">
138    </a>
139  
140    <a target="_blank" aria-label="Instagram" href="https://www.instagram.com/ajuntamentavia/" title="Obre en finestra nova: Instagram">
141        <span style="display: none">Instagram</span>
142        <img src="/themes/avia/images/icons/social/instagram.png" alt="Instagram" width="32" height="32">
143    </a>
144            </div>
145                        <div class="toolbarItem">
146                <div id="toolbarLanguages">
147    <ul id="languages">
148        <li><a href="#" role="button" aria-expanded="false" aria-controls="languagesList" id="languagesToggle">Idiomes</a>
149            <ul id="languagesList">
150                                    <li><a class="link-language" href="https://www.avia.cat/altres-continguts/contactar?lang=ca" data-target="https://www.avia.cat/altres-continguts/contactar?lang=ca">Català</a></li>
151                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=esie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=es" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=esie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=es">Castellà</a></li>
152                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=enie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=en" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=enie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=en">Anglès</a></li>
153                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=deie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=de" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=deie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=de">Alemany</a></li>
154                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=frie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=fr" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=frie=UTF-8&amp;u=https://www.avia.cat/altres-continguts/contactar&amp;sl=ca&amp;tl=fr">Francès</a></li>
155                            </ul>
156        </li>
157    </ul>
158</div>
159<script>
160(function () {
161    var toggle = document.getElementById('languagesToggle');
162    if (!toggle) return;
163    var li = toggle.parentElement;
164    var submenu = li.querySelector('ul');
165    var links = Array.prototype.slice.call(submenu.querySelectorAll('a'));
166
167    function keyName(e) {
168        return e.key || e.code || e.keyCode;
169    }
170
171    function isSpaceKey(e) {
172        var key = keyName(e);
173        return key === ' ' || key === 'Spacebar' || key === 'Space' || key === 32;
174    }
175
176    function open(focusFirst) {
177        li.classList.add('is-open');
178        submenu.style.display = 'block';
179        submenu.style.padding = '1em';
180        toggle.setAttribute('aria-expanded', 'true');
181        if (focusFirst && links.length) links[0].focus();
182    }
183
184    function close() {
185        li.classList.remove('is-open');
186        submenu.style.display = '';
187        submenu.style.padding = '';
188        toggle.setAttribute('aria-expanded', 'false');
189    }
190
191    function isOpen() {
192        return toggle.getAttribute('aria-expanded') === 'true';
193    }
194
195    function focusLink(index) {
196        if (!links.length) return;
197        links[(index + links.length) % links.length].focus();
198    }
199
200    function focusedLinkIndex() {
201        return links.indexOf(document.activeElement);
202    }
203
204    toggle.addEventListener('click', function (e) {
205        e.preventDefault();
206        isOpen() ? close() : open(false);
207    });
208
209    toggle.addEventListener('keydown', function (e) {
210        var key = keyName(e);
211        if (key === 'Enter' || isSpaceKey(e)) {
212            e.preventDefault();
213            isOpen() ? close() : open(false);
214        } else if (key === 'ArrowDown' || key === 40) {
215            e.preventDefault();
216            open(true);
217        } else if (key === 'ArrowUp' || key === 38) {
218            e.preventDefault();
219            open(false);
220            focusLink(links.length - 1);
221        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
222            if (isOpen()) {
223                e.preventDefault();
224                close();
225            }
226        }
227    });
228
229    submenu.addEventListener('keydown', function (e) {
230        var key = keyName(e);
231        var index = focusedLinkIndex();
232
233        if (key === 'ArrowDown' || key === 40) {
234            e.preventDefault();
235            focusLink(index + 1);
236        } else if (key === 'ArrowUp' || key === 38) {
237            e.preventDefault();
238            focusLink(index - 1);
239        } else if (key === 'Home' || key === 36) {
240            e.preventDefault();
241            focusLink(0);
242        } else if (key === 'End' || key === 35) {
243            e.preventDefault();
244            focusLink(links.length - 1);
245        } else if (isSpaceKey(e)) {
246            e.preventDefault();
247            if (document.activeElement && document.activeElement.click) {
248                document.activeElement.click();
249            }
250        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
251            e.preventDefault();
252            close();
253            toggle.focus();
254        }
255    });
256
257    li.addEventListener('focusout', function () {
258        window.setTimeout(function () {
259            if (!li.contains(document.activeElement)) close();
260        }, 0);
261    });
262
263    document.addEventListener('click', function (e) {
264        if (!li.contains(e.target)) close();
265    });
266})();
267</script>
267
268                <div class="currentDate" style='padding:9px;color:white'>
269    <span id="clock" class="clock" title='Data i hora oficial' >
270        02.10.2026 | 16:05    </span>
271</div>            </div>
272        </div>
273    </div>
274</div>
275<div class="header ">
276    <div class="branding">
277        <div class="container-xl">
278            <div class="row">
279                <div class="col-md-8 col-sm-8 col-lg-8 logo_box">
280    <a class="logo" href="/" aria-label="Ajuntament d'Avià - Pàgina d'inici">
281        <img src="/themes/avia/images/logos/header.png" alt="" width="324" height="116" id="mainLogo">
282    </a>
283    </div>                <div class="col-md-4 col-sm-4 col-lg-4 middle search_box">
284    <form id="search_box" aria-label="Cercar:" name="search_box" method="get" action="/search">
285        <label for="search" accesskey="4">
286            <span class="visually-hidden">Cercar:</span>
287        </label>
288        <input id="search" name="search" type="text" aria-label="Cercar:" title="Cerca a tot el web" value="" placeholder="Cercar...">
289        <button type="submit" class="search-button" aria-label="Cerca"><i class="fa fa-search"></i></button>
290    </form>
291</div>
292            </div>
293        </div>
294    </div>
295        <div id="navbar-top" class="navbar navbar-expand-lg navbar-dark"><div class="nav"><div class="container-xl"><div class="row"><div class="col"><nav class="menu_principal" aria-label="menú"><div class="menu-flexible__wrapper menu-font-medium menu-alignment-left menu-spacing-normal menu-animation-fade menu-text-transform-none menu-columns-1" style="--menu-cols:1;--menu-submenu-width:200px;--menu-hover-delay:300ms;--menu-image-width:160px;" data-menu-columns="1" data-expand-type="click" data-menu-sticky="false" data-menu-alignment="left" data-menu-spacing="normal" data-menu-animation="fade" data-menu-external-icon="auto" data-menu-external-dim="false" data-menu-text-transform="none"><div class="menu-flexible__topbar"><a href="#" class="menu-flexible__toggle phoneMenuButton" aria-label="Menú" aria-expanded="false"><i class="fa fa-bars"></i></a></div><ul class="menu-flexible menu-flexible__list"><li class="menu-flexible__item page-1 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament" ><span class="menu-flexible__item-text">Ajuntament</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-12 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/alcaldia" ><span class="menu-flexible__item-text">Salutació de l&#039;Alcalde</span></a></li><li class="menu-flexible__item page-8 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/govern" ><span class="menu-flexible__item-text">Govern</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-13 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/consistori-municipal" ><span class="menu-flexible__item-text">Consistori municipal</span></a></li><li class="menu-flexible__item page-14 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/regidories-organitzacio-municipal" ><span class="menu-flexible__item-text">Regidories</span></a></li><li class="menu-flexible__item page-115 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/informacio-dels-regidors" ><span class="menu-flexible__item-text">Informació dels regidors</span></a></li><li class="menu-flexible__item page-116 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/agenda-politica" ><span class="menu-flexible__item-text">Agenda política</span></a></li><li class="menu-flexible__item page-15 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/grups-municipals" ><span class="menu-flexible__item-text">Grups municipals</span></a></li><li class="menu-flexible__item page-132 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/govern/altres-administracions" ><span class="menu-flexible__item-text">Altres administracions</span></a></li><li class="menu-flexible__item page-127 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="http://aplicacions.municat.gencat.cat/index.php?page=consulta&amp;mostraEns=0801160009&amp;accio=eleccions" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Resultats electorals</span></a></li></ul></li><li class="menu-flexible__item page-80 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/avia
295/govern-obert-i-transparencia/accio-de-govern-i-normativa/accio-de-govern-i-partits-politics/actes-de-ple" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Ple municipal</span></a></li><li class="menu-flexible__item page-20 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/avia/govern-obert-i-transparencia/accio-de-govern-i-normativa/accio-de-govern-i-partits-politics/acords-de-junta-de-govern" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Juntes de govern</span></a></li><li class="menu-flexible__item page-16 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/projectes-plans-campanyes-i-programes" ><span class="menu-flexible__item-text">Projectes, plans, campanyes i programes</span></a></li><li class="menu-flexible__item page-18 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://avia.eadministracio.cat/board" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Tauler d&#039;anuncis</span></a></li><li class="menu-flexible__item page-26 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://contractaciopublica.gencat.cat/ecofin_pscp/AppJava/cap.pscp?reqCode=viewDetail&amp;keyword=avi%C3%A0&amp;idCap=10905966&amp;ambit=&amp;" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Perfil de contractant</span></a></li><li class="menu-flexible__item page-126 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/avia/govern-obert-i-transparencia/accio-de-govern-i-normativa/normativa-plans-i-programes" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Normativa</span></a></li><li class="menu-flexible__item page-139 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/ordenances-fiscals" ><span class="menu-flexible__item-text">Ordenances Fiscals</span></a></li><li class="menu-flexible__item page-135 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/planejament-urbanistic" ><span class="menu-flexible__item-text">Planejament urbanístic</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-155 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/planejament-urbanistic/mapa-de-capacitat-acustica-del-municipi-" ><span class="menu-flexible__item-text">Mapa de capacitat acústica del municipi </span></a></li><li class="menu-flexible__item page-156 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/planejament-urbanistic/carta-de-colors" ><span class="menu-flexible__item-text">Carta de colors</span></a></li><li class="menu-flexible__item page-136 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/planejament-urbanistic/poum" ><span class="menu-flexible__item-text">POUM</span></a></li><li class="menu-flexible__item page-137 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/planejament-urbanistic/modificacions-del-poum" ><span class="menu-flexible__item-text">Modificacions del POUM</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-164 level4"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/planejament-urbanistic/modificacions-del-poum/modificacions-en-tramit-daprovacio" ><span class="menu-flexible__item-text">Modificacions en tràmit d&#039;aprovació</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-165 level5"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/planejament-urbanistic/modificacions-del-poum/modificacions-en-tramit-daprovacio/aprovacio-inicial-del-poum-en-lambit-del-pau-8-cal-piteu-davia" ><span class="menu-flexible__item-text">Aprovació inicial del (POUM) en l&#039;àmbit del PAU-8 Cal Piteu d&#039;Avià</span></a></li></ul></li></ul></li><li class="menu-flexible__item page-138 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/plane
295jament-urbanistic/cataleg-de-masies-" ><span class="menu-flexible__item-text">Catàleg de masies </span></a></li></ul></li><li class="menu-flexible__item page-122 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/que-es-la-seu-electronica" ><span class="menu-flexible__item-text">Seu electrònica</span></a></li><li class="menu-flexible__item page-123 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/transparencia" ><span class="menu-flexible__item-text">Transparència</span></a></li></ul></li><li class="menu-flexible__item page-10 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/serveis-i-tramits" ><span class="menu-flexible__item-text">Serveis i tràmits</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-160 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/documentacio-complementaria-a-la-sollicitud-dobres-provisionals" ><span class="menu-flexible__item-text">Documentació complementària a la sol·licitud d&#039;obres provisionals</span></a></li><li class="menu-flexible__item page-148 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/comunicacio-primera-ocupacio-dun-edifici" ><span class="menu-flexible__item-text">Comunicació primera ocupació d&#039;un edifici</span></a></li><li class="menu-flexible__item page-146 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/comunicacio-previa-dobra" ><span class="menu-flexible__item-text">Comunicació prèvia d&#039;obra</span></a></li><li class="menu-flexible__item page-144 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/comunicacio-previa-dinstallacions-fotovoltaiques-en-sol-urba" ><span class="menu-flexible__item-text">Comunicació prèvia d&#039;instal·lacions fotovoltaiques en sòl urbà</span></a></li><li class="menu-flexible__item page-82 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/oficines-municipals" ><span class="menu-flexible__item-text">Oficines municipals</span></a></li><li class="menu-flexible__item page-33 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/serveis" ><span class="menu-flexible__item-text">Serveis</span></a></li><li class="menu-flexible__item page-31 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://avia.eadministracio.cat/dossier.1" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Tràmits i gestions</span></a></li><li class="menu-flexible__item page-32 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/impostos" ><span class="menu-flexible__item-text">Impostos</span></a></li><li class="menu-flexible__item page-88 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/factura-electronica" ><span class="menu-flexible__item-text">Factura electrònica</span></a></li></ul></li><li class="menu-flexible__item page-2 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/avia" ><span class="menu-flexible__item-text">Avià</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-34 level2"><a class="menu-flexible__link" aria-expanded="false" href="/avia/com-arribar-hi" ><span class="menu-flexible__item-text">Com arribar-hi</span></a></li><li class="menu-flexible__item page-36 level2"><a class="menu-flexible__link" aria-expanded="false" href="/avia/planol--guia-de-carrers" ><span class="menu-flexible__item-text">Plànol / Guia de carrers</span></a></li><li class="menu-flexible__item page-3 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/avia/guia-del-municipi" ><span class="menu-flexible__item-text">Guia del municipi</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-37 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/guia-del-municipi/equipaments" ><span class="menu-flexible__item-text">Equipaments</span></a></li><li class="menu-flexible__item page-39 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/guia-del-municipi/empreses-i-comercos" ><span class="menu-flexible__item-text">Empreses i comerços</span></a></li><li class="menu-flexible__item page-40 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/guia-del-municipi/entitats-i-associacions" ><span class="menu-flexible__item-text">Entitats i associacions</span></a></li><li class="menu-flexible__item page-42 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/guia-del-municipi/submnistraments" ><span class="menu-flexible__item-text">Submnistraments</span></a></li><li class="menu-flexible__item page-43 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/guia-del-municipi/emergencie
295s" ><span class="menu-flexible__item-text">Emergències</span></a></li></ul></li><li class="menu-flexible__item page-7 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/avia/informacio-del-municipi" ><span class="menu-flexible__item-text">Informació del municipi</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-46 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/informacio-del-municipi/historia" ><span class="menu-flexible__item-text">Història</span></a></li><li class="menu-flexible__item page-47 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/informacio-del-municipi/el-municipi-en-xifres" ><span class="menu-flexible__item-text">El municipi en xifres</span></a></li><li class="menu-flexible__item page-49 level3"><a class="menu-flexible__link" aria-expanded="false" href="/avia/informacio-del-municipi/patrimoni-cultural" ><span class="menu-flexible__item-text">Patrimoni cultural</span></a></li></ul></li><li class="menu-flexible__item page-48 level2"><a class="menu-flexible__link" aria-expanded="false" href="/avia/informacio-geografica" ><span class="menu-flexible__item-text">Informació geogràfica</span></a></li></ul></li><li class="menu-flexible__item page-131 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/visitans" ><span class="menu-flexible__item-text">Visita&#039;ns</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-50 level2"><a class="menu-flexible__link" aria-expanded="false" href="/visitans/festes-i-fires" ><span class="menu-flexible__item-text">Festes i fires</span></a></li><li class="menu-flexible__item page-41 level2"><a class="menu-flexible__link" aria-expanded="false" href="/visitans/llocs-dinteres" ><span class="menu-flexible__item-text">Llocs d&#039;interès</span></a></li><li class="menu-flexible__item page-129 level2"><a class="menu-flexible__link" aria-expanded="false" href="/visitans/rutes" ><span class="menu-flexible__item-text">Rutes</span></a></li><li class="menu-flexible__item page-38 level2"><a class="menu-flexible__link" aria-expanded="false" href="/visitans/on-dormir" ><span class="menu-flexible__item-text">On dormir</span></a></li><li class="menu-flexible__item page-130 level2"><a class="menu-flexible__link" aria-expanded="false" href="/visitans/on-menjar" ><span class="menu-flexible__item-text">On menjar</span></a></li></ul></li><li class="menu-flexible__item page-4 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/actualitat" ><span class="menu-flexible__item-text">Actualitat</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-53 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/noticies" ><span class="menu-flexible__item-text">Notícies</span></a></li><li class="menu-flexible__item page-54 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/agenda" ><span class="menu-flexible__item-text">Agenda</span></a></li><li class="menu-flexible__item page-128 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/avisos" ><span class="menu-flexible__item-text">Avisos</span></a></li><li class="menu-flexible__item page-55 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/butlleti-digital" ><span class="menu-flexible__item-text">Butlletí digital</span></a></li><li class="menu-flexible__item page-56 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/butlleti-municipal" ><span class="menu-flexible__item-text">Butlletí municipal</span></a></li><li class="menu-flexible__item page-57 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/rss" ><span class="menu-flexible__item-text">Rss</span></a></li><li class="menu-flexible__item page-58 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/hemeroteca" ><span class="menu-flexible__item-text">Hemeroteca</span></a></li></ul></li><li class="menu-flexible__item page-5 level1"><a class="menu-flexible__link" aria-expanded="false" href="/adreces-i-telefons" ><span class="menu-flexible__item-text">Adreces i telèfons</span></a></li><li class="menu-flexible__item page-150 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/subvencions-municipals" ><span class="menu-flexible__item-text">Subvencions</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-154 level2"><a class="menu-flexible__link" aria-expanded="false" href="/subvencions-municipals/subvencions-entitats" ><span class="menu-flexible__item-text">Subvencions Entitats</span></a></li></ul></li><li class="menu-flexible__item page-0 level1"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.weatherlink.com/embeddablePage/show/70c2bb95d6e1478eb46fb0678258e094/summary" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Estació Meteorològica</span></a></li></ul></div>
295<script>(function() {
296    'use strict';
297
298    // Mega panel
299
300    function initMegaPanels(navContainer) {
301        var menuItems = Array.prototype.slice.call(navContainer.querySelectorAll('[data-mega-id]'));
302        if (!menuItems.length) return;
303
304        var navUl    = navContainer.querySelector('ul');
305        var topItems = navUl
306            ? menuItems.filter(function(el) { return el.parentElement === navUl; })
307            : menuItems;
308
309        var wrapper    = navContainer.closest('.menu-flexible__wrapper');
310        var isClick    = wrapper && wrapper.getAttribute('data-expand-type') === 'click';
311
312        menuItems.forEach(function(item) {
313            var panel = getPanelForItem(item, navContainer);
314            if (!panel) return;
315
316            if (isClick) {
317                var link = item.querySelector('a');
318                if (link) {
319                    link.addEventListener('click', function(e) {
320                        // En mòbil, els elements naveguen directament sense desplegar submenús
321                        if (window.innerWidth <= 992) return;
322                        if (panel.classList.contains('mf-mega-visible')) {
323                            // Segon clic: navegar
324                            return;
325                        }
326                        e.preventDefault();
327                        hideAllMegaPanels(navContainer);
328                        showPanel(item, panel);
329                    });
330                }
331            } else {
332                var hoverDelay = parseInt(
333                    getComputedStyle(wrapper).getPropertyValue('--menu-hover-delay'), 10
334                ) || 0;
335                var hoverTimer = null;
336
337                var leaveTimer = null;
338
339                item.addEventListener('mouseenter', function() {
340                    clearTimeout(hoverTimer);
341                    clearTimeout(leaveTimer);
342                    if (hoverDelay > 0) {
343                        hoverTimer = setTimeout(function() { showPanel(item, panel); }, hoverDelay);
344                    } else {
345                        showPanel(item, panel);
346                    }
347                });
348                item.addEventListener('mouseleave', function(e) {
349                    clearTimeout(hoverTimer);
350                    if (!panel.contains(e.relatedTarget)) {
351                        leaveTimer = setTimeout(function() { hidePanel(item, panel); }, 300);
352                    }
353                });
354                panel.addEventListener('mouseenter', function() {
355                    clearTimeout(leaveTimer);
356                });
357                panel.addEventListener('mouseleave', function(e) {
358                    clearTimeout(hoverTimer);
359                    clearTimeout(leaveTimer);
360                    if (!item.contains(e.relatedTarget)) hidePanel(item, panel);
361                });
362
363                // Tàctil: fallback quan hover no disponible (només escriptori tàctil)
364                var link = item.querySelector('a');
365                if (link) {
366                    link.addEventListener('click', function(e) {
367                        if (window.matchMedia('(hover: none)').matches && window.innerWidth > 992) {
368                            if (panel.classList.contains('mf-mega-visible')) {
369                                // Segon clic en tàctil: navegar
370                                return;
371                            }
372                            e.preventDefault();
373                            hideAllMegaPanels(navContainer);
374                            showPanel(item, panel);
375                        }
376                    });
377                }
378            }
379        });
380
381        navContainer.addEventListener('keydown', function(e) {
382            handleMegaKeydown(e, navContainer, topItems);
383        });
384
385        if (!isClick) {
386            navContainer.addEventListener('focusin', function(e) {
387                var item = e.target.closest('[data-mega-id]');
388                if (!item) return;
389                var panel = getPanelForItem(item, navContainer);
390                if (!panel) return;
391                hideAllMegaPanels(navContainer);
392                showPanel(item, panel);
393            });
394        }
395
396        navContainer.addEventListener('focusout', function() {
397            setTimeout(function() {
398                if (!navContainer.contains(document.activeElement)) {
399                    hideAllMegaPanels(navContainer);
400                }
401            }, 0);
402        });
403
404        document.addEventListener('click', function(e) {
405            if (!navContainer.contains(e.target)) {
406                hideAllMegaPanels(navContainer);
407            }
408        });
409    }
410
411    function handleMegaKeydown(e, navContainer, topItems) {
412        var focused = document.activeElement;
413        if (!focused) return;
414
415        var currentItem = focused.closest('[data-mega-id]');
416        var currentPanel = focused.closest('.menu-flexible__mega-panel');
417        var key = e.key || e.code || e.keyCode;
418
419        function directLink(item) {
420            if (!item) return null;
421            return Array.prototype.slice.call(item.children).find(function(el) {
422                return el.tagName === 'A';
423            }) || item.querySelector('a');
424        }
425
426        function itemForPanel(panel) {
427            if (!panel) return null;
428            var id = panel.getAttribute('data-mega-id');
429            return id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
430        }
431
432        function focusPanelLink(panel, index) {
433            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
434            if (!links.length) return;
435            links[(index + links.length) % links.length].focus();
436        }
437
438        function focusPanelSibling(panel, offset) {
439            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
440            var idx = links.indexOf(focused);
441            if (idx === -1) return;
442            links[(idx + offset + links.length) % links.length].focus();
443        }
444
445        function panelColumnForLink(link) {
446            return link ? link.closest('.menu-flexible__mega-col') : null;
447        }
448
449        function focusAdjacentPanelColumn(panel, offset) {
450            var columns = Array.prototype.slice.call(panel.querySelectorAll('.menu-flexible__mega-col'));
451            var currentColumn = panelColumnForLink(focused);
452            var idx = columns.indexOf(currentColumn);
453            if (idx === -1) return false;
454
455            var targetColumn = columns[(idx + offset + columns.length) % columns.length];
456            var targetLink = targetColumn.querySelector('a');
457            if (targetLink) {
458                targetLink.focus();
459                return true;
460            }
461
462            return false;
463        }
464
465        function focusTopItem(item, offset) {
466            var idx = topItems.indexOf(item);
467            if (idx === -1) return;
468
469            var next = topItems[(idx + offset + topItems.length) % topItems.length];
470            hideAllMegaPanels(navContainer);
471
472            var nextLink = directLink(next);
473            if (nextLink) {
474                nextLink.focus();
475                var nextPanel = getPanelForItem(next, navContainer);
476                if (nextPanel) showPanel(next, nextPanel);
477            }
478        }
479
480        switch (key) {
481            case 'Escape':
482            case 'Esc':
483            case 27: {
484                e.preventDefault();
485                hideAllMegaPanels(navContainer);
486                if (currentPanel) {
487                    var item = itemForPanel(currentPanel);
488                    var lnk = directLink(item);
489                    if (lnk) lnk.focus();
490                }
491                break;
492            }
493
494            case 'ArrowRight':
495            case 39:
496            case 'ArrowLeft':
497            case 37: {
498                var direction = (key === 'ArrowRight' || key === 39) ? 1 : -1;
499                e.preventDefault();
500
501                if (currentPanel) {
502                    if (!focusAdjacentPanelColumn(currentPanel, direction)) {
503                        var ownerItem = itemForPanel(currentPanel);
504                        focusTopItem(ownerItem, direction);
505                    }
506                    break;
507                }
508
509                if (!currentItem) return;
510                focusTopItem(currentItem, direction);
511                break;
512            }
513
514            case 'ArrowDown':
515            case 40: {
516                e.preventDefault();
517                if (currentPanel) {
518                    focusPanelSibling(currentPanel, 1);
519                    break;
520                }
521                if (!currentItem) return;
522                var panel = getPanelForItem(currentItem, navContainer);
523                if (!panel) return;
524                if (!panel.classList.contains('mf-mega-visible')) {
525                    hideAllMegaPanels(navContainer);
526                    showPanel(currentItem, panel);
527                }
528                focusPanelLink(panel, 0);
529                break;
530            }
531
532            case ' ':
533            case 'Space':
534            case 'Spacebar':
535            case 32: {
536                if (currentPanel || !currentItem) return;
537                var spacePanel = getPanelForItem(currentItem, navContainer);
538                if (!spacePanel) return;
539
540                e.preventDefault();
541                if (spacePanel.classList.contains('mf-mega-visible')) {
542                    hidePanel(currentItem, spacePanel);
543                } else {
544                    hideAllMegaPanels(navContainer);
545                    showPanel(currentItem, spacePanel);
546                }
547                break;
548            }
549
550            case 'ArrowUp':
551            case 38: {
552                if (!currentPanel) return;
553                e.preventDefault();
554                var panelLinks = Array.prototype.slice.call(currentPanel.querySelectorAll('a'));
555                var focusedIndex = panelLinks.indexOf(focused);
556
557                if (focusedIndex > 0) {
558                    focusPanelLink(currentPanel, focusedIndex - 1);
559                } else {
560                    var parentItem = itemForPanel(currentPanel);
561                    var parentLink = directLink(parentItem);
562                    if (parentLink) parentLink.focus();
563                    if (parentItem) hidePanel(parentItem, currentPanel);
564                }
565                break;
566            }
567        }
568    }
569
570    function getPanelForItem(item, navContainer) {
571        var id = item.getAttribute('data-mega-id');
572        return id
573            ? navContainer.querySelector('.menu-flexible__mega-panel[data-mega-id="' + id + '"]')
574            : null;
575    }
576
577    function showPanel(item, panel) {
578        panel.classList.add('mf-mega-visible');
579        panel.setAttribute('aria-hidden', 'false');
580        var link = item.querySelector('a');
581        if (link) link.setAttribute('aria-expanded', 'true');
582    }
583
584    function hidePanel(item, panel) {
585        panel.classList.remove('mf-mega-visible');
586        panel.setAttribute('aria-hidden', 'true');
587        var link = item.querySelector('a');
588        if (link) link.setAttribute('aria-expanded', 'false');
589    }
590
591    function hideAllMegaPanels(navContainer) {
592        navContainer.querySelectorAll('.menu-flexible__mega-panel.mf-mega-visible')
593            .forEach(function(panel) {
594                var id   = panel.getAttribute('data-mega-id');
595                var item = id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
596                if (item) {
597                    hidePanel(item, panel);
598                } else {
599                    panel.classList.remove('mf-mega-visible');
600                    panel.setAttribute('aria-hidden', 'true');
601                }
602            });
603    }
604
605
606    // Tecles de fletxa (menú estàndard)
607
608    function initStandardKeyboard(wrapper) {
609        var menu = wrapper.querySelector('.menu-flexible__list');
610        if (!menu) return;
611
612        function closeAll() {
613            Array.prototype.slice.call(menu.querySelectorAll('.menu-flexible__item[focus="true"]'))
614                .forEach(function(item) {
615                    item.setAttribute('focus', 'false');
616                    var submenu = Array.prototype.slice.call(item.children).find(function(el) {
617                        return el.classList && el.classList.contains('menu-flexible__submenu');
618                    });
619                    if (submenu) {
620                        submenu.style.left = '';
621                        submenu.style.opacity = '';
622                        submenu.style.visibility = '';
623                        submenu.style.pointerEvents = '';
624                        submenu.style.transform = '';
625                    }
626                    var link = Array.prototype.slice.call(item.children).find(function(el) {
627                        return el.tagName === 'A';
628                    });
629                    if (link && link.classList.contains('menu-flexible__link--dropdown')) {
630                        link.setAttribute('aria-expanded', 'false');
631                    }
632                });
633        }
634
635        wrapper.addEventListener('keydown', function(e) {
636            handleStandardKeydown(e, menu);
637        });
638
639        wrapper.addEventListener('focusout', function() {
640            setTimeout(function() {
641                if (!wrapper.contains(document.activeElement)) {
642                    closeAll();
643                }
644            }, 0);
645        });
646    }
647
648    function handleStandardKeydown(e, menu) {
649        var focused = document.activeElement;
650        if (!focused || !menu.contains(focused)) return;
651
652        var itemSel = '.menu-flexible__item';
653        var linkSel = '.menu-flexible__link';
654
655        var currentLi = focused.closest(itemSel);
656        if (!currentLi) return;
657
658        var parentUl = currentLi.parentElement;
659        var isLevel1 = parentUl === menu;
660
661        function directLink(li) {
662            var direct = Array.prototype.slice.call(li.children).find(function(el) {
663                return el.tagName === 'A';
664            });
665            return direct || li.querySelector(linkSel);
666        }
667
668        function siblingItems(ul) {
669            return Array.prototype.slice.call(ul.children).filter(function(el) {
670                return el.matches(itemSel);
671            });
672        }
673
674        function childMenu(li) {
675            return Array.prototype.slice.call(li.children).find(function(el) {
676                return el.classList && el.classList.contains('menu-flexible__submenu');
677            });
678        }
679
680        function setSubmenuVisible(li, visible) {
681            var submenu = childMenu(li);
682            if (!submenu) return;
683
684            if (visible) {
685                submenu.style.left = li.parentElement === menu ? '0' : '100%';
686                submenu.style.opacity = '1';
687                submenu.style.visibility = 'visible';
688                submenu.style.pointerEvents = 'auto';
689                submenu.style.transform = 'none';
690            } else {
691                submenu.style.left = '';
692                submenu.style.opacity = '';
693                submenu.style.visibility = '';
694                submenu.style.pointerEvents = '';
695                submenu.style.transform = '';
696            }
697        }
698
699        function setExpanded(li, expanded) {
700            li.setAttribute('focus', expanded ? 'true' : 'false');
701            setSubmenuVisible(li, expanded);
702            var lnk = directLink(li);
703            if (lnk && lnk.classList.contains('menu-flexible__link--dropdown')) {
704                lnk.setAttribute('aria-expanded', expanded ? 'true' : 'false');
705            }
706            if (!expanded) {
707                Array.prototype.slice.call(li.querySelectorAll(itemSel + '[focus="true"]'))
708                    .forEach(function(item) {
709                        item.setAttribute('focus', 'false');
710                        setSubmenuVisible(item, false);
711                        var childLink = directLink(item);
712                        if (childLink && childLink.classList.contains('menu-flexible__link--dropdown')) {
713                            childLink.setAttribute('aria-expanded', 'false');
714                        }
715                    });
716            }
717        }
718
719        function closeSiblings(li) {
720            Array.prototype.slice.call(li.parentElement.children)
721                .filter(function(item) {
722                    return item !== li && item.matches(itemSel);
723                })
724                .forEach(function(item) {
725                    setExpanded(item, false);
726                });
727        }
728
729        function openChild(li) {
730            var submenu = childMenu(li);
731            if (!submenu) return false;
732            closeSiblings(li);
733            setExpanded(li, true);
734            var firstChild = submenu.querySelector(linkSel);
735            if (firstChild) firstChild.focus();
736            return true;
737        }
738
739        function focusSibling(offset) {
740            var sibs = siblingItems(parentUl);
741            var idx  = sibs.indexOf(currentLi);
742            var lnk  = directLink(sibs[(idx + offset + sibs.length) % sibs.length]);
743            if (lnk) lnk.focus();
744        }
745
746        var key = e.key || e.code || e.keyCode;
747
748        switch (key) {
749            case 'ArrowRight':
750            case 39: {
751                if (!isLevel1) return;
752                e.preventDefault();
753                setExpanded(currentLi, false);
754                focusSibling(1);
755                break;
756            }
757            case 'ArrowLeft':
758            case 37: {
759                if (!isLevel1) return;
760                e.preventDefault();
761                setExpanded(currentLi, false);
762                focusSibling(-1);
763                break;
764            }
765            case 'ArrowDown':
766            case 40: {
767                e.preventDefault();
768                if (focused === directLink(currentLi) && openChild(currentLi)) {
769                    break;
770                }
771                var sibsDown = siblingItems(parentUl);
772                var idxDown  = sibsDown.indexOf(currentLi);
773                if (idxDown < sibsDown.length - 1) {
774                    var lnkDown = directLink(sibsDown[idxDown + 1]);
775                    if (lnkDown) lnkDown.focus();
776                }
777                break;
778            }
779            case 'ArrowUp':
780            case 38: {
781                e.preventDefault();
782                var sibsUp = siblingItems(parentUl);
783                var idxUp  = sibsUp.indexOf(currentLi);
784                if (idxUp > 0) {
785                    var lnkUp = directLink(sibsUp[idxUp - 1]);
786                    if (lnkUp) lnkUp.focus();
787                } else if (!isLevel1) {
788                    var parentItemUp = parentUl.closest(itemSel);
789                    if (parentItemUp) {
790                        setExpanded(parentItemUp, false);
791                        var parentLinkUp = directLink(parentItemUp);
792                        if (parentLinkUp) parentLinkUp.focus();
793                    }
794                }
795                break;
796            }
797            case ' ':
798            case 'Space':
799            case 'Spacebar':
800            case 32: {
801                if (!focused.classList.contains('menu-flexible__link--dropdown')) return;
802                e.preventDefault();
803                currentLi.getAttribute('focus') === 'true'
804                    ? setExpanded(currentLi, false)
805                    : openChild(currentLi);
806                break;
807            }
808            case 'Escape':
809            case 'Esc':
810            case 27: {
811                if (isLevel1 && currentLi.getAttribute('focus') !== 'true') return;
812                e.preventDefault();
813                if (!isLevel1) {
814                    var parentItemEsc = parentUl.closest(itemSel);
815                    if (parentItemEsc) {
816                        setExpanded(parentItemEsc, false);
817                        var parentLinkEsc = directLink(parentItemEsc);
818                        if (parentLinkEsc) parentLinkEsc.focus();
819                    }
820                } else {
821                    setExpanded(currentLi, false);
822                }
823                break;
824            }
825        }
826    }
827
828
829    // Click mode: expandir submenús via [focus=true]
830
831    function initClickExpand(wrapper) {
832        var menu = wrapper.querySelector('.menu-flexible__list');
833        if (!menu) return;
834
835        var itemSel        = '.menu-flexible__item';
836        var dropdownSel    = '.menu-flexible__link--dropdown';
837
838        function closeAll(container) {
839            Array.prototype.slice.call(container.querySelectorAll(itemSel + '[focus="true"]'))
840                .forEach(function(el) { el.setAttribute('focus', 'false'); });
841        }
842
843        function closeSiblings(item) {
844            var parentUl = item.parentElement;
845            Array.prototype.slice.call(parentUl.children)
846                .filter(function(el) {
847                    return el !== item
848                        && el.matches(itemSel)
849                        && el.getAttribute('focus') === 'true';
850                })
851                .forEach(function(el) {
852                    el.setAttribute('focus', 'false');
853                    closeAll(el);
854                });
855        }
856
857        menu.addEventListener('click', function(e) {
858            var link = e.target.closest(dropdownSel);
859            if (!link || !menu.contains(link)) return;
860
861            var item = link.parentElement;
862            if (!item || !item.matches(itemSel)) return;
863
864            // En mòbil, els elements naveguen directament sense desplegar submenús
865            if (window.innerWidth <= 992) return;
866
867            var isOpen = item.getAttribute('focus') === 'true';
868
869            if (isOpen) {
870                // Segon clic: navegar
871                return;
872            }
873
874            e.preventDefault();
875            closeSiblings(item);
876            item.setAttribute('focus', 'true');
877        });
878
879        document.addEventListener('click', function(e) {
880            var openItem = menu.querySelector(itemSel + '[focus="true"]');
881            if (!openItem) return;
882            if (!openItem.contains(e.target)) {
883                closeAll(menu);
884            }
885        });
886    }
887
888
889    // Hamburger (mòbil ≤992px)
890
891    class MenuFlexible {
892        constructor(wrapper) {
893            this.wrapper   = wrapper;
894            this.hamburger = wrapper.querySelector('.menu-flexible__toggle');
895            this.menu      = wrapper.querySelector('.menu-flexible__list');
896
897            if (!this.hamburger || !this.menu) return;
898
899            var parent  = this.menu.parentElement;
900            this.isMega = parent && parent.classList.contains('menu-flexible__nav-container');
901            this.target = this.isMega ? parent : this.menu;
902
903            // Ancestre que en mòbil és barra fixa de 44px amb overflow:clip i retalla
904            // el menú desplegat. En obrir, l'eixamplem; en tancar, el restaurem.
905            this.clipper = wrapper.closest('.nav');
906
907            this.init();
908            window.addEventListener('resize', () => this.handleResize());
909        }
910
911        init() {
912            this.hamburger.addEventListener('click', (e) => {
913                e.preventDefault();
914                e.stopPropagation();
915                this.toggleMenu();
916            });
917
918            document.addEventListener('click', (e) => {
919                if (!this.wrapper.contains(e.target) && this.isOpen()) {
920                    this.closeMenu();
921                }
922            });
923
924            this.menu.querySelectorAll('a').forEach(link => {
925                link.addEventListener('click', () => {
926                    if (window.innerWidth <= 992 && this.isOpen()) {
927                        this.closeMenu();
928                    }
929                });
930            });
931        }
932
933        isOpen()     { return this.target.classList.contains('show'); }
934        toggleMenu() { this.isOpen() ? this.closeMenu() : this.openMenu(); }
935
936        liftClip() {
937            if (this.clipper && window.innerWidth <= 992) {
938                this.clipper.style.height = 'auto';
939                this.clipper.style.maxHeight = 'none';
940                this.clipper.style.overflow = 'visible';
941            }
942        }
943
944        restoreClip() {
945            if (this.clipper) {
946                this.clipper.style.height = '';
947                this.clipper.style.maxHeight = '';
948                this.clipper.style.overflow = '';
949            }
950        }
951
952        openMenu() {
953            this.target.classList.add('show');
954            this.target.style.display = this.isMega ? 'block' : 'flex';
955            if (this.isMega) this.menu.style.display = 'flex';
956            this.liftClip();
957            this.hamburger.classList.add('active');
958            this.hamburger.setAttribute('aria-expanded', 'true');
959        }
960
961        closeMenu() {
962            this.target.classList.remove('show');
963            this.target.style.display = 'none';
964            if (this.isMega) {
965                this.menu.style.display = '';
966                var nc = this.wrapper.querySelector('.menu-flexible__nav-container');
967                if (nc) hideAllMegaPanels(nc);
968            }
969            this.restoreClip();
970            this.hamburger.classList.remove('active');
971            this.hamburger.setAttribute('aria-expanded', 'false');
972        }
973
974        handleResize() {
975            if (window.innerWidth > 992) {
976                this.target.classList.remove('show');
977                this.target.style.display = '';
978                if (this.isMega) this.menu.style.display = '';
979                this.restoreClip();
980                this.hamburger.classList.remove('active');
981                this.hamburger.setAttribute('aria-expanded', 'false');
982            }
983        }
984    }
985
986
987    // Init
988
989    function init() {
990        document.querySelectorAll('.menu-flexible__wrapper').forEach(function(wrapper) {
991            var navContainer = wrapper.querySelector('.menu-flexible__nav-container');
992            if (navContainer) {
993                initMegaPanels(navContainer);
994            } else {
995                initStandardKeyboard(wrapper);
996                if (wrapper.getAttribute('data-expand-type') === 'click') {
997                    initClickExpand(wrapper);
998                }
999            }
1000            new MenuFlexible(wrapper);
1001            if (wrapper.getAttribute('data-menu-sticky') === 'true') {
1002                var stickyTarget = wrapper.closest('#navbar-top')
1003                                || wrapper.closest('.navbar')
1004                                || wrapper.closest('nav');
1005                if (stickyTarget) {
1006                    stickyTarget.classList.add('menu-sticky-enabled');
1007                    document.body.classList.add('has-sticky-menu');
1008
1009                    var navbarHeight   = stickyTarget.offsetHeight;
1010                    var navbarTop      = stickyTarget.getBoundingClientRect().top + window.scrollY;
1011                    var bodyPadApplied = false;
1012
1013                    function updateStickyOffset() {
1014                        navbarHeight = stickyTarget.offsetHeight;
1015                        document.documentElement.style.setProperty('--skip-links-sticky-offset', navbarHeight + 'px');
1016
1017                        if (bodyPadApplied) {
1018                            document.body.style.paddingTop = navbarHeight + 'px';
1019                        }
1020                    }
1021
1022                    function getTargetFromHash(hash) {
1023                        if (!hash || hash.charAt(0) !== '#') {
1024                            return null;
1025                        }
1026
1027                        try {
1028                            return document.getElementById(decodeURIComponent(hash.substring(1)));
1029                        } catch (error) {
1030                            return document.getElementById(hash.substring(1));
1031                        }
1032                    }
1033
1034                    function scrollToSkipTarget(hash) {
1035                        var target = getTargetFromHash(hash);
1036                        if (!target) {
1037                            return;
1038                        }
1039
1040                        updateStickyOffset();
1041
1042                        var expectedTop = target.getBoundingClientRect().top + window.scrollY - navbarHeight;
1043                        if (expectedTop > navbarTop) {
1044                            applyFixed();
1045                        } else {
1046                            removeFixed();
1047                        }
1048
1049                        try {
1050                            target.focus({ preventScroll: true });
1051                        } catch (error) {
1052                            target.focus();
1053                        }
1054
1055                        var targetTop = target.getBoundingClientRect().top + window.scrollY;
1056                        window.scrollTo(0, Math.max(targetTop - navbarHeight, 0));
1057                    }
1058
1059                    document.querySelectorAll('.skip-links a[href^="#"]').forEach(function(link) {
1060                        link.addEventListener('click', function(event) {
1061                            var hash = link.getAttribute('href');
1062                            var target = getTargetFromHash(hash);
1063                            if (!target) {
1064                                return;
1065                            }
1066
1067                            event.preventDefault();
1068
1069                            if (window.history && window.history.pushState) {
1070                                window.history.pushState(null, '', hash);
1071                            } else {
1072                                window.location.hash = hash;
1073                            }
1074
1075                            scrollToSkipTarget(hash);
1076                        });
1077                    });
1078
1079                    updateStickyOffset();
1080
1081                    function applyFixed() {
1082                        if (!stickyTarget.classList.contains('fixed-top')) {
1083                            updateStickyOffset();
1084                            stickyTarget.classList.add('fixed-top');
1085                            document.body.style.paddingTop = navbarHeight + 'px';
1086                            bodyPadApplied = true;
1087                        }
1088                    }
1089
1090                    function removeFixed() {
1091                        if (stickyTarget.classList.contains('fixed-top')) {
1092                            stickyTarget.classList.remove('fixed-top');
1093                            document.body.style.paddingTop = '';
1094                            bodyPadApplied = false;
1095                        }
1096                    }
1097
1098                    window.addEventListener('scroll', function() {
1099                        if (window.scrollY > navbarTop) {
1100                            applyFixed();
1101                        } else {
1102                            removeFixed();
1103                        }
1104                    });
1105
1106                    window.addEventListener('resize', function() {
1107                        updateStickyOffset();
1108                        if (!stickyTarget.classList.contains('fixed-top')) {
1109                            navbarTop = stickyTarget.getBoundingClientRect().top + window.scrollY;
1110                        }
1111                    });
1112
1113                    if ('ResizeObserver' in window) {
1114                        new ResizeObserver(updateStickyOffset).observe(stickyTarget);
1115                    }
1116
1117                    stickyTarget.querySelectorAll('img').forEach(function(image) {
1118                        if (!image.complete) {
1119                            image.addEventListener('load', updateStickyOffset, { once: true });
1120                        }
1121                    });
1122
1123                    window.addEventListener('load', updateStickyOffset);
1124
1125                    if (window.scrollY > navbarTop) applyFixed();
1126
1127                    if (window.location.hash) {
1128                        window.setTimeout(function() {
1129                            scrollToSkipTarget(window.location.hash);
1130                        }, 0);
1131                    }
1132                }
1133            }
1134        });
1135    }
1136
1137    if (document.readyState === 'loading') {
1138        document.addEventListener('DOMContentLoaded', init);
1139    } else {
1140        init();
1141    }
1142})();
1143</script>
1143</nav></div></div></div></div></div>        </div>        </header>
1144                <main id="main-content" tabindex="-1">
1145            <div class="content">
1146                <div class="container-xl columns " id="Path">
1147    <div class="row">
1148        <nav aria-label="breadcrumb">
1149            <ol class="breadcrumb">
1150            <li class="breadcrumb-item">
1151    <a href="/" target="_self">
1152        <span style="display: none">home</span><i class="fa fa-home" aria-hidden="true"></i>    </a>
1153    </li>
1154<li class="breadcrumb-item">
1155    <a href="/altres-continguts" target="_self">
1156        Altres continguts    </a>
1157        <button class="btn dropdown-toggle" type="button" id="defaultDropdow6" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false" aria-label="Desplega"></button>
1158    <ul class="dropdown-menu" aria-label="defaultDropdown6">
1159                    <li><a class="dropdown-item" href="/altres-continguts/credits">Crèdits</a></li>
1160                    <li><a class="dropdown-item" href="/altres-continguts/accessibilitat">Accessibilitat</a></li>
1161                    <li><a class="dropdown-item" href="/altres-continguts/contactar">Contactar</a></li>
1162                    <li><a class="dropdown-item" href="/altres-continguts/avis-legal">Avís legal</a></li>
1163                    <li><a class="dropdown-item" href="/altres-continguts/proteccio-de-dades">Protecció de dades</a></li>
1164                    <li><a class="dropdown-item" href="/altres-continguts/politica-de-xarxes-socials">Política de Xarxes Socials</a></li>
1165            </ul>
1166    </li>
1167            </ol>
1168        </nav>
1169    </div>
1170</div>
1171                <div class="container-xl columns">
1172                                        <div class="row">
1173    <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 leftSidebar responsiveHeight" data-nosnippet>
1174        <nav class="menuLeft" id="Menuleft_page" aria-label="Menú Contactar">
1175                    <ul>
1176                <li class="subMenuPage-63 level2">
1177    <a href="/altres-continguts/credits" target="_self">
1178        Crèdits            </a>
1179
1180    </li>
1181<li class="subMenuPage-158 level2">
1182    <a href="/altres-continguts/accessibilitat" target="_self">
1183        Accessibilitat            </a>
1184
1185    </li>
1186<li class="subMenuPage-62 current level2">
1187    <a href="/altres-continguts/contactar" target="_self" aria-current="page">
1188        Contactar            </a>
1189
1190    </li>
1191<li class="subMenuPage-59 level2">
1192    <a href="/altres-continguts/avis-legal" target="_self">
1193        Avís legal            </a>
1194
1195    </li>
1196<li class="subMenuPage-60 level2">
1197    <a href="/altres-continguts/proteccio-de-dades" target="_self">
1198        Protecció de dades            </a>
1199
1200    </li>
1201<li class="subMenuPage-145 level2">
1202    <a href="/altres-continguts/politica-de-xarxes-socials" target="_self">
1203        Política de Xarxes Socials            </a>
1204
1205    </li>
1206            </ul>
1207                    </nav>
1208</div>
1209    <div class="col-xs-12 col-sm-12 col-md-9 col-lg-9 article responsiveHeight" id="readspeakerPage" tabindex="-1">
1210                    <div class="hideTablets">
1211    </div>
1212<h1 class="title"  id='title0' data-attribute="Contactar">Contactar</h1><div class="showTablets">
1213    </div>
1214<div>
1215        <div class="dinamic">
1216                                </div>            <div id="form">
1217        <form id="Form1" aria-label="Formulari de contacte" name="buildedForm" method="post" enctype="multipart/form-data" action="https://www.avia.cat/altres-continguts/contactar" autocomplete="on" novalidate>
1218        <button type="button" class="form-hide" aria-label="Tanca formulari" onclick="$('#Form1 .form-body').slide
1218Up('fold', function () { setEqualHeight($('.content .container > div.enlarge'));$('#Form1 .form-show').show(); $('#Form1 .form-hide').hide(); });">
1219            <i class="fa fa-chevron-up" aria-hidden="true"></i>
1220        </button>
1221        <button type="button" class="form-show" aria-label="Mostra formulari" style="display:none;" onclick="$('#Form1 .form-body').slideDown('fold', function () { $('#Form1 .form-show').hide(); $('#Form1 .form-hide').show(); });">
1222            <i class="fa fa-chevron-down" aria-hidden="true"></i>
1223        </button>
1224        <h2 class="form-title ">Formulari de contacte </h2>
1225                <div class="form-body">
1226            <div> </div>
1227            <div id="errorSubmit" class="container"></div>
1228            <input type="hidden" name="cm_form" value="1"/>
1229                        <input type="hidden" name="idform" value="1">
1230            <input type="hidden" name="cref" value="1">
1231            <input type="hidden" name="titol" value="Formulari de contacte">
1232            <input type="hidden" name="rload" value="https://www.avia.cat/altres-continguts/contactar">
1233            <!--TODO revisió om fer el honeypot que no doni errors d'accessibilitat-->
1234            <div class="honeypot" aria-hidden="true">
1235                <label for="extra_option_text" class="visually-hidden">No omplir</label>
1236                <input type="text" id="extra_option_text" name="extra_option_text" tabindex="-1" autocomplete="off">
1237            </div>
1238            <p class="text-danger">Els camps marcats amb un asterisc (*) són obligatoris.</p><div id='form1-1'  class="form-field">
1239    <span id='sprytextfield1'>
1240        <label for="1" title="Nom i cognoms" class="form-field-title">
1241            Nom i cognoms                    </label>
1242        <input id="1" 
1243            name="field_1" 
1244            size="47"                        type='text' 
1245            value=""
1246                        autocomplete = "off"
1247                        placeholder=""
1248                                />
1249            </span>
1250</div>
1251<div id='form1-2' class="form-field">
1252    <span id='sprytextfield2'>
1253        <label for="2" class="form-field-title">
1254            Correu electrònic            <span class="form-field-required">*</span>        </label>
1255        <input
1256                        required            size="47"                        type='email' name="field_2"
1257            id="2"
1258            value=""
1259            placeholder=""
1260            autocomplete="email"
1261        />
1262                        <label for="copia_2" class="form-field-title">Correu electrònic (còpia)</label>
1263            <input style="border-left-width: 8px;" 
1264                   size="47"                   autocomplete="email"
1265                                      type='email' name="copia_field_2"
1266                   id="copia_2"
1267                   value=""
1268                                       required                   placeholder=""
1269            />
1270            <span class="help">S'ha d'escriure dues vegades per assegurar que l'escrivim correctament.</span>
1271            </span>
1272</div>
1273<div id='form1-4'  class="form-field">
1274    <span id='sprytextfield4' >
1275        <label for="4" class="form-field-title">
1276            Comentari o consulta                    </label>
1277                        <textarea id="4" name="field_4" rows="2" cols="37" placeholder=""   autocomplete = "off"></textarea>
1278            </span>
1279</div>
1280                        <div class="rgpd-box"><div class="page-62 js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row  o-widget-wrapper--title-top o-widget-wrapper--title-style-text" ><div class="o-widget-title-slot o-widget__title"><span>Protecció de dades</span></div><div class="o-widget-container "><p>L'enviament des les dades introduïdes en aquest formulari per part de l'usuari, implicarà l'acceptació expressa i sense reserves de la política de protecció de dades personals que figura al peu d'aquesta pàgina.</p>
1281
1282<p>L'Ajuntament utilitzarà aquestes dades exclusivament per a la prestació del servei o gestió sol·licitada. En cap cas es cedirà o comunicarà a tercers les dades recollides sense consentiment de l'usuari, excepte quan siguin necessàries per a la prestació del servei s
1282ol·licitat o siguin requerides per les autoritats públiques competents, de conformitat amb les disposicions legals i reglamentàries aplicables en cada moment.</p>
1283</div>  </div></div></div>                        <div class="form-consent">
1284                <div class="form-consent__field">
1285                    <input type="checkbox" required="" value="acceptterms" name="acceptterms" id="acceptterms">
1286                    <label for="acceptterms">SÍ, DONO EL MEU CONSENTIMENT.</label>
1287                </div>
1288            </div>
1289                        <div class="alert ko captcha-error" role="alert" aria-live="assertive" hidden>
1290    No s'ha pogut validar el filtre anti-spam. Torneu-ho a provar.</div>
1291<script>
1292    (function () {
1293        var formId = "Form1";
1294        var siteKey = "6Lf9ma4mAAAAALLhrF6NaUwZ8QGndEhcyKmOHpVv";
1295        var action = "formulari_1";
1296        var form = document.getElementById(formId);
1297
1298        if (!form) {
1299            return;
1300        }
1301
1302        action = action.replace(/[^a-zA-Z0-9_\/]/g, '_').substring(0, 50);
1303
1304        if (!window.barnaRecaptchaV3Loader) {
1305            window.barnaRecaptchaV3Loader = (function () {
1306                var loadingPromise = null;
1307                var configuredSiteKey = null;
1308                var scriptElement = null;
1309                var loadTimeout = 15000;
1310
1311                function isReady() {
1312                    return typeof window.grecaptcha !== 'undefined'
1313                        && typeof window.grecaptcha.ready === 'function'
1314                        && typeof window.grecaptcha.execute === 'function';
1315                }
1316
1317                function load(requestedSiteKey) {
1318                    if (isReady()) {
1319                        return Promise.resolve(window.grecaptcha);
1320                    }
1321
1322                    if (configuredSiteKey !== null && configuredSiteKey !== requestedSiteKey) {
1323                        return Promise.reject(new Error('reCAPTCHA v3 ja s\'ha inicialitzat amb una altra clau.'));
1324                    }
1325
1326                    configuredSiteKey = requestedSiteKey;
1327
1328                    if (loadingPromise !== null) {
1329                        return loadingPromise;
1330                    }
1331
1332                    loadingPromise = new Promise(function (resolve, reject) {
1333                        var settled = false;
1334                        var timeoutId = null;
1335
1336                        function cleanupListeners() {
1337                            if (!scriptElement) {
1338                                return;
1339                            }
1340
1341                            scriptElement.removeEventListener('load', handleLoad);
1342                            scriptElement.removeEventListener('error', handleError);
1343                        }
1344
1345                        function resolveWhenReady() {
1346                            if (settled) {
1347                                return;
1348                            }
1349
1350                            if (
1351                                typeof window.grecaptcha === 'undefined'
1352                                || typeof window.grecaptcha.ready !== 'function'
1353                            ) {
1354                                rejectLoad(new Error('La API de reCAPTCHA v3 no està disponible.'));
1355                                return;
1356                            }
1357
1358                            window.grecaptcha.ready(function () {
1359                                if (settled) {
1360                                    return;
1361                                }
1362
1363                                if (typeof window.grecaptcha.execute !== 'function') {
1364                                    rejectLoad(new Error('La API de reCAPTCHA v3 no es pot executar.'));
1365                                    return;
1366                                }
1367
1368                                settled = true;
1369                                window.clearTimeout(timeoutId);
1370                                cleanupListeners();
1371                                resolve(window.grecaptcha);
1372                            });
1373                        }
1374
1375                        function rejectLoad(error) {
1376                            if (settled) {
1377                                return;
1378                            }
1379
1380                            settled = true;
1381                            window.clearTimeout(timeoutId);
1382                            cleanupListeners();
1383
1384                            if (scriptElement && scriptElement.parentNode) {
1385                                scriptElement.parentNode.removeChild(scriptElement);
1386                            }
1387                            scriptElement = null;
1388                            reject(error);
1389                        }
1390
1391                        function handleLoad() {
1392                            resolveWhenReady();
1393                        }
1394
1395                        function handleError() {
1396                            rejectLoad(new Error('No s\'ha pogut carregar la API de reCAPTCHA v3.'));
1397                        }
1398
1399                        scriptElement = document.createElement('script');
1400                        scriptElement.src = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(requestedSiteKey);
1401                        scriptElement.async = true;
1402                        scriptElement.defer = true;
1403                        scriptElement.setAttribute('data-barna-recaptcha-v3', 'true');
1404                        scriptElement.addEventListener('load', handleLoad);
1405                        scriptElement.addEventListener('error', handleError);
1406
1407                        timeoutId = window.setTimeout(function () {
1408                            rejectLoad(new Error('Temps d\'espera exhaurit carregant reCAPTCHA v3.'));
1409                        }, loadTimeout);
1410
1411                        document.head.appendChild(scriptElement);
1412                    }).then(function (recaptcha) {
1413                        loadingPromise = null;
1414                        return recaptcha;
1415                    }, function (error) {
1416                        loadingPromise = null;
1417                        throw error;
1418                    });
1419
1420                    return loadingPromise;
1421                }
1422
1423                return {
1424                    load: load
1425                };
1426            })();
1427        }
1428
1429        var loader = window.barnaRecaptchaV3Loader;
1430        var submitInProgress = false;
1431        var currentAttempt = 0;
1432        var operationTimeout = 15000;
1433
1434        function getSubmitButton() {
1435            return form.querySelector('input[type="submit"], button[type="submit"]');
1436        }
1437
1438        function getErrorMessage() {
1439            return form.querySelector('.captcha-error');
1440        }
1441
1442        function hideErrorMessage() {
1443            var errorMessage = getErrorMessage();
1444            if (errorMessage) {
1445                errorMessage.hidden = true;
1446            }
1447        }
1448
1449        function showErrorMessage() {
1450            var errorMessage = getErrorMessage();
1451            if (errorMessage) {
1452                errorMessage.hidden = false;
1453            }
1454        }
1455
1456        function removeCurrentToken() {
1457            var currentToken = form.querySelector('input[name="g-recaptcha-response"]');
1458            if (currentToken && currentToken.parentNode) {
1459                currentToken.parentNode.removeChild(currentToken);
1460            }
1461        }
1462
1463        function addToken(token) {
1464            var tokenField = document.createElement('input');
1465            tokenField.type = 'hidden';
1466            tokenField.name = 'g-recaptcha-response';
1467            tokenField.value = token;
1468            form.insertBefore(tokenField, form.firstChild);
1469        }
1470
1471        function setSubmitDisabled(disabled) {
1472            var submitButton = getSubmitButton();
1473            if (submitButton) {
1474                submitButton.disabled = disabled;
1475            }
1476        }
1477
1478        function withTimeout(promise, timeout) {
1479            return new Promise(function (resolve, reject) {
1480                var settled = false;
1481                var timeoutId = window.setTimeout(function () {
1482                    if (settled) {
1483                        return;
1484                    }
1485
1486                    settled = true;
1487                    reject(new Error('Temps d\'espera exhaurit validant reCAPTCHA v3.'));
1488                }, timeout);
1489
1490                promise.then(function (result) {
1491                    if (settled) {
1492                        return;
1493                    }
1494
1495                    settled = true;
1496                    window.clearTimeout(timeoutId);
1497                    resolve(result);
1498                }, function (error) {
1499                    if (settled) {
1500                        return;
1501                    }
1502
1503                    settled = true;
1504                    window.clearTimeout(timeoutId);
1505                    reject(error);
1506                });
1507            });
1508        }
1509
1510        function resetSubmit(attempt, showCaptchaError) {
1511            if (attempt !== currentAttempt) {
1512                return;
1513            }
1514
1515            currentAttempt++;
1516            submitInProgress = false;
1517            removeCurrentToken();
1518            setSubmitDisabled(false);
1519
1520            if (showCaptchaError) {
1521                showErrorMessage();
1522            }
1523        }
1524
1525        form.onsubmit = function (evt) {
1526            evt.preventDefault();
1527
1528            if (submitInProgress) {
1529                return false;
1530            }
1531
1532            submitInProgress = true;
1533            var attempt = ++currentAttempt;
1534
1535            hideErrorMessage();
1536            removeCurrentToken();
1537            setSubmitDisabled(true);
1538
1539            var tokenPromise = loader.load(siteKey).then(function (recaptcha) {
1540                if (attempt !== currentAttempt) {
1541                    throw new Error('Intent de reCAPTCHA v3 cancel·lat.');
1542                }
1543
1544                return recaptcha.execute(siteKey, {action: action});
1545            });
1546
1547            withTimeout(tokenPromise, operationTimeout).then(function (token) {
1548                if (attempt !== currentAttempt) {
1549                    return;
1550                }
1551
1552                if (typeof token !== 'string' || token.trim() === '') {
1553                    throw new Error('reCAPTCHA v3 ha retornat un token buit.');
1554                }
1555
1556                addToken(token);
1557
1558                if (reviewForm(form) !== true) {
1559                    resetSubmit(attempt, false);
1560                    return;
1561                }
1562
1563                HTMLFormElement.prototype.submit.call(form);
1564            }).catch(function () {
1565                resetSubmit(attempt, true);
1566            });
1567
1568            return false;
1569        };
1570
1571        // Inicia la càrrega en renderitzar la pàgina per mantenir el context de reCAPTCHA v3.
1572        // Si falla, el primer submit tornarà a intentar-la i mostrarà l'error només si no es recupera.
1573        loader.load(siteKey).catch(function () {});
1574    })();
1575</script>
1575
1576
1577            
1578            <input type="submit" id="buttonSubmit" value="Enviar" class="btn" aria-label='Enviar'>
1579        </div>
1580    </form>
1581    
1582    </div>
1583
1584<div id="formCancel"></div>
1585<script>
1586    function calcul_total() {
1587        var total = 0;
1588        $("input[id$=_total]").each(function() {
1589                const id_total       = $(this).attr('id');
1590                const id             = id_total.replace('_total','');
1591                const id_quantitat   = id_total.replace('_total','_quantitat');
1592                const id_percentatge = id_total.replace('_total','_percentatge');
1593                const id_preu        = id_total.replace('_total','_preu');
1594                const id_select      = id_total.replace('_total','_select_field');
1595                if ( ($("#"+id_quantitat).length) ) {
1596                    t = parseFloat($("#"+id).val().replace(',','.'))
1597                                *
1598                             parseFloat($("#"+id_quantitat).val().replace(',','.'));
1599
1600                }
1601                if ( ($("#"+id_preu).length) ) {
1602                    t = parseFloat($("#"+id).val().replace(',','.'))
1603                                *
1604                             parseFloat($("#"+id_preu).val().replace(',','.'));
1605                }
1606                if ( ($("#"+id_percentatge).length) ) {
1607                    t = parseFloat($("#"+id).val().replace(',','.'))
1608                                *
1609                             parseFloat($("#"+id_percentatge).val().replace(',','.'))/100;
1610                }
1611                if ( ($("#"+id_select).length) ) {
1612                    t = parseFloat($("#"+id+'_total').val().replace(',','.'));
1613                }
1614                if (!isNaN(t)) { total += t;}
1615        });
1616        return (total);
1617    }
1618    window.addEventListener('load', function(){
1619        // càlcul subtotals abans de la interacció de l'usuari
1620        for (let i = 0; i < 100; i++) {
1621            if (typeof window["quantityChange_"+i] === "function") {
1622                console.log("quantityChange_"+i+" is a function");
1623                window["quantityChange_"+i]();
1624            }
1625            if (typeof window["priceChange_"+i] === "function") {
1626                console.log("priceChange_"+i+" is a function");
1627                window["priceChange_"+i]();
1628            }
1629        }
1630        // càlcul total
1631        if (typeof window["calcul_total"] === "function") {
1632            valorMostrar = ((Math.round((calcul_total() + Number.EPSILON) * 100) / 100) + "").replace('.', ',')
1633            const numberFormat = new Intl.NumberFormat('es-ES');
1634            const stringNumber = valorMostrar.toString().replace(',', '.');
1635            $("#Total_total").text(numberFormat.format(stringNumber)+" Euros");
1636            $("#total").val(calcul_total());
1637        }
1638    });
1639</script>
1639
1640                            </div>
1641<div class="hideTablets">
1642                            </div>
1643<div id="share"><div class="js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row " ><div class="o-widget-container "><div class="o-share o-share--icones_rodones">
1644    
1645    <div class="o-share__list">
1646                    <a
1647                class="o-share__link o-share__link--facebook"
1648                href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.avia.cat%2Faltres-continguts%2Fcontactar"
1649                target="_blank"
1650                rel="noopener"
1651                title="Facebook"
1652            >
1653                <span class="o-share__icon" aria-hidden="true">
1654                    <i class="fa-brands fa-facebook-f"></i>
1655                </span>
1656                <span class="visually-hidden">Facebook</span>
1657            </a>
1658                    <a
1659                class="o-share__link o-share__link--x"
1660                href="https://twitter.com/intent/tweet?text=Contactar&amp;url=https%3A%2F%2Fwww.avia.cat%2Faltres-continguts%2Fcontactar"
1661                target="_blank"
1662                rel="noopener"
1663                title="X"
1664            >
1665                <span class="o-share__icon" aria-hidden="true">
1666                    <i class="fa-brands fa-x-twitter"></i>
1667                </span>
1668                <span class="visually-hidden">X</span>
1669            </a>
1670            </div>
1671</div>
1672</div>  </div></div></div>
1673<span class="updated">Darrera actualització: 22.12.2014 | 09:51</span>
1674                </div>
1675    </div>
1676                </div>
1677            </div>
1678        </main>
1679        <footer id="footer-content" tabindex="-1">
1680            <div class="footer">
1681    <div class="shortcuts">
1682    <div class="container-xl">            
1683        <div class="featuredItem responsiveHeight">
1684    <h2 class="title">RSS</h2>
1685    <p class="subtitle">L'actualitat a un clic</p>
1686    <ul id="cm_rss">
1687        <li style="background-image: url('/themes/avia/images/ico_16_rss.png');">
1688    <a href="/rss/12">
1689           Agenda    </a>
1690</li>
1691<li style="background-image: url('/themes/avia/images/ico_16_rss.png');">
1692    <a href="/rss/15">
1693           Agenda política    </a>
1694</li>
1695<li style="background-image: url('/themes/avia/images/ico_16_rss.png');">
1696    <a href="/rss/13">
1697           Avisos    </a>
1698</li>
1699<li style="background-image: url('/themes/avia/images/ico_16_rss.png');">
1700    <a href="/rss/11">
1701           Notícies    </a>
1702</li>
1703<li style="background-image: url('/themes/avia/images/ico_16_rss.png');">
1704    <a href="/rss/14">
1705           Publicacions    </a>
1706</li>
1707    </ul>
1708</div>
1709<div class="featuredItem responsiveHeight">
1710    <h2 class="title">Adreces i telèfons</h2>
1711    
1712    <img width="96" height="96" src="/themes/avia/images/icons/plugin_home.png" alt="">
1713
1714    <p class="elem_button">
1715        <a href="/adreces-i-telefons" aria-label="Adreces i telèfons">
1716            Accedeix        </a>
1717    </p>
1718</div>
1719<div class="featuredItem">
1720    <h2 class="title">Meteo</h2>
1721    <div id="cm_meteocat">
1722        <ul class="bxslider">
1723            <li>
1724    Dissabte, 3 d’octubre    <img width="80" height="80"
1725        alt="entre mig i molt ennuvolat"
1726        src="/themes/avia/images/meteocat/nuvol.png"
1727    >
1728    <p>
1729        T.Màx: 22&deg;
1730        <br>
1731        T.Min: 13&deg;
1732    </p>
1733            <p>
1734            Tarda
1735            <img alt="xàfec amb tempesta" width="24" height="24"
1736                src="/themes/avia/images/meteocat/tempesta.png"
1737            >
1738        </p>
1739    </li>
1740<li>
1741    Diumenge, 4 d’octubre    <img width="80" height="80"
1742        alt="entre poc i mig ennuvolat"
1743        src="/themes/avia/images/meteocat/nuvolina.png"
1744    >
1745    <p>
1746        T.Màx: 21&deg;
1747        <br>
1748        T.Min: 13&deg;
1749    </p>
1750            <p>
1751            Tarda
1752            <img alt="entre mig i molt ennuvolat" width="24" height="24"
1753                src="/themes/avia/images/meteocat/nuvol.png"
1754            >
1755        </p>
1756    </li>
1757        </ul>
1758        <div class="outside">
1759            <p><span id="slider-prev"></span><span id="slider-next"></span></p>
1760        </div>
1761
1762    </div>
1763</div>
1764<div class="featuredItem responsiveHeight">
1765    <h2 class="title">Butlletí digital</h2>
1766    <img width="96" height="96" src="/front/view/images/icons/plugin_newsletter.png" alt="">
1767    <p class="elem_button">
1768        <a href="/actualitat/butlleti-digital" aria-label="Butlletí digital">
1769            Subscriu-te        </a>
1770    </p>
1771</div>
1772<div id="cm_planol" class="featuredItem responsiveHeight">
1773    <h2 class="title">Plànol / Carrers</h2>
1774
1775    <img width="96" height="96" src="/themes/avia/images/icons/plugin_map.png" alt="">
1776
1777    <p class="elem_button">
1778        <a href="/avia/planol--guia-de-carrers" aria-label="Plànol">
1779            Accedeix        </a>
1780    </p>
1781</div>
1782    </div>
1783</div>
1784    <div class="hightlights">
1785        <div class="container-xl">
1786            <div class="highlights">
1787    <ul class="bxslider">
1788        <li>
1789        <a href="https://play.google.com/store/apps/details?id=com.dumainteractiva.avia" target="_blank" class="banner">
1790            <img src="/media/repository/baners_destacats/portada_peu/app_quadrada.png" alt="app" class="banner">
1791        APP        </a>
1792    </li>
1793    </ul>
1794</div>        </div>
1795    </div>
1796    <nav class="menu" aria-label="Peu de menú">
1797        <ul class="container-xl sitemap">
1798            <li class="page-1 Inferior">  <a class="page-1" href="/ajuntament" target="_self" >Ajuntament  </a><ul id="footer-menu-1"><li class="subMenuPage-12">  <a class="subMenuPage-12" href="/ajuntament/alcaldia" target="_self" >Salutació de l'Alcalde  </a></li><li class="subMenuPage-8">  <a class="subMenuPage-8" href="/ajuntament/govern" target="_self" >Govern  </a></li><li class="subMenuPage-80">  <a class="subMenuPage-80" href="https://www.seu-e.cat/web/avia/govern-obert-i-transparencia/accio-de-govern-i-normativa/accio-de-govern-i-partits-politics/actes-de-ple" target="_blank" rel="noopener noreferrer" >Ple municipal  </a></li><li class="subMenuPage-20">  <a class="subMenuPage-20" href="https://www.seu-e.cat/web/avia/govern-obert-i-transparencia/accio-de-govern-i-normativa/accio-de-govern-i-partits-politics/acords-de-junta-de-govern" target="_blank" rel="noopener noreferrer" >Juntes de govern  </a></li><li class="subMenuPage-16">  <a class="subMenuPage-16" href="/ajuntament/projectes-plans-campanyes-i-programes" target="_self" >Projectes, plans, campanyes i programes  </a></li><li class="subMenuPage-18">  <a class="subMenuPage-18" href="https://avia.eadministracio.cat/board" target="_blank" rel="noopener noreferrer" >Tauler d'anuncis  </a></li><li class="subMenuPage-26">  <a class="subMenuPage-26" href="https://contractaciopublica.gencat.cat/ecofin_pscp/AppJava/cap.pscp?reqCode=viewDetail&keyword=avi%C3%A0&idCap=10905966&ambit=&" target="_blank" rel="noopener noreferrer" >Perfil de contractant  </a></li><li class="subMenuPage-126">  <a class="subMenuPage-126" href="https://www.seu-e.cat/web/avia/govern-obert-i-transparencia/accio-de-govern-i-normativa/normativa-plans-i-programes" target="_blank" rel="noopener noreferrer" >Normativa  </a></li><li class="subMenuPage-139">  <a class="subMenuPage-139" href="/ajuntament/ordenances-fiscals" target="_self" >Ordenances Fiscals  </a></li><li class="subMenuPage-135">  <a class="subMenuPage-135" href="/ajuntament/planejament-urbanistic" target="_self" >Planejament urbanístic  </a></li><li class="subMenuPage-122">  <a class="subMenuPage-122" href="/ajuntament/que-es-la-seu-electronica" target="_self" >Seu electrònica  </a></li><li class="subMenuPage-123">  <a class="subMenuPage-123" href="/ajuntament/transparencia" target="_self" >Transparència  </a></li></ul></li><li class="page-10 Inferior">  <a class="page-10" href="/serveis-i-tramits" target="_self" >Serveis i tràmits  </a><ul id="footer-menu-10"><li class="subMenuPage-160">  <a class="subMenuPage-160" href="/serveis-i-tramits/documentacio-complementaria-a-la-sollicitud-dobres-provisionals" target="_self" >Documentació complementària a la sol·licitud d'obres provisionals  </a></li><li class="subMenuPage-148">  <a class="subMenuPage-148" href="/serveis-i-tramits/comunicacio-primera-ocupacio-dun-edifici" target="_self" >Comunicació primera ocupació d'un edifici  </a></li><li class="subMenuPage-146">  <a class="subMenuPage-146" href="/serveis-i-tramits/comunicacio-previa-dobra" target="_self" >Comunicació prèvia d'obra  </a></li><li class="subMenuPage-144">  <a class="subMenuPage-144" href="/serveis-i-tramits/comunicacio-previa-dinstallacions-fotovoltaiques-en-sol-urba" target="_self" >Comunicació prèvia d'instal·lacions fotovoltaiques en sòl urbà  </a></li><li class="subMenuPage-82">  <a class="subMenuPage-82" href="/serveis-i-tramits/oficines-municipals" target="_self" >Oficines municipals  </a></li><li class="subMenuPage-33">  <a class="subMenuPage-33" href="/serveis-i-tramits/serveis" target="_self" >Serveis  </a></li><li class="subMenuPage-31">  <a class="subMenuPage-31" href="https://avia.eadministracio.cat/dossier.1" target="_blank" rel="noopener noreferrer" >Tràmits i gestions  </a></li><li class="subMenuPage-32">  <a class="subMenuPage-32" href="/serveis-i-tramits/impostos" target="_self" >Impostos  </a></li><li class="subMenuPage-88">  <a class="subMenuPage-88" href="/serveis-i-tramits/factura-electronica" target="_self" >Factura electrònica  </a></li></ul></li><li class="page-2 Inferior">  <a class="page-2" href="/avia" target="_self" >Avià  </a><ul id="footer-menu-2"><li class="subMenuPage-34">  <a class="subMenuPage-34" href="/avia/com-arribar-hi" target="_self" >Com arribar-hi  </a></li><li class="subMenuPage-36">  <a class="subMenuPage-36" href="/avia/planol--guia-de-carrers" target="_self" >Plànol / Guia de carrers  </a></li><li class="subMenuPage-3">  <a class="subMenuPage-3" href="/avia/guia-del-municipi" target="_self" >Guia del municipi  </a></li><li class="subMenuPage-7">  <a class="subMenuPage-7" href="/avia/informacio-del-municipi" target="_self" >Informació del municipi  </a></li><li class="subMenuPage-48">  <a class="subMenuPage-48" href="/avia/informacio-geografica" target="_self" >Informació geogràfica  </a></li></ul></li><li class="page-131 Inferior">  <a class="page-131" href="/visitans" target="_self" >Visita'ns  </a><ul id="footer-menu-131"><li class="subMenuPage-50">  <a class="subMenuPage-50" href="/visitans/festes-i-fires" target="_self" >Festes i fires  </a></li><li class="subMenuPage-41">  <a class="subMenuPage-41" href="/visitans/llocs-dinteres" target="_self" >Llocs d'interès  </a></li><li class="subMenuPage-129">  <a class="subMenuPage-129" href="/visitans/rutes" target="_self" >Rutes  </a></li><li class="subMenuPage-38">  <a class="subMenuPage-38" href="/visitans/on-dormir" target="_self" >On dormir  </a></li><li class="subMenuPage-130">  <a class="subMenuPage-130" href="/visitans/on-menjar" target="_self" >On menjar  </a></li></ul></li><li class="page-4 Inferior">  <a class="page-4" href="/actualitat" target="_self" >Actualitat  </a><ul id="footer-menu-4"><li class="subMenuPage-53">  <a class="subMenuPage-53" href="/actualitat/noticies" target="_self" >Notícies  </a></li><li class="subMenuPage-54">  <a class="subMenuPage-54" href="/actualitat/agenda" target="_self" >Agenda  </a></li><li class="subMenuPage-128">  <a class="subMenuPage-128" href="/actualitat/avisos" target="_self" >Avisos  </a></li><li class="subMenuPage-55">  <a class="subMenuPage-55" href="/actualitat/butlleti-digital" target="_self" >Butlletí digital  </a></li><li class="subMenuPage-56">  <a class="subMenuPage-56" href="/actualitat/butlleti-municipal" target="_self" >Butlletí municipal  </a></li><li class="subMenuPage-57">  <a class="subMenuPage-57" href="/actualitat/rss" target="_self" >Rss  </a></li><li class="subMenuPage-58">  <a class="subMenuPage-58" href="/actualitat/hemeroteca" target="_self" >Hemeroteca  </a></li></ul></li>        </ul>
1799    </nav>
1800    <div class="links">
1801        <div class="container-xl">
1802            <div class="row">
1803                <div class="xxss col-md-6 col-sm-6 col-lg-6 middle">                
1804                        <span class="titol">Xarxes socials:</span>
1805  
1806    <a target="_blank" aria-label="Twitter" href="https://twitter.com/ajuntamentavia?lang=ca" title="Obre en finestra nova: Twitter">
1807        <span style="display: none">Twitter</span>
1808        <img src="/themes/avia/images/icons/social/twitter.png" alt="Twitter" width="32" height="32">
1809    </a>
1810  
1811    <a target="_blank" aria-label="Facebook" href="https://www.facebook.com/ajuntamentavia/" title="Obre en finestra nova: Facebook">
1812        <span style="display: none">Facebook</span>
1813        <img src="/themes/avia/images/icons/social/facebook.png" alt="Facebook" width="32" height="32">
1814    </a>
1815  
1816    <a target="_blank" aria-label="Instagram" href="https://www.instagram.com/ajuntamentavia/" title="Obre en finestra nova: Instagram">
1817        <span style="display: none">Instagram</span>
1818        <img src="/themes/avia/images/icons/social/instagram.png" alt="Instagram" width="32" height="32">
1819    </a>
1820                </div>
1821                <div class="col-md-6 col-sm-6 col-lg-6 middle">
1822                    <nav class="menu"><ul id="Inferior2"><li class="page-63">  <a href="/altres-continguts/credits" target="_self" >Crèdits  </a></li><li class="page-62">  <a href="/altres-continguts/contactar" target="_self" >Contactar  </a></li><li class="page-60">  <a href="/altres-continguts/proteccio-de-dades" target="_self" >Protecció de dades  </a></li><li class="page-59">  <a href="/altres-continguts/avis-legal" target="_self" >Avís legal  </a></li><li class="page-158">  <a href="/altres-continguts/accessibilitat" target="_self" >Accessibilitat  </a></li><li class="page-145">  <a href="/altres-continguts/politica-de-xarxes-socials" target="_self" >Política de Xarxes Socials  </a></li></ul></nav>                </div>
1823            </div>
1824        </div>
1825    </div>
1826    <div class="contact">
1827        <div class="container-xl">
1828            <div class="row">
1829                <address class="address col-md-6 col-sm-6 col-lg-6">
1830    <div class="title">
1831        Ajuntament d'Avià    </div>
1832    Av. Pau Casals, 22<br>08610 Avià<br>Tel. 938 230 000<br>NIF  P0801100I<br></address><div class="diba col-md-6 col-sm-6 col-lg-6" id="diba-partner">
1833    <div class="title">
1834        Amb la col·laboració de:    </div>
1835    <a href="http://diba.cat/" target="_blank" aria-label="Anar a la web Diputació de Barcelona" title="Obre en finestra nova: Diputació de Barcelona">
1836        <span style="display: none">Diputació de Barcelona</span>
1837        <img src="/front/view//images/logoDiba/Blanc.svg" alt="Diputació de Barcelona" class="logo-diba">
1838    </a>
1839</div>            </div>
1840        </div>
1841    </div>
1842</div>
1843        </footer>
1844        <!-- Llibreries de tercers + js propis registrats a AssetManager (jQuery primer) -->
1845<script src="/front/view/js/bower_components/jquery/dist/jquery.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1845
1845
1846<script src="/front/view/js/bower_components/bootstrap/dist/js/bootstrap.bundle.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1846
1846
1847<script src="/front/view/js/bower_components/bxslider-4/dist/jquery.bxslider.js?ver=1790949915"></script>
vendor: 1 bytes, line 1847
1847
1848<script src="/front/view/js/bower_components/jscal/index.js?ver=1790949915"></script>
vendor: 1 bytes, line 1848
1848
1849<script src="/common/bower_components/select2/dist/js/select2.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1849
1849
1850<script src="/common/bower_components/select2/dist/js/i18n/ca.js?ver=1790949915"></script>
vendor: 1 bytes, line 1850
1850
1851<script src="/common/bower_components/strength.js/src/strength.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1851
1851
1852<script src="/front/view/js/bower_components/masonry-layout/dist/masonry.pkgd.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1852
1852
1853<script src="/front/view/js/constants.js?ver=1790949915"></script>
vendor: 1 bytes, line 1853
1853
1854<script src="/front/view/js/functions.js?ver=1790949915"></script>
vendor: 1 bytes, line 1854
1854
1855<script src="/front/view/js/functions/footer.js?ver=1790949915"></script>
vendor: 1 bytes, line 1855
1855
1856<script src="/front/view/js/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js?ver=1790949915"></script>
vendor: 1 bytes, line 1856
1856
1857<script src="/front/view/js/bower_components/jquery.prettyPhoto/index.js?ver=1790949915"></script>
vendor: 1 bytes, line 1857
1857
1858<script>
1859    $(document).ready(function(){
1860                    $("a[rel^='prettyPhoto']").prettyPhoto();
1861            $("a[rel^='prettyFrame']").prettyPhoto();
1862            });
1863</script>
vendor: 1 bytes, line 1863
1863
1864<script>
1865        var TWITTER = true;
1866            var FACEBOOK = true;
1867        $(window).on("load", function() {
1868        start();
1869    });
1870        $(document).ready(function() {
1871        if (typeof articlesId !== 'undefined') {
1872            var today = new Date();
1873                        var date = today
1874                        articlesId.push('internal_calendar');
1875
1876            var oneYearAfter = new Date();
1877            oneYearAfter.setDate(oneYearAfter.getDate() + 365);
1878            for (id in articlesId) {
1879                Calendar.setup({
1880                    id: articlesId[id],
1881                    cont: "dv_calendar_" + articlesId[id],
1882                    fdow: 1,
1883                    date: date,
1884                    noScroll: true,
1885                    bottomBar: false,
1886                    max: oneYearAfter,
1887                    animation: false,
1888                    titleFormat: "%B %Y",
1889                    dateInfo: getDateInfo
1890                });
1891                setEqualContentColumns();
1892            }
1893        }
1894    });
1895
1896        
1897    // Initialize Select2 with icon support for category filter
1898    $(document).ready(function() {
1899        if ($('#categoryFilter').length) {
1900            $('#categoryFilter').select2({
1901                templateResult: function(option) {
1902                    if (!option.id) return option.text;
1903                    var icon = $(option.element).data('icon');
1904                    if (!icon) return option.text;
1905                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1906                },
1907                templateSelection: function(option) {
1908                    if (!option.id) return option.text;
1909                    var icon = $(option.element).data('icon');
1910                    if (!icon) return option.text;
1911                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1912                },
1913                allowHtml: true
1914            });
1915        }
1916    });
1917</script>
1917
1918        <!-- CSS final-->
1919
1920        
1920<script>
1921          const css = "div.page-62 .o-widget-wrapper {\n  border: 0;\n}\n";
1922          const style = document.createElement('style');
1923          style.textContent = css;
1924          document.head.appendChild(style);
1925        </script>
1925
1926
1927        <!-- Start Modal views-->
1928        
1929        <div class="modal fade" id="videoModal" tabindex="-1" role="dialog"  aria-hidden="true">
1930    <div class="modal-dialog modal-dialog-centered" role="document">
1931        <div class="modal-content">
1932            <div class="modal-header">
1933                <div class="title-head"></div>
1934            </div>
1935            <div class="modal-body">
1936                <div class="tiktok-div-embed"></div>
1937                <iframe id="iframeVideo" title="Vídeo" class="iframeVideo" allowfullscreen></iframe>
1938
1939            </div>
1940            <div class="modal-footer">
1941                <span id="titleVideo" class="titleVideo"></span>
1942                <a id="closeModalVideo" class="close" href="javascript:void(0)" data-bs-dismiss="modal"><span style="display: none">X</span></a>
1943
1944            </div>
1945        </div>
1946    </div>
1947</div>        <div class="modal fade" id="pdfModal" tabindex="-1" role="dialog"  aria-hidden="true">
1948    <div id="documentDialog" class="modal-dialog modal-dialog-centered" role="document">
1949        <div class="modal-content">
1950            <div class="modal-header">
1951                <div class="title-head"></div>
1952            </div>
1953            <div class="modal-body">
1954                <iframe id="iframePdf" title='Document' class="pdfview" style="width: 100%; height: 100%"></iframe>
1955            </div>
1956            <div class="modal-footer">
1957                <span id="titlePdf" class="titlePdf"></span>
1958                <a id="closeModalPDF" class="close" href="javascript:void(0)"><span style="display: none">X</span></a>
1959            </div>
1960        </div>
1961    </div>
1962</div>        <!-- End Modal views -->
1963        
1963<script src="/front/view/js/endScript.js?ver=1790949915"></script>
1963
1964        <!-- Només activar per desenvolupament
1965        
1965<script src="../../../node_modules/axe-core/axe.js"></script>
1965
1966        
1966<script src="../../../dist/my-first-webpack.bundle.js"></script>
1966
1967        -->
1968                
1968<script>
1969            $(document).ready(function () {
1970                startClock(1790949915);
1971                if (typeof (callMenuAfterJQueryLoaded) == "function") {
1972                    callMenuAfterJQueryLoaded();
1973                }
1974                
1975                datepickerInit();
1976                carouselControlSmall();
1977
1978                if (typeof (callMenuBeforeJQueryLoaded) == "function") {
1979                    callMenuBeforeJQueryLoaded();
1980                }
1981
1982                if (typeof (callMenuBeforeTopJQueryLoaded) == "function") {
1983                    callMenuBeforeTopJQueryLoaded();
1984                }
1985                addAttributesDivVcards();
1986                modalsImage();
1987                modalsPdf();
1988                translateWeb();
1989                var carousel = $('#carouselControls');
1990                carousel.on('slide.bs.carousel', function (event) {
1991                    toSlideImage(event);
1992                });
1993                /** Només activar per desenvolupament
1994                axe.configure({
1995                    locale: {
1996                        lang: 'es',
1997                    }
1998                });
1999
2000                axe.run().then(results => {
2001                        if (results.violations.length) {
2002                            console.log(results.violations);
2003                            throw new Error('Accessibility issues found');
2004                        }
2005                    })
2006                    .catch(err => {
2007                        console.log('Something bad happened:', err.message);
2008                    });
2009                */
2010            });
2011
2012            $(window).resize(function() {
2013                equalHeightIconTime();
2014            })
2015        </script>
2015
2016                    </body>
2017</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.