/* --- Javascripts Utils --- */

// Confirmer une suppression
function ConfirmationSupprimer(Quoi) {
	retour = confirm("Êtes-vous sûr de vouloir supprimer "+Quoi);
	return retour;
}

// Cache ou Montre un identifiant

function xd_cacheMontreLId(ID) {
	if (document.getElementById(ID)) {
		if (document.getElementById(ID).style.display == 'none' || document.getElementById(ID).style.display == '') {
			document.getElementById(ID).style.display = 'block'
		} else {
			document.getElementById(ID).style.display = 'none'
		}
	}
}

function xd_cacheTousLesId(Racine,Debut,Fin) {
	for(i=Debut;i<=Fin;i++) {
		if (document.getElementById(Racine+i)) {
			document.getElementById(Racine+i).style.display = 'none';
		}
	}
}

/* -------------------------------------------- */
/* --- Tout sélectionner (version checkbox) --- */
/* -------------------------------------------- */

function toutSelectionner(id,nb_id) {
	for (i=0;i<nb_id;i++) {
		document.getElementById(id + i).checked = true;
	}
}

function toutDeSelectionner(id,nb_id) {
	for (i=0;i<nb_id;i++) {
		document.getElementById(id + i).checked = false;
	}
}

function inverserSelection(id,nb_id) {
	for (i=0;i<nb_id;i++) {
		if (document.getElementById(id + i).checked) {
			document.getElementById(id + i).checked = false;
		} else {
			document.getElementById(id + i).checked = true;
		}
	}
}
/* ------------- */
/* --- PopUp --- */
/* ------------- */

function xd_popUpImage(url,largeur,hauteur) {
	window.open(url,'popup','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=1,width='+largeur+',height='+hauteur);
}

function xd_popUp(url,largeur,hauteur) {
	window.open('index.php5?acces='+url,'zoom','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=1,width='+largeur+',height='+hauteur+',left=200,top=200');
}

/* --- Générer un mot de passe --- */

function genererMotPasse(id) {
	var caracteres = 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789';
	var nbCaracteres = caracteres.length;

	motPasse = '';
	taille=8;

	for (i=0;i<taille;i++) {
		tirage = Math.round(Math.random()*nbCaracteres);
		motPasse += caracteres.substring(tirage,tirage+1);
	}

	document.getElementById(id).value= motPasse;
}

/* ------------------------------ */
/* --- Vérifie  du formulaire --- */
/* ------------------------------ */

// param 1 : id du formulaire à traiter
// param 2 à n : id des champs spéciaux
// --- champ *: champ est nécessaire
// --- champ @: champ doit être une adresse email valide
// --- champ °: champ doit être un nombre
// --- champ !° : champ ne doit pas être un nombre
// --- champ1 || champ2 : soit champ1 soit champ2
// --- champ1 && champ2 : si champ1 est remplie alors champ2 doit l'être aussi
// --- champ ! val : champ doit être différent de val (pour les select)

// exemple d'utilisation
// <input type="button" name="envoyer" id="envoyer" value="envoyer" class="validation" onClick="XD_verifieFormulaire('IDformulaire','nom|*','email|@*','sujet|*','message|*')" />


// Contrainte : chaque champ doit être identifier (ID)

