

/**
*  Script javascript décrivant les fonctions utilisées par tous les utilisateurs du site
*  Ainsi on retrouve la gestion de l'inscription, de l'affichage des missions (developper, réduire), de la validation de la date (naissance ou mission)...
*/

/**
*  Fonction AJAX qui utilise un objet XmlHttpRequest (XHR) de la classe XHRConnection.
* Cette fonction permet de mettre à jour la partie "erreur" de la page HTML et de faire apparaitre ou disparaitre 
* le message affichant si  le login saisi existe déjà dans la base.
*/
var verif = function (obj) 
{		
		str=obj.responseText;
		if(str=="1")
		{
			document.getElementById("login").style.border="solid red 1px";
			document.getElementById("login").style.backgroundColor="#FFEDA6";
			document.getElementById('erreur').style.display = 'inline';
			document.getElementById("submit").disabled = true;
		}
		else 
		{
			document.getElementById("login").style.border = "0px";
			document.getElementById("login").style.backgroundColor = document.getElementById("mail").style.backgroundColor;
			document.getElementById('erreur').style.display = 'none';
			document.getElementById("submit").disabled = false;
		}
}

/**
*  Fonction AJAX qui initialise un objet XmlHttpRequest (XHR) de la classe XHRConnection.
* Grâce à cet objet, il est possible de vérifier si le  pseudo saisi est déjà dans la table "candidature"
* Lorsque le visiteur tape un pseudo, le script javascript envoi par le biais du XHR un requête de vérification au serveur 
*			index.php?comm=testLogin&login=xxx
* Dès que le serveur a accompli la tâche, XHR met à jour, ici, le partie "erreur" (à coté du login) de la page affichant suivant le cas, une erreur précisant si le
* login existe déjà et rien sinon.
*/
function verifpseudo()
{
	var login = document.getElementById("login").value;
	var pseudo = new XHRConnection();
    pseudo.sendAndLoad("index.php?comm=testLogin&login="+login , "GET" , verif);
}


/**
*Fonction qui évalue deux dates passées en paramètre.
*@param date1 contenant la première date.
*@param date2 contenant la deuxième date.
*@return true/false : date1>=date2 / date1<date2
*/
function evalDate(date1,date2)
{
if (date1 >= date2)
	return true;
else return false;
}

/**
*Fonction qui détermine si la date passée en paramètre est valide ou non.
*@param chaineDate contenant la date à analyser.
*@param bool contenant 0 si la date a analyser est une date de naissance.
*@return true/false : date valide / date non valide.
*/
function isDateValid(chaineDate,bool)
 {
	/*Date à l'instant T*/
	var dateCourante = new Date();
	
	/*Si la date est nulle , on retourne vrai , une date nulle est valide.*/
	if(chaineDate=="")
		return true;
		
	/*Une date est composée de 10 caractère : jj/mm/aaaa */
	if(chaineDate.length != 10)
		return false;

	/*On vérifie que le date contient bien des caractère numériques.*/
   var ladate = (chaineDate).split("/")
   if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false
   
   /*Le format date en javascript est particulier , on convertit la date passée en paramètre*/
   var dateEntree = new Date();
   dateEntree.setDate(parseInt(ladate[0]));
   dateEntree.setMonth(parseInt(ladate[1]-1));
   dateEntree.setYear(parseInt(ladate[2]));
   
   /*Cas d'une date de naissance*/
   if (bool == 0){
		/*Si la date passée en paramètre est supèrieure à la date courante alors elle n'est pas valide. */
		if (evalDate(dateEntree,dateCourante) == true)
			return false;
	}
	else {
		/*Si la date passée en paramètre est infèrieure à la date courante alors elle n'est pas valide ( cas de l'ajout mission ou la date du début mission doit être supèrieur à la date courante )*/
		if (evalDate(dateEntree,dateCourante) != true)
			return false;
	}
	
   return true;
}

/**
* Fonction vérifiant si l'adresse email saisie comporte bien un "." et un "@".
*@return true/false : si email ok/ si mauvaise syntaxe
*/
function validationMail()
{
var verif  = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/
var email = document.getElementById("mail").value;

 if (verif.exec(email) == null)
    setErrorStyle("mail");
 else
	setNormalStyle("mail");
}

function validationDate()
{

var date = document.getElementById("dateNaissance").value;

 if (!isDateValid(date,0))
    setErrorStyle("dateNaissance");
 else
	setNormalStyle("dateNaissance");
}

