
// JavaScript Document
//Maskdate pour les date 
//Masknum pour un numero 
//Masktel pour un tele 
//biaz mustapha 
//05/05/2006 
/*	
	Type   : c,C ; d,D ; n,N ; T,t ; r,R ; b,B ;m,M(Combobox, Date, Numérique, Texte, Radio, CheckBox ,date )
	Option : o,O ou f,F (Obligatoire ou Facultatif)
	exmple =input name="od_biaz" type="text" id="date jours" 
	
*/
///////////////////////////////iSint/////////////////////////
function iSint(entier)
{
   var verif     = /^[0-9]+$/ 
  if (verif.exec(entier) == null)
     {
	 return false;
	 }
 else{
     return true;
	 }     
}
///////////////////////////////suprimer ()////////////
function supprimer(text,stxt)
{
var tmp; 
tmp = ""; 
for(var i = 0; i < text.length; i++) 
{ 
tmp = tmp + text.charAt(i); 
  
    if (text.charAt(i) == stxt) 
    { 
    tmp = tmp.replace(stxt,""); 
    } 
	//alert(tmp);
} 
return tmp ;
} 
//////////////////////ajout////////////////////////
function ajouttel(text)
{
text =supprimer(text,' ') ;
var tmp,j; 
tmp = ""; 
if ((text.length >= 1) && (iSint(text.length / 2) == true ))
{ j= 1;   }
else
{
j= 2;
}
for(var i = 0; i < text.length; i++) 
{ 
tmp = tmp + text.charAt(i); 
    if (( i == j) && ( j+2 <= text.length ))
    { 
    tmp = tmp + '-' ; 
	j=j+2 ;
    } 
	
} 
return tmp ;
} 
/////////////////////////masknum/////////////////////////////////
function Masknum(obj)
{
var valeur =obj.value ;
var lvaleur = valeur.length  ;
var der = valeur.substring(lvaleur - 1,lvaleur) ;
var deb = valeur.substring(0,lvaleur-1) ;
if (isNaN(der))
	{
	  obj.value = deb ;
	}
 else
   {
     obj.value = deb + der ;
   }	
}
//////////////////////masktele/////////////////////
function Masktel(obj)
{
var valeur = supprimer(obj.value ,'-') ;
var lvaleur = valeur.length  ;
var der = valeur.substring(lvaleur - 1,lvaleur) ;
var deb = valeur.substring(0,lvaleur-1) ;
if (isNaN(der))
	{
	  obj.value = ajouttel(deb) ;
	}
 else
   {
     obj.value = ajouttel(deb + der) ;
   }	
}
//////////////////////////////////////jour///////////////
function Fjour(jrs)
{

var ljrs = jrs.length  ;
var tb = jrs.substring(ljrs - 1,ljrs) ;
var rjrs ;
if ((ljrs == 1)  && (jrs < 4 ) )
{ 
  rjrs = jrs ;
}
else if ((ljrs == 1) && (jrs < 10 ) &&  (jrs > 3 ))
 {
   rjrs = "0" + jrs +"/"  ;
   }
else if ((ljrs == 2) && (jrs > 31 ) )
  {
   rjrs =  "31/" ;
  }
  else 
  {
  rjrs =  jrs +"/";
  
  }
  if (rjrs =="/"){rjrs ='' ;}
  
 return rjrs ;
} 
////////////////////////////////////////////mois ///////////////
function Fmois(mois)
{

var lmois = mois.length  ;
var rmois ;
if ((mois == 1)  && (mois == 1 ) )
{ 
  rmois = mois ;
}
else if ((lmois == 1) && (mois < 10 ) &&  (mois > 1 ))
 {
   rmois = "0" + mois +"/"  ;
   }
else if ((lmois == 2) && (mois > 12 ) )
  {
   rmois =  "12/" ;
  }
  else 
  {
  rmois =  mois +"/";
  
  }
  //alert(jrs + tb) ;
 return rmois ;
} 
////////////////////////////////////////////anne////////////////
 function Fanne(anne)
{

var lanne = anne.length  ;
var ranne ;
if (lanne  >=  5 )
{
 var ltp = anne.substring(0,3) ;
 var lder = anne.substring(lanne-1,lanne);
 ranne = ltp + lder ;
}
else
{
 ranne = anne ;
}
 return ranne ;
}           
////////////////////////////////////////////maskdate////////////