function xd_verifieFormulaire() {

	// récupération des paramètres
	params = xd_verifieFormulaire.arguments;

	messages = new Array();
	erreurs = new Array('');

	lesErreurs = '';

	messages[0]='Champs Obligatoires\n';
	messages[1]='Au moins l\'un des champs ci-dessous est obligatoire\n';
	messages[2]='Les champs suivants doivent être des adresses emails valides\n';
	messages[3]='Les champs suivants doivent être des nombres\n';
	messages[4]='Champs à sélectionner\n';
	messages[5]='Votre sélection implique une autre champ obligatoire\n';
	messages[6]='Veuillez cocher les cases suivantes :\n';

	for (i=1; i<params.length; i+=1) {

		/* --------------------------- */
		/* --- Champs Obligatoires --- */
		/* --------------------------- */
		if (params[i].indexOf('*')!=-1 && document.getElementById(params[i].substr(0,params[i].indexOf('|'))).value=='') {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (erreurs[0]==undefined || erreurs[0]=='') {
				erreurs[0]=messages[0]+'- '+elt+'\n';
			} else {
				erreurs[0]+='- '+elt+'\n';
			}
		}

		/* ---------------------------- */
		/* --- Doit être un Email ? --- */
		/* ---------------------------- */
		if (params[i].indexOf('@')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (document.getElementById(elt).value!='') {
				valeur = document.getElementById(elt).value;
				if (valeur.indexOf('@')==-1 || valeur.indexOf('@')<1) {
					// Pas de arrobase @
					if (erreurs[2]==undefined || erreurs[2]=='') {
						erreurs[2]=messages[2]+'- '+elt+'\n';
					} else {
						erreurs[2]+='- '+elt+'\n';
					}
				} else {
					// Pas de domaine ou domaine trop court
					valeurfin = valeur.substr(valeur.indexOf('@'),valeur.length);
					if (valeurfin.indexOf('.')==-1 || valeurfin.indexOf('.')==valeurfin.length-1 || valeurfin.substr(0,valeurfin.indexOf('.')).length<3) {
						if (erreurs[2]==undefined || erreurs[2]=='') {
							erreurs[2]=messages[2]+'- '+elt+'\n';
						} else {
							erreurs[2]+='- '+elt+'\n';
						}
					} else {
						// pas de TLD ou TLD trop court
						if (valeurfin.substr(valeurfin.indexOf('.')+1,valeurfin.length).length<2) {
							if (erreurs[2]==undefined || erreurs[2]=='') {
								erreurs[2]=messages[2]+'- '+elt+'\n';
							} else {
								erreurs[2]+='- '+elt+'\n';
							}
						}
					}
				}
			}
		}


		/* ----------------------------------- */
		/* --- l'un OU l'autre ou les Deux --- */
		/* ----------------------------------- */
		// A améliorer en elt1 ou elt2 ou elt3 ou elt4 ou .... ou eltn

		if (params[i].indexOf('||')!=-1) {
			elt1 = params[i].substr(0,params[i].indexOf('||'));
			elt2 = params[i].substr(params[i].indexOf('||')+2,params[i].length);
			if (document.getElementById(elt1).value=='' && document.getElementById(elt2).value=='') {
				if (erreurs[1]==undefined) {
					erreurs[1]=messages[1]+'- '+elt1+' ou '+elt2+'\n';
				} else {
					erreurs[1]+=elt1+' ou '+elt2+'\n';
				}
			}
		}


		/* --------------------------- */
		/* --- Doit être un Nombre --- */
		/* --------------------------- */
		if (params[i].indexOf('°')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (isNaN(document.getElementById(elt).value) && document.getElementById(elt).value!='') {
				if (erreurs[3]==undefined || erreurs[3]=='') {
					erreurs[3]=messages[3]+'- '+elt+'\n';
				} else {
					erreurs[3]+='- '+elt+'\n';
				}
			}
		}

		/* ---------------------------------- */
		/* --- Doit être différent de Val --- */
		/* ---------------------------------- */
		if (params[i].indexOf('!')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('!'));
			val = params[i].substr(params[i].indexOf('!')+1,params[i].length);
			if (document.getElementById(elt).options[document.getElementById(elt).selectedIndex].value==val) {
				if (erreurs[4]==undefined || erreurs[4]=='') {
					erreurs[4]=messages[4]+'- '+elt+'\n';
				} else {
					erreurs[4]+='- '+elt+'\n';
				}
			} 
		}

		/* ------------------------------ */
		/* --- si l'un alors l'autre  --- */
		/* ------------------------------ */
		// A REVOIR mettre ELT[CONDITION]VALEUR?vrai
		if (params[i].indexOf('?')!=-1) {
			elt1 = params[i].substr(0,params[i].indexOf('?'));
			elt2 = params[i].substr(params[i].indexOf('?')+1,params[i].length);

			if (document.getElementById(elt1).value!='' && document.getElementById(elt2).value=='') {
				if (erreurs[1]==undefined) {
					erreurs[1]=messages[5]+'- '+elt1+' implique '+elt2+'\n';
				} else {
					erreurs[1]+=elt1+' ou '+elt2+'\n';
				}
			}
		}

		/* -------------------------- */
		/* --- Doit être une Date --- */
		/* -------------------------- */

		/* ------------------------ */
		/* --- Doit être cochée --- */
		/* ------------------------ */
		if (params[i].indexOf('+')!=-1) {
			elt = params[i].substr(0,params[i].indexOf('|'));
			if (!document.getElementById(elt).checked) {
				if (erreurs[6]==undefined || erreurs[6]=='') {
					erreurs[6]=messages[6]+'- '+elt+'\n';
				} else {
					erreurs[6]+='- '+elt+'\n';
				}
			}
		}

	}

	//	alert('Nb Erreurs : '+erreurs.length);

	for(i=0; i<erreurs.length; i+=1) {
		if (erreurs[i]!=undefined) {
			lesErreurs+=erreurs[i];
		}
	}
	
	if (lesErreurs!='') {
		alert(lesErreurs);
	}
	document.retour = (lesErreurs == '');
}


