require( ebplatform.config.enableLoadBuilt ? ["built/dojo", "built/ebCommon", "built/iscrizione"] : [], function() { //.js.uncompressed
	require(["dojo/ready",
	 	"dojo/_base/lang",
	 	"dojo/_base/array",
		"dojo/dom",
		"dijit/Dialog",
		"dojo/dom-style",
		"dojo/dom-attr",
		"dojo/dom-prop",
		"dojo/dom-construct",
		"dojo/query",
		"dojo/request",
		"dojo/html",
		"dojo/io-query",
		"dojo/on",
		"dojo/topic",
		"dijit/registry"],
		function(ready,
			lang,
			arrayUtil,
			dom,
			Dialog,
			domStyle,
			domAttr,
			domProp,
			domConstruct,
			query,
			request,
			html2,
			ioQuery,
			on,
			topic,
			registry) {
			ready(function() {

				function init(){
					try {

						// domConstruct.place("<div class='myclass'>my html</div>", query("NODE_SELECTOR")[0], 'before');
                      
                       //var boxPrivacy = query("#customfield17Row")[0]; GIGI
                       var boxPrivacy = query("#customfield20Row")[0];
                       var boxDateEvento = query("#boxDateEvento")[0];
                       if((!!boxPrivacy)&&(!!boxDateEvento)){
                       		domConstruct.place(boxDateEvento, boxPrivacy, 'before');
                       }
						var id269674  = query(".id269674")[0];
                      if(!!id269674){
                        domConstruct.place("<div class='wrapperFascia titoloAdd'><h3>SEADS 2023 Thematic Sessions</h3>Please note that you can only select one session per time slot, but you can attend as many sessions as you like:</div>", id269674, 'before');
                      }
                      
                      
                      // valter 
                      // domConstruct.place( query(".idCustomfield487542")[0], query(".idCustomfield487543")[0], "after"); GIGI
                      
                       var registration = query("#boxDateEvento h5 span")[0];
                        if(!!registration){
                          registration.innerHTML="<i>Session Registration</i>";
                        }
                      
                      	 var registrationh5 = query("#boxDateEvento h5")[0];
                        if(!!registrationh5){
                          domConstruct.place("<span class='infoNote'><i>Note that you can only select one session per time slot, but you can attend as many sessions as you like. You may also access the session recordings on the event platform up to 90 days after the event.</i></span>", registrationh5  , 'after');
                        }
                      
                      
                     	// BEGIN_GRUPPI_INCLUSIVI
// END_GRUPPI_INCLUSIVI

						// BEGIN_GRUPPI_ESCLUSIVI
rendiEsclusivoGruppo2(['269670','269672','269673','269674','269671']);
rendiEsclusivoGruppo2(['269679','269678','269677','269676']);
// END_GRUPPI_ESCLUSIVI
	
					    // BEGIN_CHECK_CAMPI
					    // END_CHECK_CAMPI


						/* BEGIN_BLOCK: htmlFasce
						// STRUCTURE htmlFasce
var htmlFasce = {
  "fasce": {
    "269663": "",
    "269664": "",
    "269665": "",
    "269666": "",
    "269667": "",
    "269668": "",
    "269669": "",
    "269670": "",
    "269671": "",
    "269672": "",
    "269673": "",
    "269674": "",
    "269675": "",
    "269676": "",
    "269677": "",
    "269678": "",
    "269679": "",
    "269680": ""
  }
}
// END STRUCTURE htmlFasce
 
	 					try {	 						 
							for (const [key, value] of Object.entries(htmlFasce.fasce)) {
								console.log ("key set html:" , key, value, query(".tundra.pagIscrizione .boxDateEvento .fasceDataEvento .idFascia" + key+ " span.titoloFascia"));
							    
							    if (value != "")
							        html2.set(query(".tundra.pagIscrizione .boxDateEvento .fasceDataEvento .idFascia" + key+ " span.titoloFascia")[0], value);
							}								 
					 	} catch (err) {
							console.log("htmlFasce: ", err);
						}	
						END_BLOCK: htmlFasce */

						/* BEGIN_BLOCK: almenoUnAccompagnatore
						//mette un blocco in modo che almeno un accompagnatore venga aggiunto
                      	if(ebManagingFiglio==false){
                          if(ebNumFigli==0){
                            console.log("prececcho il checkbox e non lo rendo ");
                            query("#addPartner").forEach(
                              function(node){
                            console.log("DEBUG node:",node);
                            node.checked=true;
                              });
                            domStyle.set(dom.byId("addPartnerContainer"), "pointer-events", "none");
                          }
                        }
						END_BLOCK: almenoUnAccompagnatore */


						/* BEGIN_BLOCK: bloccoConsenso1

						//Blocca i radiobutton del consenso1 fino a quando non viene fatto click sul link informativa privacy
						//Se si clicca sui radio button bloccati viene mostrato un popup
                      
                      	var bloccaRadioConsensi=true;

						var idLinkPrivacy = query("#inlineInformativaOpener")[0];
                      	console.log("DEBUG idLinkPrivacy:",idLinkPrivacy);
                      	if(idLinkPrivacy!=null){
                        	console.log("DEBUG disabilito radio button SI");
                          	//blocco solo i radio1 per il ServizioIscrizione
                        	query("[name='consensoTrattamentoDati.consensoServizioIscrizione']").forEach(function(e) {
                                console.log("DEBUG ELEMENTO CONSENSO:",e);
                                domProp.set(e, 'disabled', true);                            
                            
                        	});
                          
                            console.log("DEBUG aggancio il click");
                          	//aggancio l'evento click sull'apertura privacy
                            on (idLinkPrivacy,'click',function(){
                                    console.log("DEBUG Aperta Informativa");
                              		bloccaRadioConsensi=false;
                              		//riattivo i radio1
                                    query("[name='consensoTrattamentoDati.consensoServizioIscrizione']").forEach(function(e) {
                                        console.log("DEBUG ELEMENTO CONSENSO:",e);
                                        domProp.set(e, 'disabled', false);
                                    });
                              });
                          	
                          	var elementoContenitoreRadio1 = query("[data-ebplatform-template-elementid='consentRequest1Node']")[0];
                          	if(elementoContenitoreRadio1!=null){
                          
                                console.log("DEBUG ELEMENTO CONSENSO1:",elementoContenitoreRadio1);
                              	//prendo il contenitore dei radio1 e controllo il click, se i radio sono disabilitati allora mostro popup
                                on(elementoContenitoreRadio1,'click',function(){
                                    console.log("DEBUG Click su consenso1");
                                  	if(bloccaRadioConsensi){
                                        myDialog = new Dialog({
                                          //title: "Details",
                                          title: "Attenzione",
                                          content: "Leggere prima l'informativa sulla privacy",
                                          style: "width: 800px"
                                        });
                                        myDialog.show();
                                    }
                                });                              
                            }
                        }
				
						END_BLOCK: bloccoConsenso1 */
						 
						// STRUCTURE popupDescriptions
						var popupDescriptions = {
						  "template": "%titolo%",
						  "FFFpreselect": "%FFFpreselect%",
						  "editables": "%titolo%,%bio%,%FFFpreselect%",
						  "enableDialogDetail": false,
						  "fasce": {
						     
						  }
						}
						
						// END STRUCTURE popupDescriptions

						function ifNotEmpty (v) {
						    if (v != ""){
						     	return "<br/><br/>" + v 
						    } 
							return "" ;
						}
						try {
							if (popupDescriptions.enableDialogDetail)
								for (const idFascia in popupDescriptions.fasce) {
									console.log("idFascia", idFascia);
									var ref0 = query('.idFascia' + idFascia)[0];
									var ref1 = query('.titoloFascia', ref0)[0];
	 
									if (!!ref1 && popupDescriptions[idFascia] != "") {
										// sostituisce lo span con titolo fascia mettendo il bottone	
										var html1 = "<span class='titoloFascia'>" + ref1.innerHTML + " <button type='button' id='ButIdFascia" + idFascia + "'>Details</button></span>";	
										domConstruct.place(html1, ref1, 'replace');
																						
										// apre popup quando clicco bottone
										var btn1 = query('#ButIdFascia' + idFascia)[0];
										on (btn1,'click',function(){
											//!!! **** TODO ****: Aggiungere elementi di popupDescriptions.fasce o usare il template 											 
											var myContent = "test";
													
											myDialog = new Dialog({
										        //title: "Details",
										        title: popupDescriptions.fasce[idFascia].titolo,
										        content: myContent,
										        style: "width: 800px"
										    });
										    myDialog.show();
										     

										});
									}
								}

							if (!!popupDescriptions.FFFpreselect) {
								for (const idFascia in popupDescriptions.fasce) {
									if (popupDescriptions.fasce[idFascia].FFFpreselect == "1"){
										query(".id" + idFascia + " input[type=checkbox]").forEach(function(node){node.checked=true;});		
									} 	
								}		
							}

						} catch (err) {
							console.log("popupDescriptions: ", err);
						}		

						/* Titolo evento con HTML: 
						   query("#headerText > h3 > span")[0].innerHTML = "2022 <i>FIRST</i> Community Conference";
						*/
	

						/*	sold out in rosso su expand/collapse
						query(".fasceDataEvento").forEach(function(e) { 
                                var nDisponibili = query(e).query(".postiDisponibili").length;
                          	    if (nDisponibili == 0) {
                                	var titleElem = query(e).query(".dataToCapitalize")[0];                                                                        
                                    // se si vuole che non sia cliccabile:
                                    // vedere anche https://docs.google.com/presentation/d/1nq8O1ylteslVaWcaiu1fqpvEKPWchd_yeMLsd5wVnlI/edit#slide=id.g115728e5b7c_0_13	
                                    // domClass.add(e,  "noncliccabile");  
                                    var iconElem = query(e).query(".iconText")[0];									 
                                    iconElem.innerHTML = " sold out ";
                                    iconElem.style = "background:red;color:white;font-weight:900 !important";                                  
                                }                          
                        });
                        */
						 
						// aggiunge testo dopo immagine header
						//domConstruct.place("<div id='textAfterHeaderImage'></div>", query(".boxPlainImage")[0], 'after');				
						// aggiunge testo dopo i campi	
						//domConstruct.place("<div id='textAfterFields'></div>", query(".formDettagliPersonali")[0], 'after');	
						// testo dopo i bottoni di registrazione
						//domConstruct.place("<div id='textAfterRegistrationButtons'></div>", query(".boxRegistrationButtons")[0], 'after');
											
						/*
                        var idPersona = query("[name=idPersona]")[0].value;
                        console.log ("idPersona:", idPersona);
                        if (idPersona == 0) 
                            query("body").addClass("publicPage");  
                        */ 
						
						/* BEGIN_BLOCK: intMaxAccompagnatori
						if (!!dom.byId("intMaxAccompagnatori") && dom.byId("intMaxAccompagnatori").innerHTML == "0") {
							domStyle.set(dom.byId("boxAcc"), "display", "none");
							ebPlatform.iscrizione.allineaAltezzaBoxSxDx();
						}
						END_BLOCK: intMaxAccompagnatori */

						/* toglie email da ospite principale
						document.getElementsByClassName("ospitePrincipale")[0].innerHTML = document.getElementsByClassName("ospitePrincipale")[0].innerHTML.replaceAll (/\[.*\]/g,"").trim();
						*/

						/*  // cecca una sessione:
							query(".id201509 input[type=checkbox]").forEach(function(node){node.checked=true;});
						*/

						/* aggiungo un link */
						/*var lab=query(".tundra.pagIscrizione .boxDatiIscrizione .itemForm.idCustomfield197656 label")[0];
						if (!!lab){
							lab.innerHTML = 'PRESA VISIONE DELL\'<a href="#" class="informativaPrivacy">INFORMATIVA PRIVACY</a><span class="mandatory">*</span>';
							var link = query(".tundra.pagIscrizione .boxDatiIscrizione .itemForm.idCustomfield197656 label a.informativaPrivacy")[0];
							on(link,'click',function(){
								window.open('https://s3-eu-west-1.amazonaws.com/eventboost/assets/customcss/sacbo/Informativa01.html','informativa','width=800,height=600');
							})							
						}*/

						 /*  solo due scelte per una lista di checkbox
 						     query("input[name='valoriCustomField[383558]']").on('click', function(e){                         		
                           		var alreadyChecked = query("input[name='valoriCustomField[383558]']:checked").length;
                                console.log ("e: ", e, alreadyChecked);     
                                if (alreadyChecked >= 3) {
                                   e.checked = false;
                                   dojo.stopEvent(e); 
                                                                    
                                  myDialog = new Dialog({                                    
                                    title: "Warning",
                                    content: "You can choose a maximum of only two sessions for this date.",
                                    style: "width: 800px"
                                  });
                                  myDialog.show();
                                }
                                
                         });                        
						*/

						/* -------------------------------------------------------------
							modifico frase pagina evento per declinazione per il Lei 
	   					   scommentare e usare la jsp admin EDIT_POPUP_SESSION per fare inserire i testi 
	   					   --> andare in easy style e aggiungere la regola nascondi testi "non partecipo"
						*/
						/* BEGIN_BLOCK: declinaConLeiPaginaEvento
						var target1 = query(".tundra.pagIscrizione .boxModule .boxModuleInner .custom")[0];
						if (!!target1 && target1.innerHTML.indexOf("Ci dispiace che")>-1){
							var fraseCiDispiace = "Ci dispiace che non possa partecipare e speriamo di vederLa ai prossimi eventi.";	 
							target1.innerHTML = target1.innerHTML.replace('Ci dispiace che tu non possa partecipare e speriamo di vederti ai prossimi eventi.',
						                                        fraseCiDispiace);  
						    domStyle.set(target1, "display", "block");                                      
						    console.log ("sostituito .custom");
						}  
						var target2 = query(".tundra.pagIscrizione .boxModule .boxModuleInner .system")[0];
						if (!!target2 && target2.innerHTML.indexOf("Se hai declinato")>-1){
						    var fraseSeHaiDeclinato = "Se ha declinato l\'invito per errore, ricarichi la pagina";
						    var fraseConfermaPartecipazione = "e confermi la sua partecipazione.";
							target2.innerHTML = target2.innerHTML.replace('Se hai declinato l\'invito per errore, ricarica la pagina',  fraseSeHaiDeclinato)
							 								   .replace('e conferma la tua partecipazione.', fraseConfermaPartecipazione);    
						    domStyle.set(target2, "display", "block");
						    console.log ("sostituito .system");
						} 
                      	var target3 = query(".msg3")[0];
                      	console.log("DEBUG target3:",target3);
						if (!!target3 && target3.innerHTML.indexOf("allegato il tuo biglietto in formato PDF")>-1){
						    var fraseSeHaiDeclinato = "con allegato il suo biglietto in formato PDF";
							target3.innerHTML = target3.innerHTML.replace('con allegato il tuo biglietto in formato PDF',  fraseSeHaiDeclinato);
						    //domStyle.set(target3, "display", "block");
						    console.log ("sostituito .msg3");
						}
                      	var target4 = query(".riepilogoRegistrazione p")[0];
                      	console.log("DEBUG target4:",target4);
						if (!!target4 && target4.innerHTML.indexOf("Ecco il riepilogo della tua registrazione")>-1){
						    var fraseSeHaiDeclinato = "della sua registrazione";
							target4.innerHTML = target4.innerHTML.replace('della tua registrazione',  fraseSeHaiDeclinato);
						    //domStyle.set(target3, "display", "block");
						    console.log ("sostituito .riepilogoRegistrazione");
						}
                      	var target5 = query(".ringraziamentoFiglio")[0];
                      	console.log("DEBUG target5:",target5);
                      	if (!!target5){
                          if (!!target5 && target5.innerHTML.indexOf("La tua registrazione ")>-1){
                              var fraseSeHaiDeclinato = "La sua registrazione ";
                              target5.innerHTML = target5.innerHTML.replace('La tua registrazione ',  fraseSeHaiDeclinato);
                              //domStyle.set(target3, "display", "block");
                              console.log ("sostituito .ringraziamentoFiglio .msg1");
                          }
                          var target51 = query(".msg1")[0];
                          console.log("DEBUG target51:",target51);
                          if (!!target51 && target51.innerHTML.indexOf("la tua registrazione")>-1){
                              var fraseSeHaiDeclinato1 = "la sua registrazione ";
                              var fraseSeHaiDeclinato2 = "con allegati i suoi biglietti in";
                            	var fraseSeHaiDeclinato3 = "ha cancellato";
                              target51.innerHTML = target51.innerHTML.replace('la tua registrazione',  fraseSeHaiDeclinato1)
                            										.replace('con allegati i tuoi biglietti in', fraseSeHaiDeclinato2)
                            										.replace('hai cancellato', fraseSeHaiDeclinato3); 
                              //domStyle.set(target3, "display", "block");
                              console.log ("sostituito .ringraziamentoFiglio .msg1");
                          }
                          var target52 = query(".msg3")[0];
                          console.log("DEBUG target52:",target52);
                          if (!!target52 && target52.innerHTML.indexOf("con allegati i tuoi biglietti in formato PDF")>-1){
                              var fraseSeHaiDeclinato1 = "con allegati i suoi biglietti in formato PDF";
                              target52.innerHTML = target52.innerHTML.replace('con allegati i tuoi biglietti in formato PDF',  fraseSeHaiDeclinato1); 
                              //domStyle.set(target3, "display", "block");
                              console.log ("sostituito .ringraziamentoFiglio .msg1");
                          }
                        }
                      	var target56 = query(".ringraziamentoPadre")[0];
                      	console.log("DEBUG target56:",target56);
                      	if (!!target56){
                          if (!!target56 && target56.innerHTML.indexOf("La tua registrazione")>-1){
                              var fraseSeHaiDeclinato = "La sua registrazione";
                              target56.innerHTML = target56.innerHTML.replace('La tua registrazione',  fraseSeHaiDeclinato);
                              //domStyle.set(target3, "display", "block");
                              console.log ("sostituito .ringraziamentoFiglio .msg1");
                          }
                        }
                      	var target513 = query(".msg1")[0];
                        console.log("DEBUG target51:",target51);
                        if (!!target513 && ((target513.innerHTML.indexOf("la tua registrazione")>-1)||(target513.innerHTML.indexOf("Ciao ")>-1)) ){
                          var fraseSeHaiDeclinato1 = "la sua registrazione";
                          var fraseSeHaiDeclinato2 = "con allegati i suoi biglietti in";
                          var fraseSeHaiDeclinato3 = "ha cancellato";
                          var fraseSeHaiDeclinato4 = "Gentile ";
                          var fraseSeHaiDeclinato5 = "La sua registrazione";
                          var fraseSeHaiDeclinato6 = "essersi";
                          target513.innerHTML = target513.innerHTML.replace('la tua registrazione',  fraseSeHaiDeclinato1)
                            .replace('con allegati i tuoi biglietti in', fraseSeHaiDeclinato2)
                            .replace('hai cancellato', fraseSeHaiDeclinato3)
                          	.replace('La tua registrazione', fraseSeHaiDeclinato5)
                          	.replace('Ciao ', fraseSeHaiDeclinato4)
                          	.replace('esserti', fraseSeHaiDeclinato6); 
                          //domStyle.set(target3, "display", "block");
                          console.log ("sostituito .ringraziamentoFiglio .msg1");
                        }
                      	var target6 = query(".riepilogoRegistrazione p")[0];
                      	console.log("DEBUG target6:",target6);
						if (!!target6 && target6.innerHTML.indexOf("Ecco il riepilogo della tua registrazione")>-1){
						    var fraseSeHaiDeclinato = "della sua registrazione";
							target6.innerHTML = target6.innerHTML.replace('della tua registrazione',  fraseSeHaiDeclinato);
						    //domStyle.set(target3, "display", "block");
						    console.log ("sostituito .riepilogoRegistrazione");
						} 
						END_BLOCK: declinaConLeiPaginaEvento */

						/* se devo leggere/agire da/su un campo lista */
						/*
						var widget = registry.byId("customFieldSelect_307042");
						var accompagnatori = "";
						*/
						/* 	663363;"SI"
							663364;"NO"
						*/
						/*
						if (!!widget){
							accompagnatori = widget.get("value");
							console.log("... da widget");

							widget.on('change',function(newVal){
								console.log("newVal:",newVal);
							});

						} else {
							var el = dom.byId("valoreLista3.idValoreLista_box_anagrafica");
							if (el.selectedIndex > 0) {
								accompagnatori = el.options[el.selectedIndex].value;
							}
							on(el,'change',function(e){
								console.log("newVal:",el.options[el.selectedIndex].value);
							});
							console.log("... da select");
						}
						*/

						/*
						// Setta valore in campo lista. Nel form degli accompagnatori setta il campo non editabile "Team Type" con il valore "Team Member" 				 
						var widget = registry.byId("customFieldSelect_376327");
						var accompagnatori = "";					 
						if (!!widget){							 
							// per desktop
							widget.set("value", 773117);
						} else {
							// per mobile 
							var el = dom.byId("valoreLista2.idValoreLista_box_anagrafica");
							el.selectedIndex = 2;							 
						}
						*/	


						/* consensi privacy: rimuoviamo default no */
						/* var c1 = document.getElementById('consensoTrattamentoDati.consensoServizioIscrizione2');
						if (!!c1){
							domProp.set(c1,'checked',false);
						}
						var c2 = document.getElementById('consensoTrattamentoDati.consensoPubblicitaIscrizione2');
						if (!!c2){
							domProp.set(c2,'checked',false);
						}	
						*/

						/* sostituisce from at nelle ore fasce */	
						/* BEGIN_BLOCK: changeFromInSessions			 		
						query(".date.time").forEach(function(dateTime) {
							console.log (".date.time n " , dateTime);
					        dateTime.innerHTML = dateTime.innerHTML.replace("from", "at").replace("dalle", "alle");		
					    });	
						END_BLOCK: changeFromInSessions */

						/* BEGIN_BLOCK: addBottoneDopoBottoneIscrizione
						var ref1 = query('.iscrizione')[0];
						var html1 = '<br/><span class="inputSubmit maggioriinfo" style="margin-top: 0px;">' + 									
									'<a href="https://www.axpo.com/it/it/axpo_green_energy_solutions_talks.html" class="submitIscrizione" style="vertical-align:middle;border: 0px none;    border-radius: 4px;    cursor: pointer;    display: inline-block;    font-size: 100%;    font-weight: 600;    height: 50px;    line-height: 38px;    padding: 5px 15px;    -webkit-appearance: none;font-family: \'Montserrat\';color:white;BACKGROUND-COLOR:#FF0000" target="_new">MAGGIORI INFO</a>' + 	
									'</span>';

						domConstruct.place(html1, ref1, 'after');
						END_BLOCK: addBottoneDopoBottoneIscrizione */


						/* BEGIN_BLOCK: messaggioSeGiaIscrittoENonDaBE
						var idPersona = document.getElementsByName("idPersona");
						//console.log("ep-25659.js idPersona.value:"+idPersona[0].value);

						var giaPresente = !!query(".giaRegistratoNoUpdate.giaRegistratoNoDelete")[0];
						console.log("giaPresente",giaPresente);
						var qs = document.location.search;
						var fromBE = false;
						if (!!qs) {
							qs = ioQuery.queryToObject(qs.substring(1, qs.length));
							if (!!qs.fromBE) {
								 console.log ("from BE:" + qs.fromBE);
								 if (qs.fromBE == "true") {
								 	fromBE = true;
								 }
							}
						}	
						//if(idPersona[0].value>0){
						if (giaPresente && fromBE == false){
							//c'e' un iscrizione
							domStyle.set("boxDxContent", "display", "none");
							var boxesPrivacyWrap = query(".boxesPrivacyWrap ")[0];
							if (!!boxesPrivacyWrap ){
								domStyle.set(boxesPrivacyWrap, "display", "none");
							}
							document.getElementById("boxDx").innerHTML = "<div id=\"boxAvvertimento\">La tua registrazione è già stata effettuata;<BR/>Qualora avessi bisogno di modificare la tua iscrizione, contatta la <b>Segreteria Organizzativa Amundi Digital Roadshow</b><BR/><b>Email:</b>amundidigitalroadshow@aesteam.it<BR/><b>Telefono:</b>338 4642173<BR/><i>(orario segreteria organizzativa: dal lunedì al venerdì dalle 10.00 alle 16.00)</i></div>";

							var buttons = document.getElementsByClassName("boxRegistrationButtons");
							//console.log("ep-25659.js buttons.style.display:"+buttons[0].style.display);
							var i;
							for (i = 0; i < buttons.length; i++) {
								buttons[i].style.display = "none";
								//console.log("ep-25659.js buttons.style.display none");
							}
							var boxDx = document.getElementById("boxDx");
							boxDx.style.marginTop="30px";

						}else{
							//nessuna iscrizione quindi non faccio niente
						}
						END_BLOCK: messaggioSeGiaIscrittoENonDaBE */


						/* inserire una FilteringSelect custom 
						 "dojo/store/Memory",
				         "dijit/form/FilteringSelect",
				         Memory,
				         FilteringSelect,

						 var privateStore = new Memory({
				              idProperty: 'val',
				              data: [
				                  {val:'"ALTERNA" LTD'},
								  {val:'"ALTEUS" LTD'}, 
								  ...
								  ...
								  ]
				          });
						  // impostare customfieldYY_box_anagrafica come testo libero!
				          this.privateWidget = new FilteringSelect({
				              //value: this.stato.get('private'),
				              placeHolder: "Scegli il valore",
				              store: privateStore,
				              searchAttr:'val',
				              labelAttr:'val',
				              name: 'customfield4',
				              queryExpr: "*${0}*",
				              searchDelay: 1000,
				              //pageSize: 10,
				              onChange: lang.hitch(this,function(newVal){
				                  //this.stato.set('private',newVal);	    			
				              })
				          },"customfieldYY_box_anagrafica");
				        */	

				        /*
				         // setta l'email nella form uguale a quella usata per il login con password 
						 if (document.getElementById("customfield0_box_anagrafica").value == "" && document.querySelector(".ospitePrincipale") != null) {                      
                             var ospitePrincipale = document.querySelector(".ospitePrincipale").textContent;
                             const reg = /\[(.*)\]/;
                             const found = ospitePrincipale.match(reg);
                             document.getElementById("customfield0_box_anagrafica").value  = found[1];
                          }
                       }
				        */

					} catch (err) {
						console.log(err)
					}
				}

				if (lang.exists("ebPlatform.iscrizione.boxAnagraficaEndSetUp")) {
					if (!!ebPlatform.iscrizione.boxAnagraficaEndSetUp){
						init();
					}
				}
				topic.subscribe("BoxAnagrafica.EndSetUp", lang.hitch(this, function() {				
					init();
				}));

				/* Per rendere un gruppo di checkbox a scelta esclusiva */
				function rendiEsclusivoGruppo(idArr){
					arrayUtil.forEach(idArr,function(itemId){
						if (!!document.getElementById(itemId)){
							on(document.getElementById(itemId),'click',function(e){
								console.log("this",this,"e",e);
								if (e.target.checked){
									resetChecked(idArr,itemId);
								}
							});
						}
					});
				};

				function resetChecked(idArr,escludiId){
					arrayUtil.forEach(idArr,function(itemId){
						if (itemId != escludiId){
							var el = document.getElementById(itemId);
							if (!!el){
								el.checked = false;
							}
						}
					});
				}
				// usa querySelector con data-eb-idfascia
				function rendiEsclusivoGruppo2(idArr){
					arrayUtil.forEach(idArr,function(itemId){
						if (!!document.querySelector("[data-eb-idfascia='" + itemId + "']")){
							on(document.querySelector("[data-eb-idfascia='" + itemId + "']"),'click',function(e){
								console.log("this",this,"e",e);
								if (e.target.checked){
									resetChecked2(idArr,itemId);
								}
							});
						}
					});
				};
		
        		function resetChecked2(idArr,escludiId){
					arrayUtil.forEach(idArr,function(itemId){
						if (itemId != escludiId){
							var el = document.querySelector("[data-eb-idfascia='" + itemId + "']");
							if (!!el){
								el.checked = false;
							}
						}
					});
				}   

				// usa querySelector con data-eb-idfascia
				function rendiInclusivoGruppo(idArr){
					arrayUtil.forEach(idArr,function(itemId){
						if (!!document.querySelector("[data-eb-idfascia='" + itemId + "']")){
							on(document.querySelector("[data-eb-idfascia='" + itemId + "']"),'click',function(e){
								console.log("this",this,"e",e);
								if (e.target.checked){
									setChecked(idArr,itemId);
								} else {
                                  	resetChecked2(idArr,itemId);
                                }
							});
						}
					});
				};
		
        		function setChecked(idArr,escludiId){
					arrayUtil.forEach(idArr,function(itemId){
						if (itemId != escludiId){
							var el = document.querySelector("[data-eb-idfascia='" + itemId + "']");
							if (!!el){
								el.checked = true;
							}
						}
					});
				}  

				
				function numeroMassimoSessioniPossibiliIscrizione(nMaxSessioniPermesse){
					on(query("#boxDateEvento input[type=checkbox]"),'click',function(e){
								 
						var nchecked = 0;
						query("#boxDateEvento input[type=checkbox]").forEach(function(el){
							if (el.checked == true) 
								nchecked++;									 
						})
						 
						if (nchecked >= nMaxSessioniPermesse + 1) {
							e.checked = false;
							domProp.set(e, 'disabled', true);
							 
							myDialog = new Dialog({
						        //title: "Details",
						        title: "Attenzione ",
						        content: "Massimo " + nMaxSessioniPermesse + " sessioni !",
						        style: "width: 500px"
						    });
						    myDialog.show();	
						    // prevent propagating event
							dojo.stopEvent(e);	
						}								 							
					});	
				}


				/* Per controllare la lunghezza dei campi testo */
				function deleteOrFrecce(keyCode){
					return (keyCode==8 || keyCode==46 || keyCode==37 || keyCode==39);
				}
				/*----------------solo cifre e impone anche un limite al numero dei caratteri numerici------------------------*/
				function limitaCifre(f,num){
					domAttr.set(f,'maxlength',num);
					on(f,'keydown',function(e){
						console.log(e.keyCode);
						if ((e.keyCode<48 || e.keyCode>57) && !deleteOrFrecce(e.keyCode)){
							e.preventDefault();
						}
					});
				}
				/*-----limita il numero delle cifre nel campo--------------------------*/
				function limitaTesto(f,num){
					domAttr.set(f,'maxlength',num);
					on(f,'keydown',function(e){
						console.log("DEBUG e:",e);
                      	console.log("DEBUG f:",f);                      	
                      	
						if ((e.keyCode>0) && !deleteOrFrecce(e.keyCode)){
                          	if(f.value.length<num){
                              f.value += e.key;
                            }
							e.preventDefault();
						}
					});
				}

				/* Per limitare le date disponibili sui calendari */
				function limitaDate() {
					try {
						var w = registry.byId("customfield5_box_anagrafica");
						if (!!w) {						
							w.set("dropDownDefaultValue", new Date(2018, 0, 1, 0, 0, 0, 0));
							w.set("constraints", {min: "2019-02-01", max:"2019-02-28"});
						}
						
					} catch(err) {
						console.log(err);
					}
				}

				/* Per limitare le date disponibili su tutti i calendari */
				function limitaTutteLeDate() {
					try {
						query(".ebTimeZoneAwareDateTextBox").forEach(function(node){
							var widgetId = domAttr.get(node,'widgetid');
							console.log(widgetId);

							var w = registry.byId(widgetId);
							if (!!w) {						
								w.set("dropDownDefaultValue", new Date(2020, 0, 1, 0, 0, 0, 0));
								w.set("constraints", {min: "2020-01-01"});
							}
						});
					} catch(err) {
						console.log(err);
					}
				}

				function checkObbligatorieta() {
				}	
				// https://docs.google.com/presentation/d/1yvdDh2qMFjcrx_Wd0sjuOZAAa4ZEObx4yKANhZOa2As/edit#slide=id.gedc95bf6d4_0_66	
				function SessioniMostraNascondiGruppiCampi(){                  
                             on(query("#boxDateEvento input[type=checkbox]"),'click',function(e){ 

                              checkObbligatorieta();
                              
                              //console.log("this", e, e.target, "-" ,e.target.attributes[3].value);   
                              var idFasciaCheckBox = e.target.attributes[3].value;
                               // console.log ("idFasciaCheckBox: ", idFasciaCheckBox);                                                     
                                if (!e.target.checked ){
                                   // console.log (" false !! ", e.target.checked);
                                   /*
                                   Tolgo il checkox: 
                                    settare a null tutte le liste che hanno 
                                    Il selected 
                                    A Quel valore di idfascia                                   
                                   */
                                     for (var v in cf) {				   
                                        var cf1 = cf[v];		                                
                                        if ( cf1.desc.indexOf('_sessions_') >= 0 ){
                                          	 var idCf = cf1.idCf;	
                                             var indiceIdValore = cf1.indiceIdValore;
                                             var w = registry.byId("customFieldSelect_" + idCf);   
                                             if (!!w){
                                                  console.log (" w.get(value)  ", w, w.get("value") );                                               
                                                   // se idfascia cliccata è il valore corrente della lista allora la resetta così spariscono i campi collegati
                                                   for (var objLista in w.store.data) {
                                                         var data = w.store.data[objLista];
                                                         // console.log (" dataaa ", data.label, w.get("value"));
                                                         if (w.get("value")==data.idValoreLista &&  data.label.indexOf(idFasciaCheckBox  +  " - ")>=0) {
                                                              w.set("value", null);
                                                           	  // console.log (" set vale null !! ");  
                                                              break;                                                             
                                                         }
                                                   }                                                                                                
                                             } else {
                                                  // per mobile TODO 
                                               	  var el = dom.byId("valoreLista" + indiceIdValore +".idValoreLista_box_anagrafica");
                                                  // console.log ("1 el:", el, el.options, el.options[el.selectedIndex].text);

                                                  for(var i = 0; i < el.options.length; i++) {
                                                    var trend = el.options[i];
                                                    // console.log ("1 trend.value", trend.value);
                                                    if (trend.selected == true && trend.text.indexOf(idFasciaCheckBox + ' - ') >= 0 ) {
                                                      // console.log("1 pigliato il valore " + trend.text, trend.index);
                                                      el.selectedIndex = 0;
                                                      
                                                      fireEvent(el,'change');
                                                      
                                                   }
                                                 } 	
                                               
                                             }
                                        }
                                     }
                                } 
                                                      
                           	    // ciclo su tutti i checkbox per abilitare i campi da mostrare definite dalle liste attaccate alle sessioni
                           		query("#boxDateEvento input[type=checkbox]").forEach(function(checkboxSession){                            			
                                  	console.log (" . . . . . . . checkboxSession:", checkboxSession.checked, checkboxSession.attributes[3].value);
                                     idFasciaCheckBox = checkboxSession.attributes[3].value;                                     
                                  if ( checkboxSession.checked )
                                    for (var v in cf) {				   
                                      var cf1 = cf[v];		                                
                                      if ( cf1.desc.indexOf('_sessions_') >= 0 ){                                        	
                                            //triggerIdFascia pottrebbe essere anche un array(?)... _sessions_23432_22322_23222 
                                            var triggerIdFasciaArr = cf1.desc.replace('_sessions_','');
                                            // console.log ("triggerIdFascia: ", triggerIdFasciaArr);
                                            
                                            var idLista = cf1.idLista;		
                                            var idCf = cf1.idCf;		
                                            var indiceIdValore = cf1.indiceIdValore;
                                        
                                        	// console.log ("++ lista: ", idLista, idCf);                                        
                                            triggerIdFasciaArr.split('_').forEach(function(triggerIdFascia) {
                                            // console.log("triggerIdFascia loop: " , triggerIdFascia);                               

                                          if (triggerIdFascia == idFasciaCheckBox)
                                            for (var lista in mappaListeValoriJson){		                                               
                                               var l = mappaListeValoriJson[lista];
                                               // console.log ("++ l: ", l, l.idListaValori, idLista, idCf);
                                               if (l.idListaValori == idLista) {                                                                                       
                                                  var w = registry.byId("customFieldSelect_" + idCf);                                            
                                                 // console.log ("++++++++++ dentro!!", w, idCf); 
                                                  var concerto = null;                                            
                                                    if (!!w){
                                                        var setListValueCorrespondingToSessionId = null;
                                                        for (var objLista in w.store.data) {
                                                            var data = w.store.data[objLista];
                                                            if (data.label.indexOf(idFasciaCheckBox + ' - ')>=0) 
                                                                setListValueCorrespondingToSessionId = data.valore;
                                                        }                                                
                                                        if (setListValueCorrespondingToSessionId != null) 
                                                            w.set("value", setListValueCorrespondingToSessionId);
                                                            // console.log (" - - - - set: 1 ", setListValueCorrespondingToSessionId);                                                
                                                    } else {
                                                         
                                                        //console.log ("set for mobile...", indiceIdValore);
                                                        var el = dom.byId("valoreLista" + indiceIdValore +".idValoreLista_box_anagrafica");
                                                        //console.log ("el:", el, el.options, el.options[el.selectedIndex].text);
                                                      
                                                      	for(var i = 0; i < el.options.length; i++) {
                                                           var trend = el.options[i];
                                                           // console.log ("trend.value", trend.value);
                                                           if ( trend.text.indexOf(idFasciaCheckBox + ' - ') >= 0 ) {
                                                               console.log(" pigliato il valore " + trend.text, trend.index);
                                                               el.selectedIndex = trend.index;
                                                               
                                                               fireEvent(el,'change');
                                                           }
                                                         }
                                                       
                                                    }
                                               }
                                            }
                                          
                                         }); //split                                        
                                      }	// if cf1	 		   
                                  }	// for cf	
 							});	// forEach(function(checkboxSession)                           
                         }); //on 
                
                } // SessioniMostraNascondiGruppiCampi()
              
              	// triggera onchange per anche per ie
              	function fireEvent(element,event){
                  if (document.createEventObject){
                  // dispatch for IE
                  var evt = document.createEventObject();
                  return element.fireEvent('on'+event,evt)
                  }
                  else{
                  // dispatch for firefox + others
                  var evt = document.createEvent("HTMLEvents");
                  evt.initEvent(event, true, true ); // event type,bubbling,cancelable
                  return !element.dispatchEvent(evt);
                  }
                }

				/* Apre E Seleziona Tutte Le Fasce */
				function ApreESelezionaTutteLeFasce() {
					domConstruct.place("<button type='button' id='allFascia'>Subscribe to all events</button><br><br>", query("[data-ebplatform-template-elementid='registrationBoxTitleNode']")[0], 'after');
					var btnAll = query('#allFascia' )[0];
					on (btnAll,'click',function(){
					
					query(".boxDateEvento input[type=checkbox]").forEach(function(node){node.checked=true;});

					arrayUtil.forEach(
					    query(".iconText"),
					    function(selectTag){					         
							selectTag.click(); 
							
					    }
					  );		 
					});
				}

				// check obbligatorietà	
				// esempio: aggiungiSeNonPresenti(["customfield5","customfield7","customfield8" ], eventboostplatform_iscrizioneFormProfile.required);
				function aggiungiSeNonPresenti(cosa,dove){
							arrayUtil.forEach(cosa, function(item) {
								var trovato = false;
								arrayUtil.forEach(dove, function(item2) {
									if (item == item2) {
										trovato = true;
									}
								});
								if (!trovato) {
									dove.push(item);
								}
							});
							return dove;
						}
				// check obbligatorietà
				// esempio: aggiungiSeNonPresentiCheckBox(["valoreLista10.idValoreLista" ], eventboostplatform_iscrizioneFormProfile.required_checkboxes);
				function aggiungiSeNonPresentiCheckBox(cosa,dove){
					arrayUtil.forEach(cosa, function(item) {
						var trovato = false;
						arrayUtil.forEach(dove, function(item2) {
							if (item in item2) {
								trovato = true;
							}
						});
						if (!trovato) {
							var obj = {};
							obj[item]=1;
							dove.push(obj);
						}
					});
					return dove;
				}

				// escludi dal check obbligatorietà	campi testo
				// esempio: eventboostplatform_iscrizioneFormProfile.required = eliminaTutti(["customfield5","customfield7","customfield8" ], eventboostplatform_iscrizioneFormProfile.required);	
				function eliminaTutti(cosa, dove) {
					var ret = [];
					arrayUtil.forEach(dove, function(item) {
						var trovato = false;
						arrayUtil.forEach(cosa, function(item2) {
							if (item == item2){ 
								trovato = true;
							}
						});
						if (!trovato) {
							ret.push(item);
						}
					});
					return ret;
				}
				// escludi dal  check obbligatorietà 
				// esempio: eventboostplatform_iscrizioneFormProfile.required_checkboxes = eliminaTuttiCheckBox(["valoreLista4.idValoreLista"], eventboostplatform_iscrizioneFormProfile.required_checkboxes);
				function eliminaTuttiCheckBox(cosa, dove) {
					var ret = [];
					arrayUtil.forEach(dove, function(item) {
						var trovato = false;
						arrayUtil.forEach(cosa, function(item2) {
							if (item2 in item){ 
								trovato = true;
							}
						});
						if (!trovato) {
							ret.push(item);
						}
					});
					return ret;
				}

				/* bottone per resettare tutte le sessioni selezionate */	
				function uncheckAllSessions(){
					document.querySelectorAll('.boxRegistration [type=checkbox]').forEach(function(e){ e.checked=false });
				}
				function buttonUncheckAllSessions() {
					domConstruct.place("<button type='button' id='buttonUncheckAllSessions'>Reset</button><br><br>", query("[data-ebplatform-template-elementid='registrationBoxTitleNode']")[0], 'after');
					var btnAll = query('#buttonUncheckAllSessions' )[0];
					on (btnAll,'click',function(){
						uncheckAllSessions();				 	 
					});
				}
				/* dato il nome di un custom field (prima colonna manage fields nel BE) ritorna il nome del campo
   		           in modo da potere prendere l'elemento col dom o col registry widget, ad es ritorna
   		           se campo testo: customfield4_box_anagrafica
  				   se lista: customFieldSelect_21818
 				   se lista per mobile: valoreLista1.idValoreLista_box_anagrafica
				 */
				function CFName(findName, forMobile) {
					    //console.log ("cf ", cf);
                    var ret = "";
                    // non è lista?
                    for(var idCustom in cf) {
                       if (cf[idCustom].indiceCustomField > 0 && cf[idCustom].desc == findName) { 
                           ret = "customfield" + cf[idCustom].indiceCustomField + "_box_anagrafica";
                           //console.log ("non lista ", ret);
                           break;
                       }
                    }
                    // lista ?
                    if (ret == "") {
                       for(var idCustom in cf) {
                           if (cf[idCustom].indiceIdValore > 0 && cf[idCustom].desc == findName) { 
                               // ret = "customfield" + cf[idCustom].indiceIdValore + "_box_anagrafica";
                               ret = "customFieldSelect_" + idCustom;
                               if (forMobile) 
                                   ret = "valoreLista" + cf[idCustom].indiceIdValore + ".idValoreLista_box_anagrafica";
                               //console.log ("lista ", ret);
                               break;
                           }
                        }
                    }
                    //console.log ("ret ", ret);
                    return ret;
                }


			});
		});
}); // outer require

