/* Efface le contenu d'un composant HTML */
function clearInnerHTML(obj)
{
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}
/* Cette fonction effectue une requete */
function performRequest(_request,_div)
{
	date = new Date();
	div = document.getElementById(_div);
	var req = null;
	if(window.XMLHttpRequest)
	  req = new XMLHttpRequest();
	else if (window.ActiveXObject)
	  req  = new ActiveXObject("Microsoft.XMLHTTP");
   
	div.innerHTML = "patientez ...";

	req.open("GET",_request+"&"+date.getTime(), false);
	req.send(null);
	if(req.readyState == 4)
	{
	   div.innerHTML = req.responseText;
	   return true;
	}
}
// Cette fonction met à jour une liste
function performUpdateList(_request,_list)
{
	date = new Date();
	list = document.getElementById(_list);
	var req = null;
	if(window.XMLHttpRequest)
	   req = new XMLHttpRequest();
	else if (window.ActiveXObject)
	   req  = new ActiveXObject("Microsoft.XMLHTTP");

	req.open("GET",_request+"&"+date.getTime(), false);
	req.send(null);
	if(req.readyState == 4)
	{
		 if(document.all)
		 {
				list.outerHTML = "<select name='"+list.name+"' id='"+list.id+"'>"+req.responseText+"</select>";
		 }
		 else
		 {
				list.innerHTML = req.responseText;
		 }
		 if(req.responseText == "")
				 return false;
		 return true;
	 }
}
// Cette fonction permet de récupérer une réponse
function getRequestResponse(_request)
{ 
	date = new Date();
	var req = null;
	if(window.XMLHttpRequest)
	   req = new XMLHttpRequest();
	else if (window.ActiveXObject)
	   req  = new ActiveXObject("Microsoft.XMLHTTP");

	req.open("GET",_request+"&"+date.getTime(), false);
	req.send(null);

	if(req.readyState == 4)
	{
		return req.responseText;
	}
}

// Cette fonction lance un timer qui exécute une requete automatiquement
var x = 5
var cpt = 0; // Subterfuge pour que IE rafraichisse (changement d'url
var tmp = 300;
if(document.all)
  tmp = 150;
function autoRequest(_request,_div)
{
	x--;
	setTimeout("autoRequest('"+_request+"','"+_div+"')", tmp);
	if(x==0)
	{
		performRequest(_request+"&"+cpt,_div);
		cpt++;
		x=5;
	}
}


//-------------------------------------------------------------------------------------------------------
// Fonctions sur les COMPOSANTS HTML
//-------------------------------------------------------------------------------------------------------
// Fonction qui ajoute un élément à une LISTE
function addListItem(idList,_id,_value)
{
	if(!contains(idList,_value))
	{
		var list = document.getElementById(idList);
		list.options[list.options.length] = new Option(_id,_value);
	}
}
// Fonction permttant de savoir si une LISTE contient une valeur
function contains(idList,valeur)
{
	var list = document.getElementById(idList);
	for(i = 0; i < list.options.length; i++)
	{
		if(list.options[i].value == valeur)
		{
			return true;
		}
	}
	return false;
}

/* Cette fonction ouvre une fenêtre popup */
function ouvrePopup(url,width,height)
{ 
	f = window.open(url,"","width="+width+",height="+height+",left=400,top=400")
}
/* Cette fonction ouvre une fenêtre popup avec scroll*/
function ouvrePopupScroll(url,width,height)
{ 
	f = window.open(url,"","scrollbars=1,width="+width+",height="+height+",left=400,top=400")
}
/* Cette fonction demande confirmation avant d'ouvrir une fenetre */
function confirmPopup(url,message,width,height)
{
	if(window.confirm(message))
		ouvrePopup(url,width,height);
}
// Cette fonction met à jour l'input action et ensuite fait le submit
function actionAndSubmit(form,action)
{
	document.getElementById('action').value = action;
	form.submit();
}
//-------------------------------------------------------------------------------------------------------
// Fonctions AJAX
//-------------------------------------------------------------------------------------------------------
// Fonction d'ajout de champ d'entrée
	function addInput(_type,_name,_size,_div)
	{
		var input = document.createElement('input');
		input.type = _type;
		input.name = _name;
		input.id = _name;
		input.size = _size;
		_div.appendChild(input);
		return input;
	}
