/**################## Javascript PARRENO Michel le 4 Juin 2010 ##################**/
/*_________________________________________________________________________________

Ce fichier javascript contient les différents fonctions nécéssaires à la vérification 
coté CLIENT du site
Ce code à était mis en place a partir de la génération Automatique d'un formulaire HTML
par PHP, tout les 
composants du formulaires sont dans les bases de données suivante : 

	-formulaire
	-categories_formulaire
	-listes_déroulantes
	-messages_erreurs
	-parametrage
	

Ces fonctions sont relié directement au code HTML
La mise en place de dates "lisibles" sur les champs du formulaires a nécessité la mise
en place de quatre 
champs HIDDEN qui stocke les dates au formats YYYY-MM-JJ bien plus pratique pour la 
comparaisons des dates

/*_____________________________________________________________________________________
/**################################# FIN ########################################**/



var alerte_mail = "";
var alerte_naissance= "";
var alerte_stage = "";
var alerte_stage_fin ="";
var alerte_toutes_dates ="";
var alerte_stage_debut ="";
var tel="France";

//variable qui vont stocker les messages d'alertes concernant l'adresse mail, et les dates



function validmail(){
	if (document.getElementById('mail').value !=''){							//on vérifie que le champ mail n'est pas vide
		var reg_mail = (/^[a-zA-Z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/);  		//expression régulière permettant de vérifier les e-mails saisis
		if (!(reg_mail.exec(document.getElementById('mail').value) != null))	//on effectue la vérification avec exec() du champ
		{
			alerte_mail = "";
			alerte_mail = tableau_erreur[0];				//on stocke dans la variable d'alerte le message d'erreur
			return false;							//on retourne false pour ne empecher la validation du formulaire
		}
		else
		{
			alerte_mail = "";
			return true;
		}	
	}
	else
	{ 
	alerte_mail = "";
	alerte_mail = tableau_erreur[0];				//idem que plus haut
	return false;
	}
}	

	
function dateverif(){  //Cette fonction permet la vérification des dates sur formulaires
	
		
	function catch_dates(input_choisi){ //cette fonction permet de capturer les dates stockées dans les champs du formulaires
	
		var date_choisie = document.getElementById(input_choisi).value; //On capture la date dans une variable (format YYYY-MM-JJ
			year = date_choisie.substring(0,4);							//On stocke les numéro de l'année
			month = date_choisie.substring(5,7);						//Le mois
			day = date_choisie.substring(8,10);							//Le jour
			
		var date_corrige = new Date (year,month,day);					//On renvoi YYYYMMJJ
		return date_corrige;
	}
	
	function dateJour(){ //Cette fonction retourne la date du jour actuel
	
		Today = new Date;
		Annee = Today.getFullYear();
		Mois = (Today.getMonth())+1;
		Jour = Today.getDate();

		
		if(Jour < 10){
			date = "0"+ Jour + Mois  + Annee;	//on rajoute les 0 si le chiffres es jour ou des mois est < 10
		}
		if(Mois < 10){
			date = "0"+ Jour + "0" + Mois + Annee;	
		}

		var date_du_jour = new Date(Annee,Mois,Jour);		//on renvoi la date du jour au format YYYYMMJJ
		return date_du_jour;
	}
	
	function comparer_dates(date1, date2, critere){		// cette fonction compare deux dates 
	
		/* 
		A conserver au cas ou, permet de faire des calcul precis ( nb d'année de mois et de jour séparant deux dates.
		
		var duree = (date1 - date2)/86400000;
		var nbAnnee = Math.floor(duree/365.25);
		var nbMois = Math.floor(((duree/365.25)-nbAnnee)*12);
		var nbJour = Math.floor(((((duree/365.25)-nbAnnee)*12)-nbMois)*30.43);
		*/
		
		if(critere == 'naissance') {					//si le critère est naissance, on calcul la différence d"année entre les deux dates
			var duree = (date1 - date2)/86400000;
			var nbAnnee = Math.floor(duree/365.25);
			return nbAnnee;
		}
		else{											//sinon on regarde simplement si la première est inférieure a la deuxième afin de determiner les incohérences
			if(date1<date2){
				return false;
			}	
		}

	}
	
	var date_naissance = catch_dates('date_de_naissance_s');
	var date_jour = dateJour();	
	if(document.getElementById('date_de_naissance').value != '' && comparer_dates(date_jour, date_naissance, 'naissance') > param_age){
			//Moins de 18 ans, candidature impossible
				alerte_naissance = "";					
	}
	else alerte_naissance= tableau_erreur[2];
	
	//On regarde si les champs sont vides

	
	if(document.getElementById('date_de_naissance').value != '' && document.getElementById('debut_stage_possible').value != '' && document.getElementById('debut_stage_obligatoire').value != '' && document.getElementById('fin_stage').value != ''){

		var stage_debut = catch_dates('debut_stage_possible_s');		// Ici on récupère les donnée des champs cachés pour avoir le bon formats de dates
		var stage_debut_oblig = catch_dates('debut_stage_obligatoire_s');	
		var stage_fin = catch_dates('fin_stage_s');
		var date_naissance = catch_dates('date_de_naissance_s');
		var date_jour = dateJour();		
		
		//on compare ces dates pour vérifier les incohérences
		alerte_toutes_dates ="";
		
		if(comparer_dates(date_jour, date_naissance, 'naissance') < 18){	//Moins de 18 ans, candidature impossible
			alerte_naissance = tableau_erreur[2];	


		}
		else alerte_naissance = "";
		
		
		if(comparer_dates(stage_debut, date_jour, 'stage') == false ){
			alerte_stage_debut =tableau_erreur[3];	

		}	
		else alerte_stage_debut ="";	
		
		if(comparer_dates(stage_fin, stage_debut, 'stage') == false || comparer_dates(stage_fin, stage_debut_oblig, 'stage') == false || comparer_dates(stage_fin, date_jour, 'stage') == false){
			alerte_stage =tableau_erreur[5];

			//La date de fin est =  a la date de début ou inferieure
		}	
		else alerte_stage ="";	
		
		if(comparer_dates(stage_debut_oblig, stage_debut, 'stage') == false || comparer_dates(stage_debut_oblig, date_jour, 'stage')==false ){
			alerte_stage_fin =tableau_erreur[4];	

						//La date de fin est =  a la date de début ou inferieure
		}
		else alerte_stage_fin ="";			
		
	}
	else{
		alerte_toutes_dates =tableau_erreur[6];					//idem mais pour la date obligatoire de début
	}


}


function verif_telephone_taille(e, val){

	Array.prototype.in_array = function(p_val) {
		for(var i = 0, l = this.length; i < l; i++) {
			if(this[i] == p_val) {
				rowid = i;
				return true;
			}
		}
		return false;
	}

	var contenu = document.getElementById('telephone').value;
	
	var touche = e.keyCode; 
	var toucheArray = new Array('47','48','49','50','51','52','53','54','55','56','57','96','97','98','99','100','101','102','103','104','105');
		
		if(contenu.length == 10){
			document.getElementById('telephone').style.background="#cc77ee";
			document.getElementById('em1').innerHTML=tableau_erreur[7];	
		}
		else{
			document.getElementById('em2').innerHTML="";
			document.getElementById('telephone').style.background="#FFFFFF";
		}
		
		if(toucheArray.in_array(touche) && contenu.length <10){
			return true;
		}
		else if(touche == 8){
			return true;
		}
		else{
			return false;
			document.getElementById('telephone').style.background="#cc77ee";
		}
}



function verif_telephone(){
		
		var val = document.getElementById('telephone').value;
		var regexTel = /^(0[1-9])(\d{2}){4}$/;
		var regexTel2 = /^(0[1-9])(\d{2}){2}$/;

		if(regexTel.test(val) || regexTel2.test(val)){
			document.getElementById('telephone').style.background="#99ff22";
			tel = "France";
			return true;
		}
		//else if(val.length >=6 && val.length <=10)){
		else if(val.length !=0 && (val.length >=6 && val.length <=10)){
			document.getElementById('telephone').style.background="#cc77ee";
			if(document.getElementById('pays_tel').style.display == "none"){
				document.getElementById('pays_tel').style.display = "inline";
				
					tel = "0";
				return true;
			}
			return false;
		}
		else {
			document.getElementById('telephone').style.background="#cc77ee";
			return false;
		}
		
}
	
	
function validform(){
	
	var verif1 = validmail();
	var verif2= dateverif();
	var retourne=0;
	var veriftel = verif_telephone();
	var contenu = document.getElementById('telephone').value;
	
	
	if (contenu.length <6)
	{      document.getElementById('telephone').style.background="#cc77ee";
			document.getElementById('em1').innerHTML=tableau_erreur[1];
	       retourne = retourne +1
	}
	
	
	if( !veriftel){
		document.getElementById('telephone').style.background="#cc77ee";
		retourne = retourne +1;
	}
	if (tel!='france' && pays_tel.value == -1) { return false; }
	
	if(verif1 == false){
		if( alerte_naissance != ""){
			document.getElementById('em1').innerHTML = alerte_mail+" <br/> "+alerte_naissance;
		}
		else{
			document.getElementById('em1').innerHTML = alerte_mail;
		}
		document.getElementById('mail').style.background="#ff6622";
		
		retourne = retourne + 1;
		
	}
	else{
		if( alerte_naissance != ""){
			document.getElementById('em1').innerHTML = alerte_naissance;	
			document.getElementById('mail').style.background="#99ff22";
			
			retourne = retourne + 1;
		}
		else{
				document.getElementById('em1').innerHTML = "";	
				document.getElementById('mail').style.background="#99ff22";
				
		}
	}
	
	if(alerte_stage !="" || alerte_stage_fin !="" || alerte_toutes_dates!="" || alerte_stage_debut !=""){
	
		if(alerte_stage !="" && alerte_stage_fin !="" && alerte_stage_debut !=""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML = alerte_stage+'<br/>'+alerte_stage_fin+'<br/>'+alerte_stage_debut;

		}
		else if(alerte_stage == "" && alerte_stage_fin !="" && alerte_stage_debut !=""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML = alerte_stage_fin+'<br/> '+alerte_stage_debut;

		}
		else if(alerte_stage !="" && alerte_stage_fin =="" && alerte_stage_debut !=""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML = alerte_stage+'<br/> '+ alerte_stage_debut;

		}
		else if(alerte_stage !="" && alerte_stage_fin !="" && alerte_stage_debut ==""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML = alerte_stage+'<br/> '+ alerte_stage_fin;

		}
		else if(alerte_stage =="" && alerte_stage_fin !="" && alerte_stage_debut ==""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML =  alerte_stage_fin ;

		}
		else if(alerte_stage =="" && alerte_stage_fin =="" && alerte_stage_debut !=""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML =  alerte_stage_debut ;

		}
		else if(alerte_stage !="" && alerte_stage_fin =="" && alerte_stage_debut ==""){
			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML =  alerte_stage ;
		}
		else if(alerte_toutes_dates != ""){

			document.getElementById('em2').innerHTML="";
			document.getElementById('em2').innerHTML = alerte_toutes_dates;
		}

		
		retourne = retourne + 1;
	}
	else{
		document.getElementById('em2').innerHTML = "";
	}
	
	if( veriftel == ""){
		
		retourne = retourne + 1;
	}
	
	if( document.getElementById('etablissement').value != ""){ 
		//Si un choix est spécifié dans la premièere liste déroulante
		if(document.getElementById('etablissement_1').value != "" || (document.getElementById('etablissement_nom').value != "" && document.getElementById('etablissement_3').value == "autre_choix") || (document.getElementById('etablissement_3').value != "" && document.getElementById('etablissement_3').value != "autre_choix")){
			//Si une région et spécifié OU si un nom d'etablissement et spécifié en cas de autre choix OU si un etablissement est choisi dans les autres pays
			if(document.getElementById('etablissement_2').value != "" || (document.getElementById('etablissement_region').value != "" && document.getElementById('etablissement_ville').value != "" && document.getElementById('etablissement_nom').value != "" && document.getElementById('etablissement_1').value == "autre_choix") || (document.getElementById('etablissement_3').value != "" && document.getElementById('etablissement_3').value != "autre_choix")){
				//SI une ville est choisie, OU si Region, ville et nom sont spécifié en cas de Autre choix, OU si on est dans autre choix comme dans le précedent if et que le nom est renseignée
				if((document.getElementById('etablissement_3').value != "" && document.getElementById('etablissement_3').value != "autre_choix") || (document.getElementById('etablissement_nom').value != "" && document.getElementById('etablissement_ville').value != "" && document.getElementById('etablissement_2').value == "autre_choix") || (document.getElementById('etablissement_region').value != "" && document.getElementById('etablissement_ville').value != "" && document.getElementById('etablissement_nom').value != "" && document.getElementById('etablissement_1').value == "autre_choix") || (document.getElementById('etablissement_3').value == "autre_choix" && document.getElementById('etablissement_nom').value!="" )){
					//SI on a choisi un etablissement OU si on a rempli la ville et le nom en cas de autre choix OU si ona rempli le nom en cas de autre choix pour l'etab
					document.getElementById('em3').innerHTML="";
					var etab = true;
				}
				else{
					retourne = retourne + 1;
					document.getElementById('em3').innerHTML=tableau_erreur[8];	
				}
			}
			else{
				retourne = retourne + 1;
				document.getElementById('em3').innerHTML=tableau_erreur[8];	
			}
		}
		else{
			retourne = retourne + 1;
			document.getElementById('em3').innerHTML=tableau_erreur[8];	
		}
	}
	else{
		retourne = retourne + 1;
		document.getElementById('em3').innerHTML=tableau_erreur[8];	
	}
	
	if(document.getElementById('etablissement').value != "" && document.getElementById('etablissement_3').value == "autre_choix" && document.getElementById('etablissement_nom').value != ""){
		retourne = retourne -1;
		etab = true;
	}
	
	if( document.getElementById('annee_en_cours').value == "--" || document.getElementById('cycle').value == "--" ){
		document.getElementById('em3').innerHTML=tableau_erreur[9];	
		retourne = retourne + 1;
	}
	else if(etab ==true){ document.getElementById('em3').innerHTML="";}
	
	

	if(retourne > 0){
		return false;
	} 
	else return true
		
}
	



function date_transform(valeur_date,input_choisi, ordre){ 	//Cette fonction permet de convertir les date YYYYMMJJ en chaines de caractères lisibles

	if(valeur_date != "" && valeur_date.length <= 10){		//la valeur du champ tester n'est pas vide
		
		var mois ="";	

		year = valeur_date.substring(0,4);		//on récupère chaque partie de la date YYYY MM JJ sans les -
		month = valeur_date.substring(5,7);
		day = valeur_date.substring(8,10);
		
		switch(month){							//On remplace le nom des mois
		
			case '01' : mois = "Janvier";
			break;
			case '02' : mois = "Février";
			break;
			case '03' : mois = "Mars";
			break;
			case '04' : mois = "Avril";
			break;
			case '05' : mois = "Mai";
			break;
			case '06' : mois = "Juin";
			break;
			case '07' : mois = "Juillet";
			break;
			case '08' : mois = "Aout";
			break;
			case '09' : mois = "Septembre";
			break;
			case '10' : mois = "Octobre";
			break;
			case '11' : mois = "Novembre";
			break;
			case '12' : mois = "Decembre";
			break;
		}
		input_choisi.value = day+" "+mois+" "+year;		//On affiche
	}	
}


function trierMenuProduit(form,list,typeCategorie)// Création de la fonction qui va écrire les différentes options dans le second menu déroulant en fonction du choix effectué.
{												// Dans cette fonction on rabat le nom du formulaire , le nom du menu "select" et la "value" du choix que l'on a effectué.
	list.options.length=0;// La remise à 0 des options du menu déroulant est trés importante autrement il "rajoutera" à chaque choix différent de nouvelles options.
	// ici on commence les tests d'égalité avec la "value" retournée qui porte le nom de"typeCategorie".
	if (typeCategorie == "1")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("1","1");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("2","2");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("3","3");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("4","4");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("5","5");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
	
	else if (typeCategorie == "2") 
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("2","2");// on crée une variable "choix" dans laquelle on va mettre une nouvelle option.
		form.cycle.options[form.cycle.options.length]=choix;// ensuite on atteint le second menu déroulant que l'on va indexer avec notre nouvelle option "choix".
																
		choix=new Option("3","3");// Attention lors de la création de notre nouvelle option,
		form.cycle.options[form.cycle.options.length]=choix;// ce que l'on écrit en premier es le texte que va afficher notre menu déroulant,
																// le second est la "value" que celui-ci retournera. Et ainsi de suite.
		choix=new Option("4","4");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("5","5");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;

	}
	
	else if (typeCategorie == "3")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
	
		choix=new Option("3","3");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("4","4");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("5","5");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
	
	else if (typeCategorie == "4")
	{
	
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("4","4");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("5","5");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
	
	else if (typeCategorie == "5")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;

		choix=new Option("5","5");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
	
	else if (typeCategorie == "6")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;

		choix=new Option("6","6");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
	
	else if (typeCategorie == "7")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("7","7");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
		else if (typeCategorie == "8")
	{
		choix=new Option("--","");
		form.cycle.options[form.cycle.options.length]=choix;
		
		choix=new Option("8","8");
		form.cycle.options[form.cycle.options.length]=choix;
	}
}


function stage(valeur_choisie, verif_demandee){
 
	if(verif_demandee == 'cycle'){
		if( document.getElementById('annee_en_cours').value == valeur_choisie){
			document.getElementById('apres_stage').style.display = 'block';
			document.getElementById('hapres_stage').style.display = 'block';
		}
		else{
			document.getElementById('hapres_stage').style.display = 'none';
			document.getElementById('apres_stage').style.display = 'none';
		}
	}
	else if(verif_demandee == 'annee_en_cours'){
		
		if( document.getElementById('cycle').value == valeur_choisie){
			document.getElementById('apres_stage').style.display = 'block';
			document.getElementById('hapres_stage').style.display = 'block';
		}
		else{
			document.getElementById('hapres_stage').style.display = 'none';
			document.getElementById('apres_stage').style.display = 'none';
		}
	}
}

function rendre_visible(input_choisi){
	var id = input_choisi.id;
	var value = input_choisi.value;
	
	if(id =="apres_stage" && value=="Autre choix"){

		document.getElementById('apres_stage_2').style.display = 'block';
		document.getElementById('hapres_stage_2').style.display = 'block';
	}	
	else if(id =="apres_stage" && value!="Autre choix"){
		document.getElementById('apres_stage_2').value = "";
		document.getElementById('apres_stage_2').style.display = 'none';
		document.getElementById('hapres_stage_2').style.display = 'none';
	}
	else if(id =="etablissement_3" && value=="autre_choix"){

		document.getElementById('letablissement_nom').style.display = 'block';
		document.getElementById('etablissement_nom').style.display = 'block';
	}	
		else if(id =="etablissement_3" && value!="autre_choix"){

		document.getElementById('letablissement_nom').style.display = 'none';
		document.getElementById('etablissement_nom').style.display = 'none';
	}	
}
