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