function Maskdate(obj)
{
var valeurs = obj.value  ;
var lvaleurs = valeurs.length  ;
var debs = valeurs.substring(0,lvaleurs-1) ;
var valeurs = supprimer(obj.value ,'/' ) ;
var lvaleurs = valeurs.length  ;
var ders = valeurs.substring(lvaleurs - 1,lvaleurs) ;

//var debs = valeurs.substring(0,lvaleurs-1) ;
var ljour = valeurs.substring(0,2) ;
var lmois = valeurs.substring(2,4);
var lanne = valeurs.substring(4,lvaleurs);
if (isNaN(ders))
 {
   obj.value = debs ;
 }
 else
 {
   if (lvaleurs < 3)
   {
   obj.value = Fjour(valeurs);
   }
   else if(lvaleurs < 5)
   {
   obj.value = Fjour(ljour) +Fmois(lmois) ;
   }

   else
   {
	obj.value = Fjour(ljour) +Fmois(lmois) + Fanne(lanne) ;
  }
 }
 }
/*	
	Type   : c,C ; d,D ; n,N ; T,t ; r,R ; b,B ;m,M(Combobox, Date, Numérique, Texte, Radio, CheckBox ,date )
	Option : o,O ou f,F (Obligatoire ou Facultatif)
*/
function Verif_Forms()
{
    
	var ok;
	var NbBox;
	var NbRadio ;
	var NbElements = MonForm.elements.length ;
	// Boucle tous les éléments du formulaire
	for (var l = 0; l < NbElements; l++)
	{
		Nom_Element = MonForm.elements[l].name;
		Champ = MonForm.elements[l];
		// Verifie que l'element n'est pas vide
		if ((Nom_Element.substring(0,1) == "o" || Nom_Element.substring(0,1) == "O") && Champ.value == "")
		{
			alert("Le champ suivant est obligatoire : " + Champ.id );
			Champ.focus();
			return false;
		}
		// Verifie que l'element contient bien une date
		if (Nom_Element.substring(1,2) == "d" || Nom_Element.substring(1,2) == "D")
		{
			// Appel à la fonction Control_Date
			if (! Control_Date(Champ.value))
			{	
				alert("Format de date invalide pour le champ " + Champ.id + ".\nLe format de date valide est JJ/MM/AAAA" );
				Champ.focus();
				return false;
			}
		}
		// Verifie que l'element ne contient que des chiffres
		if (Nom_Element.substring(1,2) == "n" || Nom_Element.substring(1,2) == "N")
		{
			if (isNaN(Champ.value))
			{
				alert("Le champ suivant est numérique : " + Champ.id );
				Champ.focus();
				return false;
			}
		}
		//////////////
		if (Nom_Element.substring(1,2) == "m" || Nom_Element.substring(1,2) == "M")
		{
			// Appel à la fonction Control_email
			if (! Control_email(Champ.value))
			{	
				alert("Format de date invalide pour le champ " + Champ.id + ".\nLe format  valide est Email@domaine.fr" );
				Champ.focus();
				return false;
			}
		}
		// Verifie que l'utilisateur a fait un choix dans la combobox
		// ATTENTION :
		// Implique la déclaration d'une option dans le select avec la valeur -1 **
		if (Nom_Element.substring(1,2) == "c" || Nom_Element.substring(1,2) == "C")
		{
			if (Champ.value == -1)
			{
				alert("Le champ suivant est obligatoire : " + Champ.id);
				Champ.focus();
				return false;
			}
		}
		// Controle qu'un boutton radio a été selectionné
		if ((Nom_Element.substring(0,1) == "o" || Nom_Element.substring(0,1) == "O") && (Nom_Element.substring(1,2) == "r" || Nom_Element.substring(1,2) == "R"))
		{
			ok = false;
			// getElementsByName([Nom_element]).length renvoie le nombre d'element du meme nom
			// Merci bultez
			NbRadio = document.getElementsByName(Nom_Element).length;
			for (var k = 0; k < NbRadio; k++)
			{
				if (document.getElementsByName(Nom_Element)[k].checked == true)
				{
					ok = true
					k = document.getElementsByName(Nom_Element).length;
				}
			}
			if (ok == false)
			{
				alert("Le champ suivant est obligatoire : " + Champ.id );
				Champ.focus();
				return false;
			}
		}
		// Meme chose mais avec des CheckBox
		if ((Nom_Element.substring(0,1) == "o" || Nom_Element.substring(0,1) == "O") && (Nom_Element.substring(1,2) == "b" || Nom_Element.substring(1,2) == "B"))
		{
			ok = false;
			NbBox = document.getElementsByName(Nom_Element).length;
			for (var k = 0; k < NbBox; k++)
			{
				if (document.getElementsByName(Nom_Element)[k].checked == true)
				{
					ok = true
					k = document.getElementsByName(Nom_Element).length;
				}
			}
			if (ok == false)
			{
				alert("Le champ suivant est obligatoire : " + Champ.id );
				Champ.focus();
				return false;
			}
		}
	}
	return true ;
}


