PageSourceSearch

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

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