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