/*********************************************** 
* Required field(s) validation v1.10- By NavSurf 
* Visit Nav Surf at http://navsurf.com 
* Visit http://www.dynamicdrive.com/ for full source code 
***********************************************/ 
//the fields in stringFieldRequired and stringFieldDescription must be separated by |
// ex "nom|prenom|age"
// il faut faire un return formCheck(...) dans le onsubmit
function formCheck(formobj,stringFieldRequired,stringFieldDescription){
	// Enter name of mandatory fields 
	// Entrer le nom des champs obligatoires 
	var fieldRequired = stringFieldRequired.split("|");
	// Enter field description to appear in the dialog box 
	// Entrer les description des champs obligatoires 
	var fieldDescription = stringFieldDescription.split("|");
	// dialog message 
	var alertMsg = "Remplissez les champs suivants SVP :\n";	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
			switch(obj.type){
			// CAS MENU DEROULANT
			case "select-one":
			// Si obj.selectedIndex == -1 >> Pas de selection 
			// Si obj.selectedIndex == 0 >> Le premier champ de du menu est selectionné 
				if (obj.selectedIndex == 0 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDescription[i] + "\n";
					
				}
				break;
			// CAS LISTE 
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			// cas champ de texte	
			case "text":
			case "textarea":
			case "password":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDescription[i] + "\n";
					
				}
				break;
			case "checkbox":
				if(obj.checked == false){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}


function verifEmail(obj)
{
/**************
vérification de la validité de l'email
cette fonction est appelée sur l'événement onblur
ex: onblur=verifEmail(this)  
this représente la balise dans laquelle on est
**************/
// on récupère le texte entré dans la zone de saisie e-mail
textEmail=obj.value;
if(textEmail=="")return;  // si l'email n'est pas rempli on ne vérifie rien

// si on trouve dans l'adresse e-mail un caractère interdit (/ : ; , ..)
// ou si on ne trouve pas un caractère indispensable placé correctement
// (@ une seule fois et ni en première, ni en dernière position)
// (. ni en première, ni en dernière position ou avant-dernière position, ni collé à @)
//  *****  indexOf() permet de connaître la position d'une lettre dans un mot
//  *****  si la lettre n'a pas été trouvé, sa valeur est -1  
if (    (textEmail.indexOf("/")!=-1) ||  // si on a trouvé le caractère /
        (textEmail.indexOf(":")!=-1) ||   
        (textEmail.indexOf(";")!=-1) ||
        (textEmail.indexOf(",")!=-1) ||
        (textEmail.indexOf(" ")!=-1) ||
        (textEmail.indexOf("..")!=-1) ||
        (textEmail.indexOf("@")<1) ||
        (textEmail.lastIndexOf("@")==(textEmail.length-1)) ||
        (textEmail.indexOf("@") != textEmail.lastIndexOf("@")) ||
        (textEmail.indexOf(".")<1) ||
        (textEmail.lastIndexOf(".")>(textEmail.length-3)) ||   // il doit y avoir 2 lettres au moins avant le dernier .
        (textEmail.indexOf(".") == (textEmail.indexOf("@")-1 ||textEmail.indexOf("@")+1))){
             
			// message d'alerte
            writediv("messageMail","L'adresse e-mail n'est pas correcte !");
			
			// on met l'arrière-plan du champ de saisie en rouge
            obj.style.backgroundColor="#ff0000";
			
			 
        }
       
}

function verifNombre(obj){
/***************
le champ doit contenir un nombre
cette fonction est appelée sur l'événement onblur
ex: onblur="verifNombre(this)"  
this représente la balise dans laquelle on est
**************/
	// on récupère le texte entré dans la zone de saisie
	nb=obj.value;
	nb=nb.replace(",",".");
	if(isNaN(parseFloat(nb))){
		if(nb!=""){
			// message d'alerte
            alert("Ce champ doit contenir un nombre !");
			}
			// on vide le champ de saisie
            obj.value="";			
			
	}
	else{		
		obj.value=parseFloat(nb);
	}	
}

function verifIntervalle(obj,mini,maxi){
/***************
le champ doit contenir un nombre compris entre le mini et le maxi
cette fonction est appelée sur l'événement onblur
ex: onblur=verifIntervalle(this)  
this représente la balise dans laquelle on est
**************/
	// on récupère le texte entré dans la zone de saisie
	nb=obj.value;
	// si le texte entré n'est pas un nombre ou qu'il est inférieur au minimum ou supérieur au maximum
	// message d'alerte 
	if(isNaN(nb) || nb < mini || nb > maxi){
			// message d'alerte
            alert("Ce champ doit contenir un nombre compris entre "+mini+" et "+maxi+" !");
			// on vide le champ de saisie
            obj.value="";
		
	}
	
}

function verifTel(obj){
/***************

cette fonction est appelée sur l'événement onblur
ex: onblur=verifTel(this)  
this représente la balise dans laquelle on est
**************/
	// on récupère le texte entré dans la zone de saisie
	tel=obj.value;
	// les seuls caractères autorisés sont le .  - ou un chiffre
	// on passe tout le numéro en revue 
	for(i=0;i<tel.length;i++){
		car=tel.charAt(i);
		if(isNaN(parseInt(car)) && car != "." && car != "-" && car != " "){
			alert("Pour votre numéro de téléphone, n'utilisez que des chiffres \n et un tiret, un espace ou un point pour les séparer !");		
			// on met le curseur dans le champ de saisie
			obj.focus();
			return
		}
	}
	
	if(isNaN(nb) || nb < mini || nb > maxi){
			// message d'alerte
            alert("Ce champ doit contenir un nombre compris entre "+mini+" et "+maxi+" !");
			// on vide le champ de saisie
            obj.value="";
		
	}
	
}

function premMaj(mot){
	/*********************************************************
	string premMaj(string mot)
	OBJECTIF : mettre la première lettre d'un mot en majuscule
	et le reste en minuscule
	*********************************************************/
	// on récupère la première lettre du mot 
	var premier=mot.substring(0,1);
	// on la met en majuscules
	premier=premier.toUpperCase();
	// on récupère la fin du mot
	var fin=mot.substring(1,mot.length);
	// on la met en minuscule
	fin=fin.toLowerCase();
	// on utilise l'opérateur de concaténation pour recoller les morceaux
	var motFormat=premier+fin;
	// on renvoie le résultat
	return motFormat;
}



function formatePrenom(prenom){
	/*************************************************************
	string formatePrenom(string prenom)
	OBJECTIF : formater un prénom (y compris un prénom composé)
	avec que chaque mot ait une majuscule au début du mot et le reste en minuscules. les séparateurs possibles pour les prénoms composés sont des - ou des espaces
	UTILISE : premMaj()
	**************************************************************/
	// on vérifie s'il ne s'agit pas d'un prénom composé (ex anne-marie ou Ang su yi)
	// en recherchant la présence d'un séparateur(tiret ou espace) 
	if(prenom.indexOf("-")!= -1){
		separateur="-";
	}
	else if(prenom.indexOf(" ")!= -1){		
		separateur=" ";
	}
	else{
		// si on n'a pas trouvé c'est un prénom simple et on met la première lettre en majuscule
		// return renvoie la valeur et arrête la lecture du code de la fonction
		return(premMaj(prenom));
	}
	// Ce code est lu uniquement dans le cas des prénoms composés
	var prenom_array=prenom.split(separateur);
	for(i=0;i<prenom_array.length;i++){
		prenom_array[i]=premMaj(prenom_array[i]);	
	}
	var prenomFormat=prenom_array.join(separateur);	
	return prenomFormat;
}

function writediv(idDiv,texte){
     document.getElementById(idDiv).innerHTML = texte;
}


////////////////////////////////////////////////////
//// AJAX
function file(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }
//////////////////////////////////////

function verifDoublonMotPasse(motPasse){
// vérifie que le mot de passe saisi n'est pas déjà utilisé par un autre client dans la base de données
// UTILISE AJAX
// et que le mot de passe fait bien au moins 7 caractères
/*
		alert(url);
		texte = file('http://localhost/WEBREALI/admin/verif_site.php?url='+url);
		writediv(texte);
*/

     if(motPasse.value != ''){
		
		 // Au moins 7 caractères
		 if(motPasse.value.length < 7){
			 writediv('messageDoublon','Le mot de passe doit faire au moins 7 caractères');
			 motPasse.style.backgroundColor="#ff0000";
			 return; // on ne lit pas la suite de la fonction
		 }
		 
		 // AJAX POUR VERIF DANS BASE
          var texte = file('verif_password.php?password='+motPasse.value);           
          if(texte == "existe_deja" ){
               writediv('messageDoublon','<span style="color:#cc0000">Ce mot de passe est déjà employé. </span>');
			   motPasse.style.backgroundColor="#ff0000";
			 
		  } 
	     
	}

}//verifUrl
/////////////////////////////////////////////////
function updatePaiement(){
	// utilise AJAX
	// envoie l'info du paiement à une page PHP pour mise à jour dans la table et envoi mail

	if(document.form1.paiement[0].checked){
		mode_paiement="cheque";
	}
	if(document.form1.paiement[1].checked){
		mode_paiement="paypal";
	}
	
	// AJAX
	//texte = file('update_paiement.php?mode_paiement=cheque');
	var texte = file('update_paiement.php?mode_paiement='+mode_paiement);
	
	if(texte=="ok"){
		document.getElementById(mode_paiement).style.display="block";
		document.getElementById("choixPaiement").style.display="none";
	}

}


	 
function verifMotPasseBis(){
// vérifie que l'utilisateur a bien tapé 2 fois le même mot de passe


		 if(document.form1.mot_passe.value != document.form1.mot_passe_bis.value && document.form1.mot_passe_bis.value !=""){
		 	writediv('messageBis','Les deux mots de passe sont différents');
			document.form1.mot_passe.style.backgroundColor="#ff0000";
			document.form1.mot_passe_bis.style.backgroundColor="#ff0000";
		 }
		else{
			writediv("messageBis",'');
			document.form1.mot_passe.style.backgroundColor="#ffffff";
			document.form1.mot_passe_bis.style.backgroundColor="#ffffff";
		}
	 }
	 
	 function videMotPasse(obj){
	 	obj.value="";
		document.form1.mot_passe_bis.value="";
	 	obj.style.backgroundColor="#ffffff";
		document.form1.mot_passe_bis.style.backgroundColor="#ffffff";
		writediv('messageDoublon','');
		writediv('messageBis','');
	 }
	 function vide(obj,idDiv){
	 	writediv(idDiv,'');
		obj.style.backgroundColor="#ffffff";
	 }

function verifFormMotPasse(obj){
	if(obj.mot_passe.value=="" || obj.mot_passe_bis.value==""){
		alert("Vous n'avez pas rempli le mot de passe et/ou sa confirmation !");
		return false;
	}
	else{
		return true;
	}
}

///////////////////////////////////////////////////
function changeMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_jumpMenuGo(selName,targ,restore){ //v3.0
  var selObj = MM_findObj(selName); if (selObj) MM_jumpMenu(targ,selObj,restore);
}

///////////////////////////////////////////////////////////////////////
function verifDate(obj){
// Cette fonction s'exécute avec l'événement onblur sur le champ texte(obj) qui doit contenir la date
// au format jj/mm/aaaa
	var date=obj.value;
	var tabDate=date.split("/");
	// variable globale bonFormatDate qui sera récupérée par verifActu()
	bonFormatDate=true;
	if(tabDate.length != 3){
		obj.value="";
		bonFormatDate=false;
		alert("La date doit être au format jj/mm/aaaa (ex 20/01/2008) !");
		
	}
	else{
		var jour=tabDate[0];
		var mois=tabDate[1];
		var an=tabDate[2];
		if(jour > 31){
			obj.value="";
			bonFormatDate=false;
			alert("Le jour n'est pas correct !");
			
		}
		if(mois > 12){
			obj.value="";
			bonFormatDate=false;
			alert("Le mois n'est pas correct !");
			
		}
		if(an.length == 2){
			an="20"+an;
			obj.value=jour+"/"+mois+"/"+an;
		}
	}
}
