PageSourceSearch

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

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