
/** ====================================================================
     Funcions generals
==================================================================== **/

        var gAjaxAction=null;
        var gAjaxParameters=null;
        var gAjaxDiv=null;
        
        function ajaxFormSubmit(form,div) {
        	form = $(form);
        	ajax(div,form.action,form.serialize(true));
            return false;
        }

        function ajax(div,action,pars) {
           	gAjaxAction=action; gAjaxParameters=pars; gAjaxDiv=div;
        	new Ajax.Updater(div, action,{ 
        			parameters: pars, 
        			evalScripts: true,
        			asynchronous: false,
        			onCreate: function() {
        		        try { 
        		        	Tiny.show();
        		        } catch(e) { }
        			},
        			onComplete: function() {
        				try { 
        					Tiny.hide();
        				} catch(e) { }
        			}
        	});
        }
        
        // Fa un crida ajax, com l'anterior, però enlloc d'omplir una div avalua el resulta com un javascript
        function ajaxJS(action,pars) {
        	new Ajax.Request(action,{ 
        			parameters: pars, 
        			onCreate: function() {
        		        try { Tiny.show(); } catch(e) {}
        			},
        			onComplete: function(res) {
        				try { Tiny.hide(); } catch(e) {}
        			},
        			onSuccess: function(res) {
        				eval(res.responseText);
        			}
        	});
        }

        function reloadAjax() {
            if (gAjaxAction!=null) ajax(gAjaxDiv, gAjaxAction, gAjaxParameters);
        }
        
        function loadMenu(menuPars){
        	new Ajax.Updater('divMenu', 'menu!init.action', {parameters: menuPars, evalScripts: true});
        }
        
        /*
         * RVG
         */
        
        function ajaxRequest(action,pars) {
        	new Ajax.Request(action,{ 
        			parameters: pars, 
        			asynchronous: false,
        			onCreate: function() {
        		        try { Tiny.show(); } catch(e) {}
        			},
        			onComplete: function(res) {
        				try { 
        					Tiny.hide();
        					return true;
        				} catch(e) {}
        			}
        	});
        }
/** ====================================================================
     Utils
==================================================================== **/        

        
        
        function addSelectOption(select,value,text,pos) {
        	if (pos==null) pos=0;
            var opt = document.createElement('option');
            opt.text = text; opt.value = value;
            try { 
            	select.add(opt, select.options[pos]); // FF
            } catch(ex) { 
            	select.add(opt, pos);  // IE
            }
        }
        
        function parseDMY (data,sep) {
            var date = new Date();
            data = data.split(sep);
            date.setFullYear(parseInt(data[2],10),parseInt(data[1],10)-1,parseInt(data[0],10));
            return date;
        }

        function getIndexFromArray(array, property, value) {
            for (var i=0; i<array.length; i++)
                if (array[i][property]==value) return i;
            return -1;
        }
        
        function getIndexFromSelect(select, value) {
	        var o = select.options;
	        for (var i=0; i<o.length; i++) 
		        if (o[i].value==value) return i;
	        return -1;
        }
        
        
        function selectSelect(select,value) {
        	for (var i=0; i<select.options.length; i++)
        		if (select.options[i].value==value)
        			select.selectedIndex = i;
        }
        
        
     
     //Extèn el tipus String amb la funció trim.  
     // ATENCIÓ: NO posar ";" al final!!
     String.prototype.trim = function() {
    	 return this.replace(/^[\s]+|[\s]+$/g,'')
     }

        
        
