/* Permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa */
function isDate(d) {
  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // année

  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourne faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

/* ELIMINATION de l'espace en tête, de l'espace en fin et des espaces multiples */
function MultiTrim(champ)
{	var temp = "";
	var premier = champ.indexOf(" ");
	
	if (champ.length < 2)	 // attention, s'il n'y a qu'un seul caractère, même un espace, on ne touche à rien
	{	return champ;
	}
	for (var i=1;i<champ.length;i++)	// élimination des espaces multiples successifs
	{	precedent=champ.substring(i-1,i);
		suivant=champ.substring(i,i+1);
		if ((precedent != " ") || (suivant != " "))
		{	temp = temp + precedent;
      	}
	}
	if (temp.length == 0)	 // s'il n'y avait que des espaces, on garde le dernier
	{	temp = temp + suivant;
		return temp;
	}
	if (suivant != " ")	// on récupère le dernier caractère, sauf si c'est un espace
	{	temp = temp + suivant;
	}
	if (premier == 0) // on élimine le premier caractère si c'est un espace
	{	temp = temp.substring(1,(temp.length));
	}
	return temp;
}

/* Elimination des mots-creux :
- "champ" est la chaine dont on doit éliminer les mots creux
- "ListeMots" est une chaine de caractères contenant les mots à éliminer entre parenthèses
*/
function MotsCreux(champ,ListeMots)
{	var temp = "";
	var Mot = "";
	var i = -1;
	var j = 0;
	var nbmots = 0;

	while(j!=-1)
	{	j=champ.indexOf(" ",i+1);
		if (j!=-1)
		{	Mot = "(" + champ.substring(i+1,j) + ")"; }
		else
		{	Mot = "(" + champ.substring(i+1,champ.length) + ")"; }

		// si ça n'est pas un mot creux : on le garde
		if (ListeMots.indexOf(Mot) == -1)
		{	temp = temp + " " + Mot.substring(1,Mot.length-1);
			nbmots = nbmots + 1;
		}
		i = j;
	}
	
	if (nbmots == 0)
	{	temp = ""; }
	else
	{	temp = MultiTrim(temp); }
	
	return temp;
}

/* Remplacement des minuscules par Majuscules (y compris lettres accentuées */
function MinMaj(champ)
{	var temp = "";
	var caract = "";
	var i = -1;
	var LettresMin="àâäéèêëìîïòôöùûüç";
	var LettresMaj="AAAEEEEIIIOOOUUUC";
	
	for (var j=0;j<champ.length;j++)
	{	caract=champ.substring(j,j+1);
		i=LettresMin.indexOf(caract);
		if (i!=-1)
		{	caract=LettresMaj.substring(i,i+1);
		}
		temp = temp + caract;
	}

	temp = temp.toUpperCase();	
	return temp;
}

/* VERIFICATION DE L'ALPHANUMERICITE STRICTE */
function VerifAlphaNum(champ,message)
{	var lettres="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàâäéèêëìîïòôöùûüç";
	
	for (var i=0;i<champ.length;i++)
	{	temp=champ.substring(i,i+1);
		if (lettres.indexOf(temp)==-1)
		{	alert(message);
			return false;
		}
	}
	return true;
}

/* VERIFICATION DE LA PRESENCE D'AU MOINS UN CARACTERE ALHABETIQUE */
function VerifAvecAlpha(champ,message)
{	var lettres="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàâäéèêëìîïòôöùûüç";
	
	for (var i=0;i<champ.length;i++)
	{	temp=champ.substring(i,i+1);
		if (lettres.indexOf(temp)!=-1)
		{	return true;
		}
	}
	alert(message);
	return false;
}

/* VERIFICATION D'UNE ADRESSE EMAIL :
	- pas de caractères interdits (accents, ponctuation sauf . - @ _ 
	- longueur > 5
	- présence @
	- 2 < position de @ < longueur - 4 
	- présence d'un point
	- pas de point juste après @ 
	- position du dernier point < à longueur - 1
	- ni espaces ni 2 points successifs
*/
function VerifEmail(email,message)
{	var arob = email.indexOf("@");
	var unpoint = email.indexOf(".");
	var dernierpoint = email.lastIndexOf(".");
	var deuxpoints = email.indexOf("..");
	var blanc = email.indexOf(" ");
	var autorises="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_@";
	var temp = "";
	
	for (var i=0;i<email.length;i++)
	{	temp=email.substring(i,i+1);
		if (autorises.indexOf(temp)==-1)
		{	alert(message);
			return false;
		}
	}

	if ((email.length > 5) && (arob > 0) && ((arob + 1) < (email.length - 3)) && (unpoint != -1) && (unpoint != (arob + 1)) && ((dernierpoint + 1) < (email.length - 1)) && (blanc == -1) && (deuxpoints == -1))
	{	return true; }
	else
	{	alert(message);
		return false;
	}
}

/* MODIFICATION D'UNE URL : 
	- suppression de http:// en tête
	- ajout éventuel de www. 
*/
function ModifUrl(url)
{	var temp = "";
	var http = url.indexOf("http://");
	var www = -1;
	var unpoint = url.indexOf(".");
	var dernierpoint = url.lastIndexOf(".");
	var deuxpoints = 0;

	temp = url;
	if (http == 0)
	{	temp = temp.substring(7,(temp.length));
	}
	www = temp.indexOf("www.");
	if ((unpoint != -1) && (dernierpoint != -1) && (dernierpoint > unpoint))
	{	deuxpoints = 1;
	}
	if (((www == -1) || (www > 0)) && (deuxpoints == 0))
	{
		temp = "www." + temp;
	}
	return temp;
}

/* VERIFICATION D'UNE URL : 
	- longueur > 9
	- deux points au moins 
	- position du dernier point < à longueur - 1
*/
function VerifUrl(url,message)
{	var unpoint = url.indexOf(".");
	var dernierpoint = url.lastIndexOf(".");
	if ((url.length > 9) && (unpoint != -1) && (dernierpoint != -1) && (unpoint != dernierpoint))
	{
		return true;
	}
	else
	{
		alert(message);
		return false;
	}
}

/* VERIFICATION D'UN MOT DE PASSE ET DE SA CONFIRMATION */
function VerifPasses(passe1,passe2)
{	var interdits="²&'\"(-_)=°+~#{[|`\^@]}^$¨£€¤*%µ<,;:!>?./§ ";
	var verification = true;

	if ((passe1.length < 4) || (passe1.length > 8)) // longueur entre 4 et 8
	{
		alert('Le mot de passe doit posséder entre 4 et 8 caractères (lettres ou chiffres exclusivement) ! Recommencez...');
		return false;
	}
	verification = VerifAlphaNum(passe1,'Le mot de passe doit posséder entre 4 et 8 caractères (lettres ou chiffres exclusivement) ! Recommencez...');
	if (verification == false)
	{
		return false;
	}
	if (passe1 != passe2)
	{
		alert('Le mot de passe et sa confirmation doivent être identiques ! Recommencez...');
		return false;
	}
	return true;
}
/* VERIFICATION D'UN MOT DE PASSE */
function VerifMotPasse(passe)
{	var interdits="²&'\"(-_)=°+~#{[|`\^@]}^$¨£€¤*%µ<,;:!>?./§ ";
	var verification = true;

	if ((passe.length < 4) || (passe.length > 8))
	{
		alert('Le mot de passe doit posséder entre 4 et 8 caractères (lettres ou chiffres exclusivement) ! Recommencez...');
		return false;
	}
	verification = VerifAlphaNum(passe,'Le mot de passe doit posséder entre 4 et 8 caractères (lettres ou chiffres exclusivement) ! Recommencez...');
	if (verification == false)
	{
		return false;
	}
	return true;
}
/* VERIFICATION D'UN NOM :
	- longueur > 1
	- pas de chiffres
	- pas de ponctuation (sauf le tiret) ou autres caractères interdits
*/
function VerifNom(nom,message)
{	var interdits="²&(_)=1234567890°+~#{[|`\^@]}^$¨£€¤*%µ<,;:!>?./§";
	var verification = true;

	for (var i=0;i<nom.length;i++)
	{
		temp=nom.substring(i,i+1);
		if (interdits.indexOf(temp)!=-1)
		{
			alert(message);
			return false;
      	}
   	}
	if (nom.length < 2)
	{
		alert(message);
		return false;
	}
	verification = VerifAvecAlpha(nom,message);
	if (verification == false)
	{
		return false;
	}

	return true;
}

/* VERIFICATION D'UNE RAISON SOCIALE :
	- longueur > 1
	- pas de ponctuation (sauf le tiret, @ et le point) ou autres caractères interdits
*/
function VerifRS(nom,message)
{	var interdits="²(_)=°+~#{[|`\^]}^$¨£€¤*%µ<,;:!>?/§";
	var verification = true;

	for (var i=0;i<nom.length;i++)
	{
		temp=nom.substring(i,i+1);
		if (interdits.indexOf(temp)!=-1)
		{
			alert(message);
			return false;
      	}
   	}
	if (nom.length < 2)
	{
		alert(message);
		return false;
	}
	verification = VerifAvecAlpha(nom,message);
	if (verification == false)
	{
		return false;
	}

	return true;
}

/* Teste une annee pour determiner si elle est bissextile ou pas*/
function CheckLeap(yy)
{
if ((yy % 100 != 0 && yy % 4 == 0) || (yy % 400 == 0)) { return 29; }
else { return 28; }
}

var MonthsList = new Array("Mois_Vide", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
var MonthLength = new Array("Mois_longueur_vide",31,29,31,30,31,30,31,31,30,31,30,31);

var QueryDate = 0; /* Jour demande (date)*/
var QueryMonth = 0; /* Mois demande*/
var QueryYear = 0; /* Annee demandee*/

/* verifie si la date est correcte p*/
function CheckDate(jour,mois,annee,texte)
{
QueryDate = jour;
QueryMonth = mois;
QueryYear = annee;
MonthLength[2] = CheckLeap(QueryYear);
if (MonthLength[QueryMonth] < QueryDate) 
{
alert(texte+"\nIl n'y a pas " + QueryDate + " jours en " + MonthsList[QueryMonth] + " " + QueryYear + " mais " + MonthLength[QueryMonth] + ".");
return false;
}
else 
return true;
}
/* VERIFICATION DES CHAMPS OBLIGATOIRES */
function verifcar(chaine,message)  
{
	if(chaine == "") /* on detecte si le champ est vide */
	{
		alert(message); /* dans ce cas on lance un message d'alerte et on retourne false*/
		return false;
	}
	else
	{
		return true; /* sinon on renvoie true */
	}
}

/* UN DES DEUX CHAMPS EST OBLIGATOIRE */
function VerifUnSurDeux(chaine1,chaine2,message)
{
	if ((chaine1 == "") && (chaine2 == "")) /* on detecte si les 2 champs sont vides */
	{
		alert(message); /* dans ce cas on lance un message d'alerte et on retourne false*/
		return false;
	}
	return true; /* sinon on renvoie true */
}

function checktwodates(joura,moisa,anneea,jourb,moisb,anneeb,message)
{ // on retourne true si et seulement si la deuxieme date est posterieure a la premiere
	if (parseInt(anneeb) > parseInt(anneea))
		{
		return true;
		}
	else if (parseInt(anneeb) < parseInt(anneea))
		{
		alert(message);
		return false;
		}
	else
		{
		if (parseInt(moisb) > parseInt(moisa))
			{
			return true;
			}
		else if (parseInt(moisb) < parseInt(moisa))
			{
			alert(message);
			return false;
			}
		else
			{
			if (parseInt(jourb) > parseInt(joura))
				{
				return true;
				}
			else 
				{
				alert(message);
				return false;
				}
			}
		}
}

function verifselect (select1,select2,select3,message1,message2)
{ // on verifie que au moins un select a une valeur (valeur de non selection = 999)
// et que deux select n'ont pas la meme valeur
if (select1 == 999 && select2 == 999 && select3 == 999) 
		{
		alert(message1);
		return false;
		}
	else 
		{
		;
		}
if (((select1 == select2) && (select1 != 999)) || ((select1 == select3) && (select1 !=999)) || ((select2 == select3) && (select2 !=999)))
		{
		alert(message2);
		return false;
		}
	else 
		{
		;
		}
return true;
}

function veriffile (formulaire,champ)
{ //verifie si le fichier charge est de type bmp/jpg/gif
	typefichier = champ.value.substring(champ.value.length - 3,champ.value.length); //prend les trois derniers car
	typefichiermin = typefichier.toLowerCase() ;// en minuscules
	if ((typefichiermin == "jpg") || (typefichiermin == "gif") || (typefichiermin == "bmp") || (typefichiermin =="jpe"))
		{
		formulaire.submit();
		}
	else
		{
		alert("Le fichier n'est pas de type gif/jpg/bmp\nMerci de recommencer.");
		}
}

function check4boxes(cb1,cb2,cb3,cb4,msg)
{ //verifie que au moins un cbox est valide
if ((cb1.checked) || (cb2.checked) || (cb3.checked) || (cb4.checked))
	{
	return true;
	}
else
	{
	alert(msg);
	return false;
	}
}

function check5boxes(cb1,cb2,cb3,cb4,cb5,msg)
{ //verifie que au moins un cbox est valide
if ((cb1.checked) || (cb2.checked) || (cb3.checked) || (cb4.checked) || (cb5.checked))
	{
	return true;
	}
else
	{
	alert(msg);
	return false;
	}
}

function CheckRadio(radio,msg)
{ //renvoie la valeur choisie parmi un groupe de boutons radio sinon message
  	var bt=-1;
  	var val="";

	for (var t=0;t<radio.length;t++)
		if (radio[t].checked)
		{bt=t;val=radio[t].value};

	if (val == "")
	{	alert(msg);
	}
	return val;
}

/* VERIFICATION CODE POSTAL FRANCAIS */
function VerifCPFrance (cp)
{
	/* la longeur = 5 */
	if (cp.length != 5)
	{
		alert('Le format du code postal est invalide (France uniquement)');
		return false;
    }

	/* il ne doit y avoir que des chiffres */
	var digits="0123456789"
	for (var i=0;i<cp.length;i++)
	{
		temp=cp.substring(i,i+1);
		if (digits.indexOf(temp)==-1)
		{
			alert('Le format du code postal est invalide (France uniquement)');
			return false;
      	}
   	}
}

/* VERIFICATION D'UN N° TEL FRANCAIS : 
	- numérique
	- long = 10 si pas 00 en tête 
*/
function VerifTel(champ,Msg)
{ //verifie que la valeur entree est bien un champ numerique valide
	var digits="0123456789"
	for (var i=0;i<champ.length;i++)
	{
		temp=champ.substring(i,i+1);
		if (digits.indexOf(temp)==-1)
		{
			alert(Msg);
			return false;
      	}
   	}
	if (champ.length < 5)
	{
		alert(Msg);
		return false;
	}

	temp = champ.substring(0,2); // on verifie lg = 10 sauf si les premiers car sont 00
	if ((champ.length != 10) && (temp != "00"))
	{
		alert(Msg);
		return false;
	}
	return true;
}

function checknumzero(champ,Msg)
{ //verifie que la valeur entree est bien un champ numerique valide
	var digits="0123456789"
	for (var i=0;i<champ.length;i++)
	{
		temp=champ.substring(i,i+1);
		if (digits.indexOf(temp)==-1)
		{
			alert(Msg);
			return false;
      	}
   	}
	temp = champ.substring(0,1); // on verifie si le premier car n'est pas 0
	if (temp == "0")
	{
		alert(Msg);
		return false;
	}
	return true;
}

function checknum(champ,Msg)
{ //verifie que la valeur entree est bien un champ numerique valide
	var digits="0123456789"
	for (var i=0;i<champ.length;i++)
	{
		temp=champ.substring(i,i+1);
		if (digits.indexOf(temp)==-1)
		{
			alert(Msg);
			return false;
      	}
   	}
	return true;
}
function confirmation(msg,page)
{
if(confirm(msg,page))
	{
	document.location.href = page;
	}
	else
	{
	;
	}
}
/* Doubler les apostrophes pour éviter les erreurs dans les strings de recherche */
function DoubleApostrophes(champ)
{	var temp = "";
	var temp2 = "";
	var caract = "";
	var Apos = champ.indexOf("'");

	if (Apos == -1)	// pas d'apostrophes
	{ 	return champ;
	}

	// supprimer les apostrophes multiples consécutives
	temp = champ;
	Apos = temp.indexOf("''");
	while (Apos > -1)
	{	temp=temp.substring(0,Apos+1) + temp.substring(Apos+2,temp.length);
		Apos = temp.indexOf("''");
	}
	
	// on double chaque apostrophe
	for (var i=0;i<temp.length;i++)
	{	caract=temp.substring(i,i+1);
		temp2 = temp2 + caract;
		if (caract == "'")
		{	temp2 = temp2 + "'";
		}
	}
	return temp2;
}
