//FONCTIONS POUR LES FONCTIONS DE MASK

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

// FONCTION MASKNUM pour faire un masque sur des nombres seulements
function maskNum (key, textbox, dFilterMask)
{
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		//dFilterNum ici égale la liste des nombres dans le textbox excluant celui qui est tapper et les symboles

		if (key==9 && dFilterNum.length==0) //Si j'ai TAB et vide, j'efface et je quitte
		{
		    		textbox.value="";
				return true;
		}
		else if (key==9) // J'ai un TAB et non vide, je quitte tel quel!
		{
		 	 	return true;
		}
		else if (key==8&&(dFilterNum.length==1||dFilterNum.length==0)) // J'ai un Backspace et dFilterNum avec 1 car qu'on efface !
		{
		 	 	dFilterNum = "";
				dFilterMask = "";
		}
		else if (key==8&&dFilterNum.length!=0) // J'ai un Backspace et dFilterNum non vide
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
		//Ici ai j'ai une touche valide, si chiffre de droit (95-106) je transfert vers (47-58) chiffre en haut
 	      else if ( ((key>47&&key<58)) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
        		dFilterNum=dFilterNum+String.fromCharCode(key);
		}

		var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        if (dFilterMask.charAt(dFilterStep)=='#')
				{
					  if (dFilterNum.length!=0)
					  {
				        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
					      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
					  }
				    else
				    {
				        dFilterFinal = dFilterFinal + "";
				    }
				}
		 		else if (dFilterMask.charAt(dFilterStep)!='#')
				{
				    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
				}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;
    return false;
}

// FONCTION MASKALPH pour faire un masque sur des nombres seulements
function maskAlph (key, textbox, dFilterMask)
{
		//alert(key)
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		//dFilterNum ici égale la liste des nombres dans le textbox excluant celui qui est tapper et les symboles

		if (key==9 && dFilterNum.length==0) //Si j'ai TAB et vide, j'efface et je quitte
		{
		    		textbox.value="";
				return true;
		}
		else if (key==9) // J'ai un TAB et non vide, je quitte tel quel!
		{
		 	 	return true;
		}
		else if (key==8&&(dFilterNum.length==1||dFilterNum.length==0)) // J'ai un Backspace et dFilterNum avec 1 car qu'on efface !
		{
		 	 	dFilterNum = "";
				dFilterMask = "";
		}
		else if (key==8&&dFilterNum.length!=0) // J'ai un Backspace et dFilterNum non vide
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
		//Ici ai j'ai une touche valide lettre seulement !
 	      else if ( ((key>64&&key<91) || (key>96&&key<123) || key==45 || (key>199&&key<203) || (key>230&&key<235)) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
        		dFilterNum=dFilterNum+String.fromCharCode(key);
		}

		var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        if (dFilterMask.charAt(dFilterStep)=='#')
				{
					  if (dFilterNum.length!=0)
					  {
				        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
					      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
					  }
				    else
				    {
				        dFilterFinal = dFilterFinal + "";
				    }
				}
		 		else if (dFilterMask.charAt(dFilterStep)!='#')
				{
				    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
				}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;
    return false;
}

// FONCTION MASKALPHNUM pour faire un masque sur des nombres seulements
function maskAlphNum (key, textbox, dFilterMask)
{
		//alert(key)
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		//dFilterNum ici égale la liste des nombres dans le textbox excluant celui qui est tapper et les symboles

		if (key==9 && dFilterNum.length==0) //Si j'ai TAB et vide, j'efface et je quitte
		{
		    		textbox.value="";
				return true;
		}
		else if (key==9) // J'ai un TAB et non vide, je quitte tel quel!
		{
		 	 	return true;
		}
		else if (key==8&&(dFilterNum.length==1||dFilterNum.length==0)) // J'ai un Backspace et dFilterNum avec 1 car qu'on efface !
		{
		 	 	dFilterNum = "";
				dFilterMask = "";
		}
		else if (key==8&&dFilterNum.length!=0) // J'ai un Backspace et dFilterNum non vide
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
		//Ici ai j'ai une touche valide lettre seulement !
 	      else if (((key>47&&key<58) || (key>64&&key<91) || (key>96&&key<123) || key==45 || (key>199&&key<203) || (key>230&&key<235)) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
        		dFilterNum=dFilterNum+String.fromCharCode(key);
		}

		var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        if (dFilterMask.charAt(dFilterStep)=='#')
				{
					  if (dFilterNum.length!=0)
					  {
				        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
					      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
					  }
				    else
				    {
				        dFilterFinal = dFilterFinal + "";
				    }
				}
		 		else if (dFilterMask.charAt(dFilterStep)!='#')
				{
				    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
				}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;
    return false;
}