/** ====================================================================
     Funcions específiques dels formularis
==================================================================== **/
        
        
    // ==================================================
    // Preferències -- TORNS
    // ==================================================

     	function OrdenaPerDataAscendent(a,b){
			var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
			a = a.inici.replace(dateRE,"$3$2$1");
			b = b.inici.replace(dateRE,"$3$2$1");
			if (a>b) return 1;
			else if (a<b) return -1;
			var ordre = 'alberg';
			if(a[ordre]=b[ordre]) return (a['activitat']>b['activitat'])?1:-1;
			else return (a[ordre]>b[ordre])?1:-1;
			return 0;
		}
        
     	function mostraOpcioPreferencia (ordre, enProces, maxPreferencia) {
        	opcioPreferencia.ordre = ordre;
        	opcioPreferencia.sort((ordre=='inici')? OrdenaPerDataAscendent :
            	// function(a,b) { return (parseDMY(a.inici,'/').getTime() > parseDMY(b.inici,'/').getTime())?1:-1; } : 
                function(a,b) { return (a[ordre]>b[ordre])?1:-1; }
            );

            var s = '';

            for (var i=0; i<opcioPreferencia.length; i++) {
                var o = opcioPreferencia[i];
                s += (enProces?'<tr><td width="25"><img src="imatges/mes.png" onclick="addPreferencia('+o.id+',true,'+maxPreferencia+');" class="hand"/></td><td align="center"><table class="tableOpcioPreferencia" width="95%"><tr>':
                	           '<tr><td><table class="tableOpcioPreferencia" width="100%"><tr>') +
                     '<td class="tdPrefAlberg">'+o.alberg+'</td>' +
                     '<td class="tdPrefData">'+o.inici+' - '+o.fi+'</td></tr><tr>' + 
                     '<td class="tdPrefDesc">'+o.descripcio+'</td>' +
                   /*'<td class="tdPrefRef">Ref: '+o.ref+'</td>' + */ 
                     (o.places==null?'':'</tr><tr><td colspan="2"><i>Places: <b>'+o.places+'</b></i></td>') +
                     '</tr></table></td></tr>';
            }
            
        	$('divOpcioPreferencia').innerHTML='<table width="100%" cellspacing="0">' + s + '</table>';
        }

        function mostraPreferencia(enProces,maxPreferencia) {
            var s = '';
            var t = '';
            
            if (enProces){
            	for (var i=0; i<preferencies.length; i++) {
                	var o = preferencies[i];
                	s += '<tr> <td></td><td><h3>'+(i+1)+'</h3></td><td></td><td width="80"><img src="imatges/x.png" onclick="delPreferencia('+i+','+maxPreferencia+');" class="hand"/>' +
                	     (i==0?'<img src="imatges/blank.png"/>':'<img src="imatges/up.png" onclick="swapPreferencies('+i+','+(i-1)+','+maxPreferencia+')" class="hand"/>') +
                	     (i==preferencies.length-1?'':'<img src="imatges/down.png" onclick="swapPreferencies('+i+','+(i+1)+','+maxPreferencia+')" class="hand"/>') +
              	         '</td><td><table class="tablePreferenciaSelec" width="100%"><tr>' +
    	                 '<td class="tdPrefAlberg">'+o.alberg+'</td>' +
    	                 '<td class="tdPrefData">'+o.inici+' - '+o.fi+'</td></tr><tr>' + 
    	                 '<td class="tdPrefDesc">'+o.descripcio+'</td>' +
    	                 /*'<td class="tdPrefRef">Ref: '+o.ref+'</td>' +*/ 
    	                 (o.placesBloq!=null?'</tr><tr><td coslpan="2"><b>Places:'+o.placesBloq+'</b></td>':'') +
    	                 '</tr></table></td></tr>';
                }
            }else{ // No deixa modificar res
            	for (var i=0; i<preferencies.length; i++) {
                	var o = preferencies[i];
                	s += '<tr> <td></td><td><h3>'+(i+1)+'</h3></td><td></td> <td><table class="tablePreferenciaSelec" width="100%"><tr>' +
    	                 '<td class="tdPrefAlberg">'+o.alberg+'</td>' +
    	                 '<td class="tdPrefData">'+o.inici+' - '+o.fi+'</td></tr><tr>' + 
    	                 '<td class="tdPrefDesc">'+o.descripcio+'</td>' +
    	                 /*'<td class="tdPrefRef">Ref: '+o.ref+'</td>' +*/ 
    	                 (o.placesBloq!=null?'</tr><tr><td coslpan="2"><b>Places:'+o.placesBloq+'</b></td>':'') +
    	                 '</tr></table></td></tr>';
                }
            }
            
            if (preferencies.length > 0) t = '<center><br/><h3>'+titol2+'</h3><br/></center>';
            
            t += '<table id="tablePreferencies" cellspacing="0">' + s + '</table>';
            $('divPreferencies').innerHTML = t;
        }
        
        function addPreferencia(id,mostrar,maxPreferencia,noBloquejar) {
            if (preferencies.length > maxPreferencia-1) return alert('Només es poden seleccionar '+maxPreferencia+' preferències');
            var p = opcioPreferencia[getIndexFromArray(opcioPreferencia,'id',id)];
		    // Sera undefined cuando cambienmos de grupo y el torn no este disponible para el nuvo grupo de edad.
            // entonces nos devuelve undefined ya que intenta acceder por el id del torn y no lo encuentra.
            if(p != undefined) preferencies.push(p);
		    if (mostrar) mostraPreferencia(true,maxPreferencia); // Si en podem afegir vol dir que el sorteig encara no s'ha fet
		    var ordre = opcioPreferencia.ordre;
		    opcioPreferencia = opcioPreferencia.without(p);
		    if (mostrar) mostraOpcioPreferencia(ordre,true,maxPreferencia);
		    if (!noBloquejar) bloquejaPreferencia(id);
		}
       
        function delPreferencia(i,maxPreferencia) {
            var p = preferencies[i];
            desbloquejaPreferencia(p.id);
            preferencies = preferencies.without(p);
            opcioPreferencia.push(p);
		    mostraPreferencia(true,maxPreferencia);
            mostraOpcioPreferencia(opcioPreferencia.ordre,true,maxPreferencia);
        }

        function swapPreferencies(a,b,maxPreferencia) {
            var c = preferencies[a];
            preferencies[a] = preferencies[b];
            preferencies[b] = c;
            mostraPreferencia(true,maxPreferencia);
        }
        
        /* RVG
         * el segon parametre indica si hem de realitzar una comparacio entre les
         * preferencies desades i les seleccionades. Control per tal de no fer-ho quan
         * estem a la pantalla de confirmació de canvis en les preferencies.
         */
        function preferenciesSubmit(form, comparacio) {
            try {
                if (preferencies.length<=0) { alert("S'ha d'escollir almenys una preferència"); return; }
                var s = '';
                var strPref = ''; var strPrefOr = '';
                for (var i=0; i<preferencies.length; i++) 
                    s +='<input type="hidden" name="preferencia['+i+'].j1040Id" value="'+preferencies[i].id+'"/> ';
                for (var i=0; i<preferenciesOriginals.length; i++) 
                    s +='<input type="hidden" name="preferenciaOriginal['+i+'].j1040Id" value="'+preferenciesOriginals[i].id+'"/> ';
                $('divInputPreferencia').innerHTML = s;
                
                if(teNumeroSorteig){
                	if(!comparaPreferencies() && comparacio) {
                		form.action = form.action.replace('save','confirma');
                		form.action = form.action.replace('preferencia','confirmapreferencia');
                	}
                }
                
                ajaxFormSubmit(form,'divContingut');
            } catch (e) {}
        }
        
        /* RVG
         * Mostra uns llistat de preferencies amb l'estil definit a l'aplicacio, pero en el div seleccionat
         */
        function mostraPreferenciaConfirmacio(llistaPreferencies, ordre, enProces, maxPreferencia, div) {
        	llistaPreferencies.ordre = ordre;
        	llistaPreferencies.sort((ordre=='inici')? OrdenaPerDataAscendent :
                // function(a,b) { return (parseDMY(a.inici,'/').getTime() > parseDMY(b.inici,'/').getTime())?1:-1; } : 
                function(a,b) { return (a[ordre]>b[ordre])?1:-1; }
            );
            
            var s = '';

            for (var i=0; i<llistaPreferencies.length; i++) {
                var o = llistaPreferencies[i];
                s += (enProces?'<tr><td width="25"><img src="imatges/mes.png" onclick="addPreferencia('+o.id+',true,'+maxPreferencia+');" class="hand"/></td><td align="center"><table class="tableOpcioPreferencia" width="95%"><tr>':
                	           '<tr><td><table class="tableOpcioPreferencia" width="100%"><tr>') +
                     '<td class="tdPrefAlberg">'+o.alberg+'</td>' +
                     '<td class="tdPrefData">'+o.inici+' - '+o.fi+'</td></tr><tr>' + 
                     '<td class="tdPrefDesc">'+o.descripcio+'</td>' +
                     /*'<td class="tdPrefRef">Ref: '+o.ref+'</td>' +*/ 
                     (o.places==null?'':'</tr><tr><td colspan="2"><i>Places: <b>'+o.places+'</b></i></td>') +
                     '</tr></table></td></tr>';
            }
            
        	$(div).innerHTML='<table width="100%" cellspacing="0">' + s + '</table>';
        }
        
        /*
         * RVG: mostra les preferencies amb places lliures a l'entorn d'aministració
         */
        function mostraPreferenciesPlacesLliures(llistaPreferencies, ordre, enProces, maxPreferencia, div) {
        	llistaPreferencies.ordre = ordre;
        	llistaPreferencies.sort((ordre=='inici')? OrdenaPerDataAscendent :
                // function(a,b) { return (parseDMY(a.inici,'/').getTime() > parseDMY(b.inici,'/').getTime())?1:-1; } : 
                function(a,b) { return (a[ordre]>b[ordre])?1:-1; }
            );
            
            var s = '';

            for (var i=0; i<llistaPreferencies.length; i++) {
                var o = llistaPreferencies[i];
                s += (enProces?'<tr><td width="25"><img src="imatges/mes.png" onclick="getPreinscripcions('+o.id+');" class="hand"/></td><td align="center"><table class="tableOpcioPreferencia" width="95%"><tr>':
                	           '<tr><td><table class="tableOpcioPreferencia" width="100%"><tr>') +
                     '<td class="tdPrefAlberg">'+o.alberg+'</td>' +
                     '<td class="tdPrefData">'+o.inici+' - '+o.fi+'</td></tr><tr>' + 
                     '<td class="tdPrefDesc">'+o.descripcio+'</td>' +
                     /*'<td class="tdPrefRef">Ref: '+o.ref+'</td>' +*/ 
                     (o.places==null?'':'</tr><tr><td colspan="2"><i>Places: <b>'+o.places+'</b></i></td>');
                
                if(o.desglosInstrument[0]!=null){
                	s += '</tr><tr><td colspan="2"><b><i>Desglos places per instrument:</i></b></td>';
                    	 for(var j=0 ; o.desglosInstrument[j]!=null ; j++){
                    		 s += '</tr><tr><td colspan="2"><i>'+o.desglosInstrument[j].instrument+': <b>'+o.desglosInstrument[j].places+'</b></i></td>';
                    	 }
                     }
                    	 
                     s+='</tr></table></td></tr>';
            }
            if(llistaPreferencies.length>0)
            	$(div).innerHTML='<table width="100%" cellspacing="0">' + s + '</table>';
        }
        
        function comparaPreferencies(){
        	var iguales = true;
        	if(preferencies.length == preferenciesOriginals.length){
            	for (var i=0; i<preferencies.length && iguales; i++){
            		if(preferencies[i].id != preferenciesOriginals[i].id){
            			iguales = false;
            		}
            	}
            }else iguales = false;
        	return iguales;
        }

       
    // ==================================================
    // Nens
    // ==================================================    

        var propsNen = new Array('nom','cognom1','cognom2','dni','dataNaixement');
        var propsFN = new Array('carnetFamiliaNombrosa','nifFamiliaNombrosa');
        var propsFA = new Array('nom','cognom1','cognom2','dni','codiPostal');
        var propsRL = new Array('nom','cognom1','cognom2','NIF','personaJuridica','id');
        var propsFM = new Array('carnetFamiliaMonoparental','nifTitular');
        
        function showNens() {
        	var s = '';
			for (var i=0; i<nens.length; i++) {
	            	if (nens[i].id!=-1) s += '<input type="hidden" name="nenPreinscripcioGrup['+i+'].id" value="'+nens[i].id+'"/>';
	            	s += '<tr><td><div class="divNen' +(nens[i].min?' divNenMin':'')+ '"><table width="100%" class="tableNen">' +
	            	     '<tr><td>Nom:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].nom" value="'+nens[i].nom+'"/></td>' +            	     
	            	     '<td align="right" valign="top">' + (nens.length>1?'<img style="vertical-align:top;" src="imatges/x.png" onclick="delNen('+i+')" class="hand"/>':'') + 
	            	     '<img src="imatges/' +(nens[i].min?'down':'up')+ '.png" onclick="toggleMinNen('+i+')" class="hand"/></td></tr>' +
	            	     '<tr><td>Cognoms:</td><td colspan=3><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].cognom1" value="'+nens[i].cognom1+'"/>' +
	            	     '<input name="nenPreinscripcioGrup['+i+'].cognom2" value="'+nens[i].cognom2+'" style="margin-left: 5px;"/></td><td></div></td></tr>' +
	            	     '<tr><td>Data naixement:</td><td colspan=3><input class="inputObligatori" type="text" onchange="validaCampData(this);" value="'+nens[i].dataNaixement+'" name="nenPreinscripcioGrup['+i+'].dataNaixement" id="data_'+i+'"/><font size="1"  style="font-weight: bolder; font-style: italic;">&nbsp;&nbsp;dd/mm/aaaa</font></td></tr>'+
	            	     '<tr><td>Dni:</td><td colspan="2"><input  maxlength="10" name="nenPreinscripcioGrup['+i+'].dni" value="'+nens[i].dni+'" '+((dniObligatoriGrp|| (nens[i].detallNen.becaAjut && detallNens))?' class="inputObligatori"':'')+' id="dniNen_'+i+'"/></td></tr>';
	            	     // '<tr><td>Any naixement:</td><td><select class="inputObligatori" name="nenPreinscripcioGrup['+i+'].anyNaixement">'+anysSelect+'</select></td></tr>'+
	            	     
	            	if (detallNens) { 
		            	s +='<tr><td>Sexe:</td><td colspan="3"><select name="nenPreinscripcioGrup['+i+'].detallNen.sexe"><option value="M">Masculí</option><option value="F">Femení</option></select></td></tr>' +
	            		'<tr><td>Domicili:</td><td colspan="3"><input class="inputObligatori" size="50" name="nenPreinscripcioGrup['+i+'].detallNen.domicili" value="'+nens[i].detallNen.domicili+'"/></td></tr>' +
	            		'<tr><td>Codi Postal:</td><td><input class="inputObligatori" size="5" maxlength="5" name="nenPreinscripcioGrup['+i+'].detallNen.codiPostal" value="'+nens[i].detallNen.codiPostal+'"/></td>' +
	            		'<td>Població:</td><td><input class="inputObligatori" size="15" name="nenPreinscripcioGrup['+i+'].detallNen.poblacio" value="'+nens[i].detallNen.poblacio+'"/></td></tr>' +
	            		'<tr><td>Correu electrònic:</td><td><input class="inputObligatori" size="25" name="nenPreinscripcioGrup['+i+'].detallNen.email" value="'+nens[i].detallNen.email+'"/></td>' +
	            		'<td>Telèfon:</td><td><input class="inputObligatori" size="9" name="nenPreinscripcioGrup['+i+'].detallNen.telefon" value="'+nens[i].detallNen.telefon+'"/></td></tr>';
	            		
		            	s += '<tr><td>Responsable:</td>'+ 
	            	     	 '<td colspan="3" id="checkResponsable'+i+'">'+
	            	     	 '<input type="checkbox" name="" onclick="setResponsablePreinscripcio(this,'+i+')"/>El/la mateix/a responsable de la preinscripció'+
		            	     '</td></tr>'+
		            	     '<tr><td><br/></td><td>NIF:</td><td colspan=2><input id="nifResponsableNen'+i+'" MAXLENGTH="9" class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.NIF" value="'+nens[i].detallNen.representantLegal.NIF+'" onchange="validaNIF(this.value,'+i+');"/></td></tr>'+
		            	     '<tr id="missatgeNIFnen'+i+'" style="display: none;"><td><br/></td><td colspan=3><span><b><i>El NIF indicat pertany a una entitat, nomes cal que indiqui el nom.</b></i></span></td></tr>'+
		            		 '<tr><td><br/></td><td>Nom:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.nom" value="'+nens[i].detallNen.representantLegal.nom+'" id="nomResponsableNen'+i+'"/></td></tr>'+
		            		 '<tr id="rowcognoms1nen'+i+'" style="display:'+(nens[i].detallNen.representantLegal.personaJuridica==true?'none':'')+'"><td><br/></td><td>Cognoms:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.cognom1" value="'+nens[i].detallNen.representantLegal.cognom1+'" id="cognom1ResponsableNen'+i+'"/></td></tr>'+
		            		 '<tr id="rowcognoms2nen'+i+'" style="display:'+(nens[i].detallNen.representantLegal.personaJuridica==true?'none':'')+'"><td><br/></td><td>&nbsp;</td><td colspan=2><input name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.cognom2" value="'+nens[i].detallNen.representantLegal.cognom2+'" id="cognom2ResponsableNen'+i+'"/></td></tr>'+
		            		 '<tr><td colspan=4><input type="hidden" name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.id" value="'+nens[i].detallNen.representantLegal.id+'" id="idResponsableNen'+i+'"/>'+
		            		 '<input type="hidden" name="nenPreinscripcioGrup['+i+'].detallNen.representantLegal.personaJuridica" value="'+nens[i].detallNen.representantLegal.personaJuridica+'" id="pjResponsableNen'+i+'"/>'+
		            		 '</td></tr>';
		            	
		            	if (familiaNombrosa || familiaAcollida || familiaMonoparental || certificatEap || becaAjut) {
	            			s += '<tr><td>Beques:</td><td colspan="3">';
	            		    if (familiaNombrosa)		s += '<input type="checkbox" value="true" name="nenPreinscripcioGrup['+i+'].detallNen.esFamiliaNombrosa" '+(nens[i].detallNen.esFamiliaNombrosa=='true'?'checked':'')+' onclick="toggleAjuda(this);"/>Nombrosa';
						    if (familiaAcollida)   	s += '&nbsp;&nbsp;</span><input type="checkbox" value="true" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollida" '+(nens[i].detallNen.familiaAcollida=='true'?'checked':'')+' onclick="toggleAjuda(this);"/>Acollidora';
						    if (familiaMonoparental)	s += '&nbsp;&nbsp;<input type="checkbox" value="true" name="nenPreinscripcioGrup['+i+'].detallNen.familiaMonoparental" '+(nens[i].detallNen.familiaMonoparental=='true'?'checked':'')+' onclick="toggleAjuda(this);"/>Monoparental';
						    if (becaAjut)	s += '&nbsp;&nbsp;<input type="checkbox" value="true" name="nenPreinscripcioGrup['+i+'].detallNen.becaAjut" '+(nens[i].detallNen.becaAjut=='true'?'checked':'')+' onclick="toggleAjuda(this);"/>Beca Ajut';
						    if (certificatEap)	s += '&nbsp;&nbsp;<input type="checkbox" value="true" name="nenPreinscripcioGrup['+i+'].detallNen.certificatEap" '+(nens[i].detallNen.certificatEap=='true'?'checked':'')+' onclick="toggleAjuda(this);"/>Certificat Eap';
	            		    s+='</td></tr>';
	            		    if (familiaNombrosa) {
			            	  if (nens[i].detallNen.esFamiliaNombrosa=='true') {
			            		s +='<tr><td><br/></td><td>Títol F. nombrosa:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.familiaNombrosa.carnetFamiliaNombrosa" value="'+nens[i].detallNen.familiaNombrosa.carnetFamiliaNombrosa+'"/></td></tr>' +
	            				'<tr><td><br/></td><td>Nif del Titular del Títol:</td>    <td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.familiaNombrosa.nifFamiliaNombrosa" maxLength="9" value="'+nens[i].detallNen.familiaNombrosa.nifFamiliaNombrosa+'"/></td></tr>';
			            	  } else for (var j=0; j<propsFN.length; j++) s += '<input type="hidden" name="nenPreinscripcioGrup['+i+'].detallNen.familiaNombrosa.'+propsFN[j]+'" value="'+nens[i].detallNen.familiaNombrosa[propsFN[j]]+'"/>';
	            		    }
	            		    if (familiaAcollida) {
				              if (nens[i].detallNen.familiaAcollida=='true') {
				            	s +='<tr><td><br/></td><td>Nom:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.nom" value="'+nens[i].detallNen.familiaAcollidora.nom+'"/></td></tr>' +
				            		'<tr><td><br/></td><td>Cognoms:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.cognom1" value="'+nens[i].detallNen.familiaAcollidora.cognom1+'"/></td></tr>' +
				            		'<tr><td><br/></td><td><br/></td><td colspan=2><input name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.cognom2" value="'+nens[i].detallNen.familiaAcollidora.cognom2+'"/></td></tr>' +
				            		'<tr><td><br/></td><td>Dni:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.dni" value="'+nens[i].detallNen.familiaAcollidora.dni+'"/></td></tr>' +
				            		'<tr><td><br/></td><td>Codi Postal:</td><td colspan=2><input class="inputObligatori" maxlength="5" size="5" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.codiPostal" value="'+nens[i].detallNen.familiaAcollidora.codiPostal+'"/></td></tr>';
				              } else for (var j=0; j<propsFA.length; j++) s += '<input type="hidden" name="nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.'+propsFA[j]+'" value="'+nens[i].detallNen.familiaAcollidora[propsFA[j]]+'"/>';
		            		}
	            		    if (familiaMonoparental) {
				            	  if (nens[i].detallNen.familiaMonoparental=='true') {
				            		s +='<tr><td><br/></td><td>Títol F. monoparental:</td><td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.monoparental.carnetFamiliaMonoparental" value="'+nens[i].detallNen.monoparental.carnetFamiliaMonoparental+'"/></td></tr>' +
		            				'<tr><td><br/></td><td>Nif del Titular del Títol:</td>    <td colspan=2><input class="inputObligatori" name="nenPreinscripcioGrup['+i+'].detallNen.monoparental.nifTitular" maxLength="9" value="'+nens[i].detallNen.monoparental.nifTitular+'"/></td></tr>';
				            	  } else for (var j=0; j<propsFM.length; j++) s += '<input type="hidden" name="nenPreinscripcioGrup['+i+'].detallNen.monoparental.'+propsFM[j]+'" value="'+nens[i].detallNen.monoparental[propsFM[j]]+'"/>';
		            		    }
	            		    if (certificatEap) {
	            		    	if (nens[i].detallNen.certificatEap=='true') 
	    	            		    //	    s +='<tr><td></td><td colspan="3"><input type="checkbox" name="nenPreinscripcioGrup['+i+'].detallNen.acceptaEap" '+(nens[i].detallNen.acceptaEap=='true'?'checked':'')+'/> Caldrà enviar el certificat per fax a l’Agència Catalana de la Joventut (93 483 83 50) per a la validació pertinent abans del dia 17 de març o la preinscripció del participant quedarà anul·lada.</td></tr>';
	    	            		    	    s +='<tr><td></td><td colspan="3">Caldrà enviar el certificat per fax a l’Agència Catalana de la Joventut (93 483 83 50) per a la validació pertinent abans del dia 16 de març o la preinscripció del participant quedarà anul·lada.</td></tr>';
	            		    }
		            	}
		            }
	 
	            	
	                for (var j=0; j<prefsInstr.length; j++) {
	                   	var ins = prefsInstr[j].opcioInstrument;
	                   	s += '<tr><td colspan="2" title="'+prefsInstr[j].df+'">'+prefsInstr[j].descripcio+':</td>' +
	              			     '<input type="hidden" name="nenPreinscripcioGrup['+i+'].instrument['+j+'].preferencia.id" value="'+prefsInstr[j].id+'"/> ' +
	              			     '<input type="hidden" name="nenPreinscripcioGrup['+i+'].instrument['+j+'].preferencia.j1040Id" value="'+prefsInstr[j].j1040Id+'"/> ' +
	              			     '<input type="hidden" name="nenPreinscripcioGrup['+i+'].instrument['+j+'].id"/> ' +
	              			     '<td colspan="2"><select class="inputObligatori" name="nenPreinscripcioGrup['+i+'].instrument['+j+'].j2075Id" style="width:200px;">';
	              		var ks = Object.keys(ins);
	              		for(var k=0; k<ks.length; k++) s += '<option value="'+ks[k]+'">'+ins[ks[k]]+'</option>';
	              		s += '</select></td></tr>';
	              	}
	            	s += '</table></div></td></tr>';
	        }
        	// Apareixerà el botó d'afegir nous nens si no té número de sorteig assignat i si no hi han massa nens  
        	if (nens.length<maxNens && enProces && !sorteigGenerat) s += '<tr><td><img src="imatges/seguent_participant.png" onclick="addNen()" class="hand"/></td></tr>';

        	$('divLlistatNens').innerHTML = '<table width="100%">'+s+'</table>';
        	
	        // Seleccionem els valors correctes a les selects
	        for (var i=0; i<nens.length; i++) {
	            // selectSelect(document.nenForm['nenPreinscripcioGrup['+i+'].anyNaixement'],nens[i].anyNaixement);
	            for (var j=0; j<prefsInstr.length; j++) {
	            	if (nens[i].instrument[prefsInstr[j].j1040Id]==null) continue;   // Aquest cas es donarà quan hem afegit prefs amb instrument després dels nens. Sinó fallaria.
	            	document.nenForm['nenPreinscripcioGrup['+i+'].instrument['+j+'].j2075Id'].value = nens[i].instrument[prefsInstr[j].j1040Id].id;
	            	selectSelect(document.nenForm['nenPreinscripcioGrup['+i+'].instrument['+j+'].j2075Id'],nens[i].instrument[prefsInstr[j].j1040Id].j2075Id);
	            }
	            if (detallNens) selectSelect(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.sexe'],nens[i].detallNen.sexe);
	        }
	        if (!enProces) $('nenForm').disable(); 
        }
 
        function addNen() {
        	copyNens();
            var n = new Object(); n.id=-1;
            for (var j=0; j<propsNen.length; j++) n[propsNen[j]] = '';
            n.detallNen = new Object(); 
            for (var j=0; j<propsDetall.length; j++) n.detallNen[propsDetall[j]] = '';
            n.detallNen.familiaNombrosa = new Object();
            for (var j=0; j<propsFN.length; j++) n.detallNen.familiaNombrosa[propsFN[j]] = '';
            n.detallNen.familiaAcollidora = new Object();
            for (var j=0; j<propsFA.length; j++) n.detallNen.familiaAcollidora[propsFA[j]] = '';
            n.detallNen.representantLegal = new Object();
            for (var j=0; j<propsRL.length; j++) n.detallNen.representantLegal[propsRL[j]] = '';
            n.detallNen.monoparental = new Object();
            for (var j=0; j<propsFM.length; j++) n.detallNen.monoparental[propsFM[j]] = '';
            
            n.min = false; n.instrument = new Object();
            for (var j=0; j<prefsInstr.length; j++) {
                    n.instrument[prefsInstr[j].j1040Id] = new Object();
                	n.instrument[prefsInstr[j].j1040Id].id = '';
                	n.instrument[prefsInstr[j].j1040Id].j2075Id = '';
            }
            nens.push(n);
        	showNens();
        }

        function delNen(i) {
        	copyNens();
        	nens.splice(i,1);
        	showNens();
        }

        function copyNens() {
        	//alert($F(document.nenForm['nenPreinscripcioGrup['+i+'].nom']));
        	for (var i=0; i<nens.length; i++) {
        		for (var j=0; j<propsNen.length; j++) nens[i][propsNen[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].'+propsNen[j]]);
            	for (var j=0; j<prefsInstr.length; j++) {
                	if (nens[i].instrument[prefsInstr[j].j1040Id]==null) continue;   // Aquest cas es donarà quan hem afegit prefs amb instrument després dels nens. Sinó fallaria.
                	nens[i].instrument[prefsInstr[j].j1040Id].id = $F(document.nenForm['nenPreinscripcioGrup['+i+'].instrument['+j+'].id']);
                	nens[i].instrument[prefsInstr[j].j1040Id].j2075Id = $F(document.nenForm['nenPreinscripcioGrup['+i+'].instrument['+j+'].j2075Id']);
            	}
            	if (detallNens) {
            		for (var j=0; j<propsDetall.length; j++) nens[i].detallNen[propsDetall[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.'+propsDetall[j]]);
            		try {
            			nens[i].detallNen.acceptaEap = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.acceptaEap']);
            		} catch (e) {}
            		try {
            			for (var j=0; j<propsFN.length; j++) nens[i].detallNen.familiaNombrosa[propsFN[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.familiaNombrosa.'+propsFN[j]]);
            		} catch (e) {}
            		try {
            			for (var j=0; j<propsFA.length; j++) nens[i].detallNen.familiaAcollidora[propsFA[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.familiaAcollidora.'+propsFA[j]]);
            		} catch (e) {}
            		try {
            			for (var j=0; j<propsRL.length; j++) nens[i].detallNen.representantLegal[propsRL[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.representantLegal.'+propsRL[j]]);
            		} catch (e) {}
            		try {
            			for (var j=0; j<propsFM.length; j++) nens[i].detallNen.monoparental[propsFM[j]] = $F(document.nenForm['nenPreinscripcioGrup['+i+'].detallNen.monoparental.'+propsFM[j]]);
            		} catch (e) {}
            	}
        	}
        }

        function toggleMinNen(i) {
            copyNens();
            nens[i].min=!nens[i].min;
            showNens();
        }

        // Aquesta funció evita que es seleccioni a la vegada la família nombrosa i la família acollidora
        function toggleAjuda(input) {
            if (input.checked) {
            	var checkboxes = input.parentNode.getElementsByTagName('INPUT');
            	for (var i=0; i<checkboxes.length; i++) {
            		var c = checkboxes[i];
            		if (c!=input) c.checked=false;
            	}
            }
        	copyNens();
        	showNens();
        }
        
        
        function nenSubmit(form) {
            // for (var i=0;i<nens.length;i++) 
              //  if (nens[i].detallNen.certificatEap=='true') { 
              //  	var check = form['nenPreinscripcioGrup['+i+'].detallNen.acceptaEap'];
              //  	if (check!=null && !check.checked) return alert("S'han d'acceptar les condicions en cas del certificat EAP");
              //	}
            ajaxFormSubmit(form,'divContingut');
        }
        
        
        
        