// Si l'element est nul, renvoie True ( "oui, l'element est vide" )
// Sinon, vérifie la date
function Control_Date (MaDate)
{
	var strTemporaire = MaDate;
	
	if (strTemporaire == '')
		return true;
		strTemporaire = formatDate(strTemporaire);
	if (strTemporaire == null) 
		return false;

	return true;
}

// Enleve les "XY_" devant le [Nom_de_l'element]
function Format_Nom (NomChamp)
{
	var position
	var NomTemp = NomChamp
	position = NomTemp.indexOf("_");
	NomTemp = NomTemp.substr(position,NomTemp.length)
	var reg = new RegExp("_","gi");
	NomTemp = NomTemp.replace(reg," ");
	return NomTemp;
}


// Function qui format une date et vérifie si elle n'est pas farfelue
// Cette fonction n'est pas de moi. Je sais juste qu'elle vient d'un Cédric
// Merci à lui
function formatDate(valeur)
{
	var JJ;var MM;var AAAA;			
	isMatch = false;
	var tabDate		
	// L'ordre de lecture des expressions est important
	var expReg1 =  /(\d{2})(\d{2})(\d{4}|\d{2})/;
	var expReg2 =  /(\d{2}|\d)\/(\d{2}|\d)\/(\d{4}|\d{2})/;
	// tabDate={JJMMAAAA ou JJMMAA}
	tabDate = valeur.match(expReg1);		
	if  ((tabDate != null) && (tabDate[0] == valeur))
	{					
		isMatch = true;
		JJ	= tabDate[1];
		MM	= tabDate[2]; 
		if (tabDate[3].length == 2 ) AAAA = '20' + tabDate[3] ;
		else AAAA = tabDate[3];
	} 
	// tabDate={JJ/MM/AAAA ou JJ/MM/AA}
	tabDate = valeur.match(expReg2);
	if  ((tabDate != null) && (tabDate[0] == valeur))  
	{
			isMatch = true;
			if (tabDate[1].length == 1 ) JJ	= '0' + tabDate[1];
			else JJ	= tabDate[1];
			if (tabDate[2].length == 1 ) MM	= '0' + tabDate[2]; 
			else MM	= tabDate[2]; 
			if (tabDate[3].length == 2 ) AAAA = '20' + tabDate[3] ;
			else AAAA = tabDate[3]; 
		}
		
		var objDate=new Date(AAAA, (MM - 1) ,JJ);

		if ((JJ=='32') && (MM='13') && isMatch) {
			//return JJ + '/' + MM + '/' + AAAA;
			return objDate;
		}
			
		if ( (!isMatch) || (objDate.getDate() != JJ) || ((objDate.getMonth()+1) != MM )) { 			
			return null;
		}		
		//return JJ + '/' + MM + '/' + AAAA;
		return objDate;
	}
////////controle email
var mail = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,}$/; 
function Control_email(champs) { 
    reponse=mail.test(champs) 
    if (reponse) { 
        return true; 
    } 
    else { 
        //alert("Adresse mail INVALIDE !"); 
        return false; 
    } 
} 
//////////////////
function vldfor() { 
    ok=false; 
    ok = Verif_Forms(); 
	//alert(ok);
    if (ok == true ) { 
	   MonForm.submit(); 
       return true; 
	} 
    else { 
        return false; 
	}
    } 
///////////////////////
function anuller() { 
     if(confirm('Voulez vous vider le formulaire '))
	 {
       MonForm.reset() ; 
	 }
       return true; 
	
    } 
/////////////confirmer mot de passe
function confiemer(obj2) { 
//alert(MonForm.ot_passe1.value );
//alert(obj2.value ) ;
   if(MonForm.ot_passe1.value !== obj2.value )
   { alert("Confirmation de mot de passe incorrect") ;
	     obj2.value="" ;
		 obj2.focus();
		 MonForm.ot_passe1.value="" ;
	 return false ;
    }  
	else
	{
	 return true ;
	}
	}
