1'use strict'; 2const services=[ 3['â¡','Accoglienza','Accueil','Accogliere ogni persona con attenzione e aiutarla a sentirsi a casa.','Accueillir chaque personne avec attention et lâaider à se sentir chez elle.'], 4['â«','Lode & Adorazione (MLA)','Louange & Adoration (MLA)','Condurre la comunità nella lode e nellâadorazione attraverso il canto e la musica.','Conduire la communauté dans la louange et lâadoration par le chant et la musique.'], 5['â','Media & Comunicazione','Média & Communication','Raccontare la vita della chiesa attraverso foto, video, grafica e social network.','Partager la vie de lâéglise par la photo, la vidéo, le graphisme et les réseaux sociaux.'], 6['â','Regia','Régie','Curare il suono, la proiezione e il supporto tecnico durante gli incontri.','Assurer le son, la projection et lâaccompagnement technique des rencontres.'], 7['â','Integrazione','Intégration','Accompagnare i nuovi arrivati e aiutarli a costruire legami nella comunità .','Accompagner les nouveaux et les aider à créer des liens dans la communauté.'], 8['â','Impact Junior','Impact Junior','Accompagnare i bambini nella scoperta della fede con attività adatte alla loro età .','Accompagner les enfants dans la découverte de la foi avec des activités adaptées à leur âge.'], 9['â§','Ristorazione','Restauration','Preparare e organizzare i momenti di convivialità intorno a un pasto.','Préparer et organiser les moments de convivialité autour des repas.'], 10['â§','Pulizia','Nettoyage','Prendersi cura dei locali per mantenere un ambiente pulito e accogliente.','Prendre soin des locaux pour maintenir un cadre propre et accueillant.'], 11['â','Protocollo & Sicurezza','Protocole & Sécurité','Contribuire al buon ordine, allâorientamento e alla sicurezza durante gli incontri.','Contribuer au bon ordre, à lâorientation et à la sécurité lors des rencontres.'], 12['æ','Traduzione','Traduction','Rendere i messaggi accessibili e facilitare gli scambi tra le lingue.','Rendre les messages accessibles et faciliter les échanges entre les langues.'], 13['â·','Moderazione','Modération','Accompagnare lo svolgimento del culto con introduzioni, transizioni e annunci.','Accompagner le déroulement du culte avec les introductions, les transitions et les annonces.'] 14]; 15let lang='it';
16try{if(localStorage.getItem('icc-language')==='fr')lang='fr';}catch{} 17const serviceDialog=document.getElementById('service-dialog'); 18const testimonyDialog=document.getElementById('testimony-dialog'); 19function setLanguage(value){ 20lang=value;document.documentElement.lang=value; 21try{localStorage.setItem('icc-language',value);}catch{} 22document.querySelectorAll('[data-it][data-fr]').forEach(el=>{el.innerHTML=el.dataset[value];}); 23document.querySelectorAll('[data-lang]').forEach(el=>el.setAttribute('aria-pressed',String(el.dataset.lang===value))); 24document.title=document.body.dataset[value==='it'?'pageIt':'pageFr'] ? document.body.dataset[value==='it'?'pageIt':'pageFr']+' â Impact Centre Chrétien Rome' : value==='it'?'Impact Centre Chrétien Rome â Benvenuti a casa':'Impact Centre Chrétien Rome â Bienvenue à la maison'; 25document.querySelector('meta[name="description"]').content=value==='it'?'Impact Centre Chrétien Rome: una chiesa dove lâamore di Dio trasforma persone ordinarie in discepoli di Gesù. Culto domenica alle 10:30, Via Scarperia 42, Roma.':'Impact Centre Chrétien Rome : une église où lâamour de Dieu transforme des personnes ordinaires en disciples de Jésus. Culte dimanche à 10h30, Via Scarperia 42, Rome.'; 26const previous=document.getElementById('service-select').value; 27document.getElementById('services')?.replaceChildren(); 28document.getElementById('service-select').replaceChildren(); 29services.forEach((s,i)=>{ 30const card=document.createElement('article');card.className='service'; 31card.innerHTML=`<span class="service-icon" aria-hidden="true">${s[0]}</span><h3>${s[value==='it'?1:2]}</h3><p>${s[value==='it'?3:4]}</p><button type="button"><span>${value==='it'?'Mi iscrivo':'Je mâinscris'}</span><span aria-hidden="true">â</span></button>`; 32card.querySelector('button').addEventListener('click',()=>{document.getElementById('service-select').value=String(i);serviceDialog.showModal();}); 33document.getElementById('services')?.append(card); 34const option=document.createElement('option');option.value=String(i);option.textContent=s[value==='it'?1:2];document.getElementById('service-select').append(option); 35}); 36if(previous)document.getElementById('service-select').value=previous; 37} 38document.querySelectorAll('[data-lang]').forEach(b=>b.addEventListener('click',()=>setLanguage(b.dataset.lang))); 39document.querySelectorAll('[data-close]').forEach(b=>b.addEventListener('click',()=>b.closest('dialog').close())); 40document.getElementById('testimony-open')?.addEventListener('click',()=>testimonyDialog.showModal()); 41function dispatchMessage(message,channel){window.location.href=channel==='email'?'mailto:[email protected]?subject='+encodeURIComponent(message.split('\n')[0])+'&body='+encodeURIComponent(message):'https://wa.me/393314992534?text='+encodeURIComponent(message);} 42document.getElementById('service-form').addEventListener('submit',e=>{ 43e.preventDefault();const f=new FormData(e.target);const it=lang==='it';const training=f.getAll('training').join(', ')||(it?'Nessuna selezionata':'Aucune sélectionnée');const baptism={yes:it?'Sì':'Oui',no:it?'No':'Non',planned:it?'Desidero essere battezzato/a':'Je souhaite être baptisé(e)'}[f.get('baptism')]; 44dispatchMessage(`${it?'Richiesta di servizio':'Demande de service'} â ICC Roma\n\n${it?'Nome':'Nom'} : ${f.get('name')}\nContact : ${f.get('contact')}\n${it?'Ministero':'Ministère'} : ${services[Number(f.get('service'))][it?1:2]}\n${it?'Formazioni completate':'Formations terminées'} : ${training}\n${it?'Battesimo':'Baptême'} : ${baptism}\n${it?'Lingua':'Langue'} : ${it?'Italiano':'Français'}\n${it?'Disponibilità e messaggio':'Disponibilités et message'} : ${f.get('message')||'â'}`,e.submitter?.value); 45}); 46document.getElementById('testimony-form').addEventListener('submit',e=>{e.preventDefault();const f=new FormData(e.target);dispatchMessage(`${lang==='it'?'Testimonianza':'Témoignage'} â ICC Roma\n\n${f.get('name')}\n\n${f.get('message')}`,e.submitter?.value);}); 47document.getElementById('year').textContent=new Date().getFullYear();setLanguage(lang); 48if(document.modelContext?.registerTool){ 49 const lifecycle=new AbortController(); 50 try{Promise.resolve(document.modelContext.registerTool({name:'start_ministry_request',title:'Open a ministry request',description:'Open the visible ICC Roma ministry request form with a ministry selected. Does not send a message.',inputSchema:{type:'object',properties:{ministryIndex:{type:'integer',minimum:0,maximum:10}},required:['ministryIndex'],additionalProperties:false},annotations:{readOnlyHint:false,untrustedContentHint:false},execute(input){if(!input||!Number.isInteger(input.ministryIndex)||input.ministryIndex<0||input.ministryIndex>=services.length)throw new Error('Invalid ministry index');document.getElementById('service-select').value=String(input.ministryIndex);if(!serviceDialog.open)serviceDialog.showModal();return{opened:true,ministry:services[input.ministryIndex][lang==='it'?1:2]};}},{signal:lifecycle.signal})).catch(()=>{});}catch{} 51 window.addEventListener('pagehide',()=>lifecycle.abort(),{once:true}); 52} 53 54const pcDialog=document.getElementById('pcnc-dialog'); 55document.querySelectorAll('[data-pcnc]').forEach(b=>b.addEventListener('click',()=>{document.getElementById('pcnc-select').value=b.dataset.pcnc;pcDialog.showModal();})); 56document.getElementById('pcnc-form').addEventListener('submit',e=>{e.preventDefault();const f=new FormData(e.target);const it=lang==='it';dispatchMessage(`${it?'Richiesta di iscrizione PCNC':'Demande dâinscription PCNC'} â ICC Roma\n\n${it?'Nome':'Nom'} : ${f.get('name')}\nContact : ${f.get('contact')}\nFormation : ${f.get('course')}\n${it?'Formazioni completate':'Formations terminées'} : ${f.getAll('training').join(', ')||(it?'Nessuna selezionata':'Aucune sélectionnée')}\n${it?'Lingua':'Langue'} : ${it?'Italiano':'Français'}\nMessage : ${f.get('message')||'â'}`,e.submitter?.value);}); 57const menu=document.getElementById('menu-toggle');menu.addEventListener('click',()=>{const open=menu.getAttribute('aria-expanded')!=='true';menu.setAttribute('aria-expanded',String(open));document.getElementById('site-nav').classList.toggle('is-open',open);menu.textContent=open?'Ã':'â°';}); 58document.addEventListener('keydown',e=>{if(e.key==='Escape'){menu.setAttribute('aria-expanded','false');document.getElementById('site-nav').classList.remove('is-open');menu.textContent='â°';}}); 59document.querySelectorAll('.share-page').forEach(b=>b.addEventListener('click',async()=>{const url=location.origin+location.pathname;const status=document.querySelector('.share-status');try{if(navigator.share){await navigator.share({title:document.title,url});}else if(navigator.clipboard){await navigator.clipboard.writeText(url);status.textContent=lang==='it'?'Link copiato!':'Lien copié !';}else{status.textContent=url;}}catch(e){if(e.name!=='AbortError')status.textContent=url;}})); 60 61const hubLinks=document.querySelectorAll('[data-hub-url]'); 62if(hubLinks.length){ 63const hubDialog=document.createElement('dialog'); 64hubDialog.id='hub-dialog'; 65hubDialog.innerHTML='<div class="hub-toolbar"><div><span class="hub-brand">ICC ROMA</span><strong id="hub-title"></strong></div><div class="hub-actions"><a id="hub-external" href="#" target="_blank" rel="noopener">â</a><button type="button" id="hub-close" aria-label="Chiudi / Fermer">Ã</button></div></div><div class="hub-loading" id="hub-loading">Caricamentoâ¦</div><iframe id="hub-frame" title="Spazio ICC Roma" allow="fullscreen"></iframe>'; 66document.body.append(hubDialog); 67const hubFrame=document.getElementById('hub-frame'); 68const hubTitle=document.getElementById('hub-title'); 69const hubExternal=document.getElementById('hub-external'); 70const hubLoading=document.getElementById('hub-loading'); 71const closeHub=()=>hubDialog.close(); 72document.getElementById('hub-close').addEventListener('click',closeHub); 73hubDialog.addEventListener('close',()=>{hubFrame.src='about:blank';document.body.classList.remove('hub-open');}); 74hubDialog.addEventListener('click',e=>{if(e.target===hubDialog)closeHub();}); 75hubFrame.addEventListener('load',()=>hubLoading.classList.add('is-hidden')); 76hubLinks.forEach(link=>link.addEventListener('click',e=>{ 77e.preventDefault(); 78const title=lang==='fr'?link.dataset.hubTitleFr:link.dataset.hubTitleIt; 79hubTitle.textContent=title||'ICC Roma'; 80hubExternal.href=link.dataset.hubUrl; 81hubExternal.setAttribute('aria-label',lang==='fr'?'Ouvrir dans une nouvelle fenêtre':'Apri in una nuova finestra'); 82hubLoading.textContent=lang==='fr'?'Chargementâ¦':'Caricamentoâ¦'; 83hubLoading.classList.remove('is-hidden'); 84hubFrame.title=title||'ICC Roma'; 85hubFrame.src=link.dataset.hubUrl; 86document.body.classList.add('hub-open'); 87if(!hubDialog.open)hubDialog.showModal(); 88menu.setAttribute('aria-expanded','false'); 89document.getElementById('site-nav').classList.remove('is-open'); 90menu.textContent='â°'; 91})); 92}
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.