// Fonction d'ajout de label
	function addSpan(_text,_class,_div)
	{   
		var span = document.createElement('span');
		span.appendChild(document.createTextNode(_text));
		if (document.all)
		{
			span.className  = _class;
		}
		span.setAttribute('class',_class);
		_div.appendChild(span);
		return span;
	}
// Fonction d'ajout de div
	function addDiv(_parent,_id)
	{
		imDiv = document.createElement('div');
		_parent.appendChild(imDiv);
		imDiv.id = _id;     
		if (document.all)
		{
			imDiv.className  = "erreur_cache";
		}
		imDiv.setAttribute('class',"erreur_cache");
		return imDiv;
	}
// Fonction d'ajout d'une image
	function addImage(_url,_name,_div)
	{
		var image = document.createElement('img');
		image.src= _url;
		image.name = _name;
		image.id = _name;
		_div.appendChild(image);
		return image;
	}
// Fonction d'ajout de bouton radio
	function addRadio(_name,_value,_checked,_div)
	{ 
		if(document.all)
		{
			if(_checked)
			{
				var checked = "checked";  
			} 
			
			var radio = document.createElement("<input type='radio' id='"+_name+"' name='"+_name+"' "+checked+" value='"+_value+"'>");
		}
		else
		{
			var radio = document.createElement('input');
			radio.setAttribute('type','radio');
			radio.setAttribute('id',_name);
			radio.setAttribute('name',_name);
			radio.setAttribute('value',_value); 
			if(_checked)
				radio.setAttribute('checked',"true"); 
		}
		_div.appendChild(radio);
		return radio;
	}
// Fonction d'ajout d'événement
   function addEvent(_input,_event)
   {
		if (document.all)
		{
			_input.attachEvent("onkeyup",function () {_event});
		}
		_input.setAttribute('onkeyup',_event);
   }
   function minChecked(composant,nbr)
	{
	 var composant = document.getElementsByName(composant);
	 var cpt = 0;
	 for(var i=0;i < composant.length;i++)
	 {
		   if(composant[i].checked)
		 cpt++;
	   }
	   if(cpt < nbr)
	   {
		 return false;
	   }
	   return true;
	}
