function getRequester(){
 var xhr = window.XMLHttpRequest ? new XMLHttpRequest() :(window.ActiveXObject ?  new ActiveXObject("Microsoft.XMLHTTP"): '');
 
  return xhr;		
}


function ajax(method, url, flux, rappel, asyncrone){

//alert('appel ajax  flux='+flux+'  url=  '+url +'   rappel='+rappel);
 var xhr =getRequester();
	 if (!xhr) return false;
	 
 xhr.onreadystatechange = function () {
 
	rappel(xhr);
	}
 xhr.open(method, url, asyncrone);
 if (flux){

    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8 ");

     }
 else{
 	xhr.setRequestHeader("Content-Type", "text/html; charset=UTF-8");

 	}
 xhr.send(flux);
 
 return true
}

function chargerXML(xhr){
	var xml; 
	
	if (window.ActiveXObject) {
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xml.loadXML(xhr.responseText);
		
	}else{
		xml = xhr.responseXML.documentElement;	  	
	} 
	
	return xml;
}
function loadMailAjax(xhr){
	if(xhr.readyState==4){
    	if(xhr.status==200){
    		 xinha_editors.editormail.setHTML(xhr.responseText);
    	}else {
		    alert('La requête AJAX a rencontré un problème. Code erreur : '+xhr.status);
		 }
    	
    }
    	
}

function showEdition(xhr){
	if(xhr.readyState==4){
    	if(xhr.status!=200){
		    alert("La requête AJAX a rencontré un problème, le fichier n'a pu être enregistré ...error:"+xhr.status);
    	}
    }
}


function loadConditions(xhr){
//alert('appel à loadConditions');

	if(xhr.readyState==4){
    	if(xhr.status==200){
    	 document.getElementById("conditions_utilisation").innerHTML=xhr.responseText;
    	
    	}
    	else {
		    alert("La requête AJAX a rencontré un problème ..");
		 }
    	
    }

		
}


function majListGenealogies(xhr){
	//alert('appela majlistGen ');
	if(xhr.readyState==4){
    	if(xhr.status==200){
		
			var response = chargerXML(xhr) ;
			var genealogies =response.getElementsByTagName("genealogie");
			  count =genealogies.length;
			  
              var html = '';
              html+='<select size="10" style="overflow:auto;" name="ma_liste" id="ma_liste" onchange="changeGen();">'; 
			
			 for(i=0;i<count;i++){		 
				var idgen = genealogies[i].getElementsByTagName("idgen")[0].firstChild.nodeValue;
				var nom = genealogies[i].getElementsByTagName("nom")[0].firstChild.nodeValue;
				var nbPers = genealogies[i].getElementsByTagName("nbPers")[0].firstChild.nodeValue;
				
				html += '<option value="'+idgen+'">'+nom+'&emsp;('+nbPers+' personnes)</option>'; 			
				} 
				html+='</select>';
				
				document.getElementById("resutat").innerHTML = html ;									
         }else{		      	
				window.location.reload();				
		 }	            
      } 
 }