// FONCTION MASKINT pour valider que juste un INT est entré
function maskInt (key, textbox)
{
		if (key==9 && textbox.value.length==0) //Si j'ai TAB et vide, je met 0 et je quitte
		{
		    		alert("tab");
				textbox.value="0";
				return true;
		}
		else if (key==9) // J'ai un TAB et non vide, je quitte tel quel!
		{
		 	 	return true;
		}
		else if (key==8&&(textbox.value.length==1||textbox.value.length==0)) // J'ai un Backspace et dFilterNum avec 1 car qu'on efface !
		{
		 	 	textbox.value="";
				return true;

		}
		else if (key==8&&dFilterNum.length!=0) // J'ai un Backspace et dFilterNum non vide
		{
		 	 	textbox.value = textbox.value.substring(0,textbox.value.length-1);
				return true;

		}
		//Ici ai j'ai une touche valide, si chiffre de droit (95-106) je transfert vers (47-58) chiffre en haut
 	      else if (key>47&&key<58)
		{
        		//textbox.value=textbox.value+String.fromCharCode(key);
			return true;

		}

    		return false;
}




// FONCTION VALIDER UN TELEPHONE
// Validation d'un TELEPHONE, on recoit en paramêtre le nom de l'élément à vérifier ('element')
// Si invalide, message d'erreur et retour sur la case d'erreur + sélection du texte
function validerTelephone(elementTelephone) 
{
if (elementTelephone.value != ""){
//J'applique le masque que je veux 
MasqueTemporaire='(###) ###-####';
ValeurTemporaire = dFilterStrip(elementTelephone.value, MasqueTemporaire);
dFilterFinal="";

	for (dFilterStep = 0; dFilterStep < 14; dFilterStep++){
      	if (MasqueTemporaire.charAt(dFilterStep)=='#'){
			if (ValeurTemporaire.length!=0){
				dFilterFinal = dFilterFinal + ValeurTemporaire.charAt(0);
				ValeurTemporaire = ValeurTemporaire.substring(1,ValeurTemporaire.length);
			}else{
				dFilterFinal = dFilterFinal + "";
			}
		}else if (MasqueTemporaire.charAt(dFilterStep)!='#'){
			dFilterFinal = dFilterFinal + MasqueTemporaire.charAt(dFilterStep); 			
		}
	}
elementTelephone.value = dFilterFinal;

 if (elementTelephone.value != "" && elementTelephone.value.length != 14)  
 {
 alert("Veuillez entrez un numéro de téléphone valide !");
globalvar = elementTelephone; 
setTimeout("globalvar.focus()",250); 

//  elementTelephone.focus();
  elementTelephone.select();
 }
}
}
// FIN VALIDER TELEPHONE


// FONCTION VALIDER UN CODE POSTAL
// Validation d'un CODE POSTAL, on recoit en paramêtre le nom de l'élément à vérifier ('element')
// Si invalide, message d'erreur et retour sur la case d'erreur + sélection du texte
function validerCodePostal(elementCodePostal) 
{
if (elementCodePostal.value != ""){
//J'applique le masque que je veux 
MasqueTemporaire='### ###';
ValeurTemporaire = dFilterStrip(elementCodePostal.value, MasqueTemporaire);
dFilterFinal="";

	for (dFilterStep = 0; dFilterStep < 7; dFilterStep++){
      	if (MasqueTemporaire.charAt(dFilterStep)=='#'){
			if (ValeurTemporaire.length!=0){
				dFilterFinal = dFilterFinal + ValeurTemporaire.charAt(0);
				ValeurTemporaire = ValeurTemporaire.substring(1,ValeurTemporaire.length);
			}else{
				dFilterFinal = dFilterFinal + "";
			}
		}else if (MasqueTemporaire.charAt(dFilterStep)!='#'){
			dFilterFinal = dFilterFinal + MasqueTemporaire.charAt(dFilterStep); 			
		}
	}
elementCodePostal.value = dFilterFinal;

 if (elementCodePostal.value != "" && elementCodePostal.value.length != 7)  
 {
 alert("Veuillez entrez un Code Postal valide !");
globalvar = elementCodePostal; 
setTimeout("globalvar.focus()",250); 
//  elementCodePostal.focus();
  elementCodePostal.select();
 }
}
}
// FIN VALIDER CODE POSTAL