/**
* Fonction permettant de valider la cohérence du formulaire d'inscription
* Si un des champs obligatoires (mail ou mots de passes) n'est pas renseigné, une boite de message apparait, et on met en surbrillance
* le champs posant problème. Ainsi l'utilisateur voit de suite les erreurs qu'il a commise.
* return true/false : si formulaire ok/ si erreur
*/
function validationInscription()
{
  var email     = document.getElementById("mail").value;
  var login = document.getElementById("login").value;
  var mdp = document.getElementById("password").value;
  var mdp2 = document.getElementById("confirmpassword").value;
  var date = document.getElementById("dateNaissance").value;
  var verif  = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/
  var erreur="Avertissement :";
  
	if(login=="" || mdp=="" || mdp2=="" || email=="")
	{
			alert(erreur+" obligatoires manquantes\n");
			
			if(login=="") setErrorStyle("login"); else setNormalStyle("login");
			if(mdp2=="") setErrorStyle("confirmpassword"); else setNormalStyle("confirmpassword");
			if(mdp=="") setErrorStyle("password"); else setNormalStyle("password");	
			if(email=="") setErrorStyle("mail"); else setNormalStyle("mail");	
	
		return false;
	}
  
 if (verif.exec(email) == null)
 {
   alert(erreur+"invalides\nAdresse e-mail non valide\n");
   setErrorStyle("mail");
   return false;
 }
 
 if(mdp!=mdp2)
  {
   alert(erreur+"les mots de passes sont différents");
   setErrorStyle("password");
   setErrorStyle("confirmpassword");
   return false;
  }
 
   	if(!isDateValid(date,0))
	{
		alert(erreur+"invalides\nDate de naissance non valide\n");
		setErrorStyle("dateNaissance");
		return false;
	}   
	else
		setNormalStyle("dateNaissance");
 
 return true;
}

/**
* Fonction permettant de mettre en surbrillance un objet de la page lorsque celui-ci présente un erreur telle que de date, d'absence d'information obligatoires...
* @param layer : id de l'objet que l'on veut mettre en surbrillance
*/
function setErrorStyle(layer)
{
   document.getElementById(layer).style.border="solid red 1px";
   document.getElementById(layer).style.backgroundColor="#FFEDA6";
}

/**
* Fonction permettant de remettre dans l'état normal un objet de la page lorsque celui-ci ne représente plus une erreur
* @param layer : id de l'objet que l'on souhaite remettre en état normal
*/
function setNormalStyle(layer)
{
   document.getElementById(layer).style.border="solid red 0px";
   document.getElementById(layer).style.backgroundColor="#eef3f5";
}

/**
* Fonction permettant de valider la cohérence du formulaire de connexion
* Si un des champs obligatoires (login et mot de passe) n'est pas renseigné, une boite de message apparait. 
* @return true/false : si formulaire ok/ si erreur
*/
 function login()
{

       if ( document.getElementById( "motdepasse" ).value =="" ||  document.getElementById( "utilisateur" ).value =="")
		{
			alert( "Veuillez saisir les identifiants de connexion..." );
			document.getElementById( "utilisateur" ).focus();
			return false;
		}
	    else 
			return true;
}

/**
* Fonction permettant de développer ou réduire une partie de la page html
*  exemple : (avant clique)
*			+ plus de détail (layer1)
*
*  exemple : (après clique)
*			- moins de détail (layer2)
*				blabla blabla blabla blab bla (layer3)
*
* @param layer1 : objet visible par défaut
* @param layer2 : objet que l'on souhaite afficher à la place du celui par défaut
* @param layer3 : objet que l'on souhaite developpé
*/
function showhide(layer1,layer2,layer3)
{
  change=0;
  div=this.document.getElementById(layer3);
 
 if(div.style.display=='none' && change==0)
 {div.style.display='block'; change=1;}
 
 if(div.style.display=='block' && change==0)
 {div.style.display='none'; change=1 ;}

 change=0;
 div=this.document.getElementById(layer1);
 
 if(div.style.display=='none' && change==0)
 {div.style.display='inline'; change=1;}
 
 if(div.style.display=='inline' && change==0)
 {div.style.display='none'; change=1 ;}
 
 change=0;
 div=this.document.getElementById(layer2);
 
 if(div.style.display=='none' && change==0)
 {div.style.display='inline'; change=1;}
 
 if(div.style.display=='inline' && change==0)
 {div.style.display='none'; change=1 ;}
}