//-------------------------------------------------------------------------------------------------------
// Fonctions spécifiques
//-------------------------------------------------------------------------------------------------------
var nbr_enfants = 0;
function setNbrEnfants()
{
	if(document.getElementById('NombreEnfants').value == "")
		nbr_enfants = 0;
	else
		nbr_enfants = parseInt(document.getElementById('NombreEnfants').value,10);;
}
function listeEnfantsSimple()
{
	if(format_entier('NombreEnfants','image_NombreEnfants',false,1))
	{
		cpt = parseInt(document.getElementById('NombreEnfants').value,10);
		if(cpt > 15)
		{
		   document.getElementById('NombreEnfants').value = 15;
		   cpt = 15;
		}

		if(nbr_enfants == cpt)
		{
			return;
		}
		if(cpt > nbr_enfants)
		{
			   for(i = nbr_enfants+1; i <= cpt; i++)
			   {
					 addEnfantSimple(i);
			   }
		}
		else
		{
			for(i = nbr_enfants; i > cpt; i--)
			{
				  removeEnfant(i);
			}
		}
		nbr_enfants = cpt;
	}
}
// Cette fonction ajoute une ligne d'encodage d'enfant
function addEnfantSimple(_indice)
{
	div = document.getElementById('enfants');
		
	var bool = true;
	inSpan = " ";
	inClass = "enfant";
// ENFANT 1 OBLIGATOIRE ?
/*    if(_indice == "1")
	{
		bool = false;
		inSpan = "*";
		inClass = "";
	}
*/
// Création du div
	newDiv = document.createElement('div');
	newDiv.id = 'div_'+_indice;
	newDiv.name = 'div_'+_indice;
// Prénom
	span = addSpan("Prénom : ",inClass,newDiv);
	prenom = addInput('text','prenom_'+_indice,17,newDiv);
	addSpan(inSpan,"bordeau",newDiv);
	addImage("formulaire/graphics/blank.png","img_prenom_"+_indice,newDiv);
	addDiv(newDiv,"img_prenom_"+_indice+"_div");
// Sexe
	span = addSpan("Fille :",inClass,newDiv);
	input = addRadio("sexe_"+_indice,"F",true,newDiv);
	span = addSpan("Garçon :",inClass,newDiv);
	input = addRadio("sexe_"+_indice,"M",false,newDiv);
// Date de naissance
	span = addSpan("Date de naissance : ","enfant",newDiv);
	date = addInput('text','date_naissance_'+_indice,8,newDiv);
	addSpan(inSpan,"bordeau",newDiv);
	addImage("formulaire/graphics/blank.png","img_date_naissance_"+_indice,newDiv);
	addDiv(newDiv,"img_date_naissance_"+_indice+"_div");
	

// Image
	imDiv = document.createElement('div');
	newDiv.appendChild(imDiv);
	imDiv.id = "img_"+_indice+"_div"; 
	
// Vérification des champs
	if (document.all)
	{
			prenom.attachEvent("onkeyup",function () {format_text('prenom_'+_indice,'img_prenom_'+_indice,bool,2);});
			date.attachEvent("onkeyup",function () {format_date_easy('date_naissance_'+_indice,'img_date_naissance_'+_indice,bool,0);});
	}
	prenom.setAttribute('onkeyup',"format_text('prenom_"+_indice+"','img_prenom_"+_indice+"',"+bool+",2)");
	date.setAttribute('onkeyup',"format_date_easy('date_naissance_"+_indice+"','img_date_naissance_"+_indice+"',"+bool+",3)");

	div.appendChild(newDiv);
}
// Cette fonction supprime une ligne contenant un enfant
function removeEnfant(_indice)
{
	div = document.getElementById('enfants');
	dernier = document.getElementById('div_'+_indice);
	div.removeChild(dernier);
}
// Cette fonction appelle à la mise à jour de la localité
function updateLocalite()
{
	 if(format_entier('CP','image_CP',false,1))
	 {
		cp = document.getElementById('CP').value;
		idPays = 1;
		retour = performUpdateList("formulaire/engine_ajax.php?AJAX&CP="+cp+"&idPays="+idPays,'idCommune');
//         valideIdCommune();
		return retour;
	 }
	 return false;
}
function valideIdCommune()
{
   pic = document.getElementById('image_localite');
   if(document.getElementById('idCommune').value == "")
   {
		pic.src="formulaire/graphics/blank.png"; 
		setWarning(pic.id+"_div","Le code postal ne correspond à aucune commune !");
		return false;
   }
   else
   {
		pic.src="formulaire/graphics/ok.png";
		pic.title="ok";
		unsetWarning(pic.id+"_div");
		return true;
   }
}
// Cette fonction retourne true si l'identifiant existe déjà
function exist_identifiant()
{
	if(format_text_no_special_or_email('identifiant','image_identifiant',false,3))
	{
		 identifiant = document.getElementById('identifiant').value;
		 idCompte = document.getElementById('idCompte').value;
		 _pic = document.getElementById('image_identifiant');
		 rep = getRequestResponse("formulaire/engine_ajax.php?AJAX&identifiant="+identifiant+"&idCompte="+idCompte);  
		 if(rep != "O")
		 {
			_pic.src="formulaire/graphics/ok.png";
			_pic.title="ok";
			return true;
		 }
		 else
		 {
		   _pic.src="formulaire/graphics/blank.png"; 
		   setWarning(_pic.id+"_div","Cet identifiant existe déjà");
		   return false;
		 }
	}
}
//-------------------------------------------------------------------------------------------------------
// Fonctions d'affichage des warning
//-------------------------------------------------------------------------------------------------------
// Affiche un message d'erreur
function setWarning(_div,_msg)
{
	div = document.getElementById(_div);
	if (document.all)
	{
		div.className  = "erreur";
	}
	div.setAttribute('class',"erreur");
	div.innerHTML = "<img src='formulaire/graphics/warning.png' align='absmiddle'> "+_msg;
}
// Efface le message d'erreur
function unsetWarning(_div)
{
	div = document.getElementById(_div);
	if (document.all)
	{
		div.className  = "erreur_cache";
	}
	div.setAttribute('class',"erreur_cache");
	div.innerHTML = "";
}
// Cette fonction exécute minChecked et affiche des erreurs
function execMinCheck(composant,image,nbr)
{
	_pic = document.getElementById(image);
// Vérifie la validité du champ
	if(minChecked(composant,nbr))
	{
		_pic.src="formulaire/graphics/ok.png";
		_pic.title="ok";
		unsetWarning(_pic.id+"_div");
		return true;
	}
	else
	{
		_message = "Champ oligatoire !";         
		_pic.src="formulaire/graphics/blank.png";
		_pic.title="";
		setWarning(_pic.id+"_div",_message);
		return false;
	}     
}

