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