// FONCTION VALIDER UN COURRIEL
// Validation d'un COURRIEL, on recoit en paramêtre le nom de l'élément à vérifier ('element')
// Si invalide, message d'erreur et retour sur la case d'erreur + sélection du texte
function validerCourriel(elementCourriel) 
{	
 if (elementCourriel.value != "" && elementCourriel.value.indexOf('@', 0) == -1)  
 {
 alert("Veuillez entrez une adresse de courriel valide !");
globalvar = elementCourriel; 
setTimeout("globalvar.focus()",250); 

 // elementCourriel.focus();
  elementCourriel.select();
 }
}
// FIN VALIDER COURRIEL


// FONCTION VALIDER UN INT (montant d'argent)
// Validation d'un INT (montant d'argent), on recoit en paramêtre le nom de l'élément à vérifier ('element')
// Si invalide, message d'erreur et retour sur la case d'erreur + sélection du texte

function validerInt(elementInt) 
{	
 if (isNaN(parseInt(elementInt.value)))  
 {
  elementInt.value="0";
}else{
  elementInt.value=parseInt(elementInt.value);
 }
}

// FIN VALIDER INT (montant d'argent)

// FONCTION VALIDER UNE LONGUEUR DE TEXTE A LA SORTIE
// Validation d'une longueur, on recoit en paramêtre le nom de l'élément à vérifier ('element') + la longueur INT
// Si invalide, message d'erreur et retour sur la case d'erreur + sélection du texte
function validerLongueur(element,longueur) 
{
if (element.value != "" && element.value.length > longueur)  
 {
  alert("Please enter a maximum of : "+ longueur + " characters !");
  globalvar = element; 
  setTimeout("globalvar.focus()",250); 
  //element.focus();
  element.select();
 }
}
// FIN VALIDER LONGUEUR

// ALIDER DATE
function myIsDate(mystring)
{//--BOF 
var mystring, myresult ;
var mystring = new Date(mystring);
isNaN(mystring)? myresult=false : myresult=true ;
return myresult ;
//--EOF
}
function validerDate3(textbox){
  if (textbox.value != ""){ 
	if(myIsDate(textbox.value)){}else{
		alert("Please enter a valid date !");
	
	globalvar = textbox; 
		setTimeout("globalvar.focus()",250); 
		//textbox.focus();
		textbox.select();		
	}
  }
}
// FIN VALIDER DATE
function validerDate(textbox){
  if (textbox.value != ""){ 
	if(myIsDate(textbox.value)){
		maDate = new Date(textbox.value);

		//alert (maDate.getFullYear() + "/" + ((maDate.getMonth() < 9 ? '0' : '') + (maDate.getMonth()+1)) + "/" + ((maDate.getDate() < 10 ? '0' : '') + maDate.getDate())  );
		textbox.value=(maDate.getFullYear() + "/" + ((maDate.getMonth() < 9 ? '0' : '') + (maDate.getMonth()+1)) + "/" + ((maDate.getDate() < 10 ? '0' : '') + maDate.getDate())  );

		//textbox.value = maDate.getFullYear() + "/" + (maDate.getMonth() < 10 ? '0' : '') + maDate.getMonth() + "/" + maDate.getDate() < 10 ? '0' : '') + maDate.getDate(); 

	}else{
		alert("Please enter a valid date !");
	
		globalvar = textbox; 
		setTimeout("globalvar.focus()",250); 
		//textbox.focus();
		textbox.select();		
	}
  }
}