//-------------------------------------------------------------------------------------------------------
// Fonctions de vérification de champs
//-------------------------------------------------------------------------------------------------------
// Modifie l'état d'un champ (correct / incorrect)
function valideRegex(_field,_pic,_message,_reg,_empty,_size)
{
// Vérifie le contenu de champ
	if(!_empty)
	{
		if(format_empty(_field,_pic))
		{
			return false;
		}
	}
	else
	{
		if(_field.value == "")
		{
			_pic.src="formulaire/graphics/ok.png";
			_pic.title="";
			unsetWarning(_pic.id+"_div");
			return true;
		}
	}
// Vérifie la validité du champ
	if(_reg.exec(_field.value) != null)
	{
		if(_field.value.length >= _size)
		{
			_pic.src="formulaire/graphics/ok.png";
			_pic.title="ok";
			unsetWarning(_pic.id+"_div");
			return true;
		}
		else
		{
			_message = "Minimum "+_size+" caractère(s)"; 
		}
	}
	_pic.src="formulaire/graphics/blank.png";
	_pic.title="";
	setWarning(_pic.id+"_div",_message);
	return false;
}
// Vérifie qu'un champ est rempli, retourne true si le champ est vide
function format_empty(_field,_pic)
{
	if(_field.value == "")
	{
		_pic.src="formulaire/graphics/blank.png"; 
		setWarning(_pic.id+"_div","Champ obligatoire !");
		return true;
	}
	return false;
}
// Vérifie qu'une date est correcte, reçoit FALSE si le champ ne peut pas être vide
function format_date(_field,_pic,_empty,_size)
{
	var reg = /^[0-2]{1}[0][0-9][0-9]{1}[-][0-3]{1}[0-9]{1}[-][0-9]{2}$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"La date doit être au format aaaa-mm-jj",reg,_empty,_size);
}
// Vérifie qu'une date est correcte, reçoit FALSE si le champ ne peut pas être vide
function format_date_easy(_field,_pic,_empty,_size)
{
	var reg = /^[0-3]{1}[0-9]{1}[\/][0-1]{1}[0-9]{1}[\/][0-9]{4}$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"La date doit être au format jj/mm/aaaa",reg,_empty,_size);
}
// Vérifie qu'un champ contient bien du texte, reçoit FALSE si le champ ne peut pas être vide
function format_text(_field,_pic,_empty,_size)
{
	var reg = /^[\'éèàêça-zA-Z0-9,. &\[\]()-]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Caractère(s) non valide(s)",reg,_empty,_size);
}
// Vérifie qu'un champ contient bien du texte sans caractères accentués, reçoit FALSE si le champ ne peut pas être vide
function format_text_no_special(_field,_pic,_empty,_size)
{
	var reg = /^[a-zA-Z0-9_-]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Caractère(s) non valide(s)",reg,_empty,_size);
}
// Vérifie qu'un champ contient bien du texte sans caractères accentués, reçoit FALSE si le champ ne peut pas être vide
function format_text_no_special_or_email(_field,_pic,_empty,_size)
{
	var reg = /^[a-zA-Z0-9@._-]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Caractère(s) non valide(s)",reg,_empty,_size);
}
// Vérifie qu'un champ contient bien une adresse EMAIL, reçoit FALSE si le champ ne peut pas être vide
function format_email(_field,_pic,_empty,_size)
{
	var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,5}$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"L'adresse E-mail doit être au format example@provider.com",reg,_empty,_size);
}
// Vérifie qu'un champ contient une URL (http://)
function format_url(_field,_pic,_empty,_size)
{
	var reg = /^http:\/\/[\/&?a-z0-9._-]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"L'adresse doit commencer par http://",reg,_empty,_size);
}
// Vérifie qu'un champ contient un PASSWORD (TOUT)
function format_password(_field,_pic,_empty,_size)
{
	var reg = /^[\'éèàêça-zA-Z0-9,. +*=()-]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Caractère(s) non valide(s)",reg,_empty,_size);
}
// Vérifie qu'un champ contient un ENTIER
function format_entier(_field,_pic,_empty,_size)
{
	var reg = /^[0-9]*$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Vous devez entrer un entier",reg,_empty,_size);
}
// Vérifie qu'un champ contient un numéro de GSM
function format_gsm(_field,_pic,_empty,_size)
{
	var reg = /^[0-9]{2,4}\/[0-9]{6,7}$/;
	return valideRegex(document.getElementById(_field),document.getElementById(_pic),"Le numéro doit être au format 0777/123456",reg,_empty,_size);
}

// Vérifie qu'un champ contient la même chose qu'un autre champ
function format_egal(_field,_field_2,_pic,_empty)
{
	var field = document.getElementById(_field);
	var field_2 = document.getElementById(_field_2);
	pic = document.getElementById(_pic);
	
// Vérifie le contenu de champ
	if(!_empty)
	{
		if(format_empty(_field,_pic))
		{
			return false;
		}
	}
	else
	{
		if(_field.value == "")
		{
			_pic.src="formulaire/graphics/blank.png";
			_pic.title="";
			unsetWarning(_pic.id+"_div");
			return true;
		}
	}
	if(field.value.length <= field_2.value.length)
	{
		for(i = 0; i < field.value.length; i++)
		{
			if(field.value.charAt(i) != field_2.value.charAt(i))
			{
				pic.src="formulaire/graphics/blank.png"; 
				setWarning(pic.id+"_div","Le caractère "+(i+1)+" est différent");
				return false;
			}
		}
		if(field.value.length < field_2.value.length)
		{
			pic.src="formulaire/graphics/blank.png";
			setWarning(pic.id+"_div","Le nombre de caractères ne correspond pas");
			return false;
		}
		else
		{
			pic.src="formulaire/graphics/ok.png";
			pic.title="ok";
			unsetWarning(pic.id+"_div");
			return true;
		}
	}
	else
	{
		pic.src="formulaire/graphics/warning.png";
		setWarning(pic.id+"_div","Le mot entré est plus long que le mot de passe");
		return false;
	}
}
//-------------------------------------------------------------------------------------------------------
// Fonctions de vérification de formulaires
//-------------------------------------------------------------------------------------------------------
// Formulaire d'édition de VAGUE
function form_inscription_simple(_form)
{
// Compte
	compte = 0;
	if(!format_text_no_special('mot_de_passe','image_mot_de_passe',false,3))
		compte++;
	   
// Maman
	maman = 0;    
	if(!format_text('nom_maman','image_nom_maman',false,2))
		maman++;
	if(!format_text('prenom_maman','image_prenom_maman',false,2))
		maman++;
	if(!format_email('Email_maman','image_Email_maman',false,0))
		maman++;

// Adresse
   adresse = 0;
   if(!format_text('voie','image_voie',false,3))
		adresse++;
   if(!format_entier('numero','image_numero',false,1))
		adresse++;

   if(!format_entier('CP','image_CP',false,3))
		adresse++;   

	if((maman+compte+adresse) == 0)
	  _form.submit();      
}

//-------------------------------------------------------------------------------------------------------
// Fonctions de vérification de formulaires
//-------------------------------------------------------------------------------------------------------
// Formulaire d'édition de VAGUE
function form_inscription_abo(_form)
{
// Compte
	compte = 0;
	if(!format_text_no_special('mot_de_passe','image_mot_de_passe',false,3))
		compte++;
	/*if(!format_text('identifiant','image_identifiant',false,2))
		compte++;*/
		
// Maman
	maman = 0;
	if(!format_text('nom_maman','image_nom_maman',false,2))
		maman++;
	if(!format_text('prenom_maman','image_prenom_maman',false,2))
		maman++;
	if(!format_email('Email_maman','image_Email_maman',false,0))
		maman++;

// Oligatoire
   obligatoire = 0;

	if(!execMinCheck('validation','image_validation',1))
		obligatoire++;        
		
	if((maman+compte+obligatoire) == 0)
	  _form.submit();      
}


function seDesinscrire()
{
	if(confirm("Voulez-vous vraiment vous désinscrire ?"))
		return true
	return false;
}