/* BEGIN_BLOCK: allowedDomains 
function ebPlatformCustomCheckAndSubmit(){
	console.log("ebPlatformCustomCheckAndSubmit");


	// controlla che domini della email ospite ed accompagnatore siano in un certo set:
	// METTERE "," iniziale e "," finale
	var email0AllowedDomains = ",@gmail.com,@hotmail.com,@eventboost.com,";
	var emailAccompagnatoreAllowedDomains = ",@gmail.com,@hotmail.com,@eventboost.com,";
	var idCampoEmailAccompagnatore= "customfield1_box_anagrafica"

	var returnValue = 'ok';
	// classe managingFiglio
	if (ebManagingFiglio == false){
	    var email0 = document.getElementById("customfield0_box_anagrafica").value;
		var domain0 = email0.substring(email0.indexOf("@"), email0.length);
	    if (email0AllowedDomains.toLowerCase().indexOf(domain0.toLowerCase()) < 0) {
	        console.log ("Dominio email ospite non permesso.");
	        returnValue = 'Dominio email ospite non permesso.';
	    }
	} else {
	    // accompagnatore cambiare id a seconda del caso
	    var emailAcc = document.getElementById(idCampoEmailAccompagnatore).value;
		var domainAccompagnatore = emailAcc.substring(emailAcc.indexOf("@"), emailAcc.length);
	    if (emailAccompagnatoreAllowedDomains.toLowerCase().indexOf(domainAccompagnatore.toLowerCase()) < 0) {
	        console.log ("Dominio email accompagnatore non permesso."); 
	        returnValue = 'Dominio email accompagnatore non permesso.';
	    }
	}   
	return returnValue;

	return 'ko'
}
END_BLOCK: allowedDomains */