function majListAdhesions(xhr){
	//alert('appela majlist ');
	if(xhr.readyState==4){
    	if(xhr.status==200){
		
			var response = chargerXML(xhr) ;
			  var adherents =response.getElementsByTagName("adherent");
			  var context = response.getElementsByTagName("context")[0].firstChild.nodeValue;
			  count = adherents.length;
              var html = ' <table class="results"> '+
				'<tr> '+		
				'	<th class="genealogie">Comptes</th> '+
				'	<th class="nom"><a href='+context+'/servlet/AdhesionsServlet?action=tri_nom" title="Trier par les noms des adhérents"> Noms </a> </th> '+
				'	<th class="prenom"><a href='+context+'/servlet/AdhesionsServlet?action=tri_prenom" title="Trier par les prénoms des adhérents"> Prénoms </a></th> '+
				'	<th class="date_naiss"><a href='+context+'/servlet/AdhesionsServlet?action=tri_email" title="Trier par les e-mails des adhérents"> E-mails </a></th> '+
				'	<th class="date_naiss"><a href='+context+'/servlet/AdhesionsServlet?action=tri_datefinadh" title="Trier par les dates fins des adhésions"> Dates fin </a></th> '+
				'	<th class="modifier"> </th> '+
				'	<th class="suppr"> </th> '+		
				'</tr> ';
			 var pair = true;			 
				
			 for(i=0;i<count;i++){		 

				pair = !pair;
				
				var login = adherents[i].getElementsByTagName("login")[0].firstChild.nodeValue;
				var nom = adherents[i].getElementsByTagName("nom")[0].firstChild.nodeValue;
				var prenom = adherents[i].getElementsByTagName("prenom")[0].firstChild.nodeValue;
				var email = adherents[i].getElementsByTagName("email")[0].firstChild.nodeValue;
				var datefin = adherents[i].getElementsByTagName("datefinadh")[0].firstChild.nodeValue;
				
				html += '<tr class="'+(pair==true? "pair" : "impair" )+'">'; 
			               
                html += '<td><a href="'+context+'/'+login+'">' + login + '</a></td>';
                html += '<td>' + nom + '</td>';
                html += '<td>' + prenom + '</td>';    		
				html += '<td>' + email + '</td>';				
                html += '<td>' + datefin + '</td>';
				
    			html += '<td class="suppr">';				 
				html += '	<form method="post" action="'+context+'/servlet/AdhesionsServlet">';
				html += '		<input type="image" class="img16" value="Modifier" src="/png/maj16.png"';
				html += '		title="Modifier l\'adhesion de '+nom+' '+prenom+'"/>';
				html += '		<input type="hidden" name="action" value="show_frm_adh">';
				html += ' 		<input type="hidden" name="index" value="'+i+'" />';				
				html += '	</form>';				 
				html += '</td>';
				
				html += '<td class="suppr">';			
				html += '	<form method="post" action="'+context+'/servlet/AdhesionsServlet">';			 
				html += '		<input type="hidden" name="action" value="del" />';
				html += '		<input type="hidden" name="index" value="'+i+'" />'	;
				html += '		<input type="image" class="img16" src="/png/corbeille16.png" title="Supprimer l\'adhesion de '+nom+' '+prenom+' "';						 
				html += '		onclick="return confirmer(\'Etes-vous sûr de vouloir supprimer l \\&lsquo; adhésion de '+nom+' '+prenom+' ?\');"/>';
				html += '	</form>';				
				html += '</td>';			
    			 
				html += '</tr>';				
				} 
				
                //alert('INNER HTML ='+document.getElementById("resultat").innerHTML); 					
				document.getElementById("resultat").innerHTML = html ;								
				document.getElementById("nbrpages").innerHTML = response.getElementsByTagName("nbrpages")[0].firstChild.nodeValue ;											
				document.getElementById("nbrresults").innerHTML = "Résultat du filtre : "+response.getElementsByTagName("nbrresults")[0].firstChild.nodeValue+(count > 1 ? " adhérents": " adhérent" );
				
         }else{		      	
				window.location.reload();				
		 }	            
      } 
 }
 		  
 function rechercherLogins(e,context) {
 
	var sel = document.getElementById("completion_select") ;
	var nb_el = sel.options.length ;
	var selIndex = sel.selectedIndex ;
	if (!document.getElementById("recherche_login").value)
	{	sel.style.display = 'none';
	}
	else if (e.keyCode == 40 && nb_el && sel.style.display != 'none') { // fleche bas
		if (selIndex < sel.options.length - 1)
			document.getElementById("recherche_login").value = sel.options[selIndex+1].value ;
			sel.selectedIndex = selIndex + 1 ;
			
	}
	else if (e.keyCode == 38 && nb_el && sel.style.display != 'none') { // fleche haut
		if (selIndex > 0)			
		
			document.getElementById("recherche_login").value = sel.options[selIndex-1].value ;
			sel.selectedIndex = selIndex - 1 ;
			
	}
	else if (e.keyCode == 27 ) {// echap
		sel.style.display = 'none';
	}	
	
	else if (e.keyCode == 32 && nb_el) { //  espace
	
		document.getElementById("recherche_login").value = sel.options[selIndex].value ;
		//document.getElementById("login").value = sel.options[selIndex].value ;
		sel.style.display = 'none';
	}
	else { // autre touche --> on recherche les logins
			val = document.getElementById("recherche_login").value ;
			ajax('POST',context+'servlet/AdhesionsServlet','action=rech_login&val='+val, majListLogins, true);		
				
	}
 } 

 function rechercherLogins_click(){
 
	var sel = document.getElementById("completion_select") ;
	document.getElementById("recherche_login").value = sel.options[sel.selectedIndex+1].value ;
	//document.getElementById("login").value = sel.options[sel.selectedIndex].value ;
	sel.style.display = 'none';	
	
 } 
 
 
 function majListLogins(xhr){
	 
	if (xhr.readyState == 4){
		if(xhr.status==200){	
			
			response = chargerXML(xhr);
			
			var comptes =response.getElementsByTagName("compte"); 
			sel = document.getElementById("completion_select") ;
			sel.attributes['size'].value = comptes.length;
			while(sel.options.length > 0)
				sel.options[0] = null;
 
			for(i=0 ; i < comptes.length ; i++){
				sel.options[sel.options.length] = new Option(comptes[i].getElementsByTagName("login")[0].firstChild.nodeValue,comptes[i].getElementsByTagName("login")[0].firstChild.nodeValue);
			}
			if (sel.options.length) {
				sel.selectedIndex = 0 ; // on selection le premier element de la liste
				sel.style.display = 'block';
			}
			else
				sel.style.display = 'none';
		} else{	  	     
	  	    window.location.reload();
		}
	}			
 }
 
 function ajaxVerifMails(context){
 
 	emails = document.getElementById("js_emails").value ;
	createCounts = document.getElementById("js_createCounts").checked;
	return ajax('POST',context+'servlet/AdhesionsServlet','action=verif_mails_pr_adh&mails='+emails+'&createCounts='+createCounts, verif_mails_pr_adhesion, true);
 	
 }	
 
 function verif_mails_pr_adhesion(xhr){
  if (xhr.readyState == 4){
		if(xhr.status==200){
			var response = chargerXML(xhr);		 	 
						
			var status = response.getElementsByTagName("status")[0].firstChild.nodeValue;	
			
			
			
				
			if(status == 'succes'){		
				document.formAjoutAdhParMails.submit();
				
			}else{
				var errors = response.getElementsByTagName("error");				 
				
				errs = ' Vous avez des erreurs :<br/>';
				var mails_errone ='';
				for(i=0 ; i < errors.length ; i++){
					  
					mails_errone += errors[i].getElementsByTagName("mail")[0].firstChild.nodeValue +' <em> ('+errors[i].getElementsByTagName("msg")[0].firstChild.nodeValue+ ')</em><br/>';					
					}
				 	
				document.getElementById("js_emails_error").innerHTML = errs + mails_errone;	
			}
			
		} else{	  	     
	  	    window.location.reload();
		}
	}	
	 
 }
 
