/*
'=====================================================================================
' Fichier : /service/Includes/utils/string.js
' Rôle : Fonctions de gestion de chaînes de caractères en JavaScript
' Créé le : 29/01/2001
' Par : NM - DECITRE
' Date et objet Modif :
' 25/09/2001 - CB/DEC - Ajout "<",">" et "|" aux caractères non valides d'une
' adresse mail dans "dec_EmailValide"
' - Correction bug : indexOf commence à 0, et non à 1 !!!
' 26/11/2003 - CB/DEC - Ajout "ã","õ","ñ" aux caractères non valides d'une
' adresse mail dans "dec_EmailValide"
' - Ajout de : "dec_LRTrim", "dec_Trim", "dec_StrOnlyLstCars",
' "dec_StrOnly09", "dec_StrOnly09AZ", "dec_StrOnlyEMail"
' 12/12/2003 - CB/DEC - Utilisation expr. régulière en JS dans fonctions formatage
' 06/05/2004 - CB/DEC - Modif fonction "dec_EmailValide" : Expr Régulière
'=====================================================================================
*/
function dec_EmailValide (Champ_EMail, Champs_EmailFocus)
/*
'// -------
'// Contrôle la validité du format d'une adresse e-mail
'// -------
'// ENTREE : Champ d'un formulaire (du type document.Form.Champ)
'// SORTIE : true, si l'adresse e-mail a un format valide,
'// false sinon (le focus retourne alors sur le champ)
'// -------
*/
{
var strEMail = new String (Champ_EMail.value);
var result;
var strCarOK = '@.';
var strCarPasOK = new String ('àâäãçéèêëìîïòôöõùûüñ &*?!:;,\t#~"^¨%$£?²¤§%*()[]{}<>|\\/`\'');
var strMsgErr = new String();
var tabSplitEmail = new Array ();
var strCarPasOK_AutourArobase = new String ('.');
var boolPartAvArobaseOK = true; // Partie de l'adresse AVANT l'arobase correcte ?
var boolPartApArobaseOK = true; // Partie de l'adresse APRÈS l'arobase correcte ?
if (strEMail.length < 4)
{
strMsgErr = "L'adresse e-mail " + strEMail + " n'est pas assez longue.\n";
result = false;
}
else
result = true;
// Caractères obligatoires dans l'adresse e-mail
var NumCar = 0;
while ((result) && (NumCar < strCarOK.length))
{
if (! (strEMail.indexOf(strCarOK.charAt(NumCar)) >= 0))
{
strMsgErr = "L'adresse e-mail doit obligatoirement comporter le caractère '"+strCarOK.charAt(NumCar)+"'.\n";
result = false;
}
else
NumCar++;
}
// '@' et '.'
//alert ('pos.=' + posLastPt + ' pos@+1=' + parseInt (posArobase+1,10));
if (result)
{
var posArobase = parseInt (strEMail.indexOf('@'),10);
if ((parseInt(posArobase,10) == 0) ||
(parseInt(posArobase,10) != parseInt(strEMail.lastIndexOf('@'),10)) ||
(parseInt(posArobase,10) > parseInt(strEMail.lastIndexOf('.'),10)) ||
(strEMail.charAt(parseInt(posArobase+1,10)) == '.') ||
(strEMail.charAt(parseInt(posArobase-1,10)) == '.') ||
(strEMail.charAt(strEMail.length-1) == '.') ||
(parseInt(strEMail.indexOf ('.'),10) == 0)
)
{
strMsgErr = "La position des '.' et/ou du '@' incorrecte.\n";
result = false;
}
}
// Caractères interdits dans l'adresse e-mail
NumCar = 0;
while ((result) && (NumCar < strCarPasOK.length))
{
if (strEMail.indexOf(strCarPasOK.charAt(NumCar)) >= 0)
{
strMsgErr = "L'adresse e-mail ne peut pas contenir le caractère '"+strCarPasOK.charAt(NumCar)+"'.\n";
result = false;
}
else
NumCar++;
}
// eMail au format W3C
//var regW3CMail = new RegExp ("^(([^<>;()[\]\\.,;:@\"]+(\.[^<>()[\]\\.,;:@\"]+)*)|(\".+\"))@((([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))\.)*(([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))$","i");
if (result)
{
var regMail = new RegExp ("^([0-9a-zA-Z\-]([\-\+\_\w\.]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([\w\+_-]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$");
if (! regMail.test(strEMail))
{
strMsgErr = "Le format de l'adresse e-mail est incorrecte.\n"
+ "Merci de vérifier qu'elle ne comporte pas de caractères accentués, d'espaces, de '<' ou '>'\n"
+ "et que la position des '.' et du '@' sont correctes.\n";
result = false;
}
}
//if ((strEMail == '') || (! regMail.test(strEMail)))
if (! result)
{
if ((typeof(strMsgErr) != "undefined") && (strMsgErr != null) && (strMsgErr != ""))
{
if (typeof(document.getElementById("overDiv")) != 'undefined')
{
if (typeof(Champs_EmailFocus) == "undefined")
{
overlib('
 | Informations |  |
|---|
| | Nous vous remercions de saisir une adresse e-mail valide. |
 |
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE);
}
else
{
if (typeof(document.getElementById(Champs_EmailFocus)) != 'undefined')
{
overlib(' | Informations |  |
|---|
| | Nous vous remercions de saisir une adresse e-mail valide. |
 |
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE);
}
}
}
else
{
alert ('Nous vous remercions de saisir une adresse e-mail valide.');
}
}
else
{
if (typeof(document.getElementById("overDiv")) != 'undefined')
{
if (typeof(Champs_EmailFocus) == "undefined")
{
overlib(' | Informations |  |
|---|
| | Nous vous remercions de saisir une adresse e-mail valide. |
 |
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE);
}
else
{
if (typeof(document.getElementById(Champs_EmailFocus)) != 'undefined')
{
overlib(' | Informations |  |
|---|
| | Nous vous remercions de saisir une adresse e-mail valide. |
 |
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE);
}
else
{
overlib(' | Informations |  |
|---|
| | Nous vous remercions de saisir une adresse e-mail valide. |
 |
',STICKY,BGCOLOR,'#666666',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE);
}
}
}
else
{
alert ('Nous vous remercions de saisir une adresse e-mail valide.');
}
}
if (typeof(Champs_EmailFocus) != "undefined")
{
Champ_EMail.focus();
}
}
return result;
}
function dec_LRTrim (strString)
/*
'// -------
'// Supprime les espaces/tabulation/... de DÉBUT et FIN d'une chaîne
'// Utilise les expressions régulières.
'// -------
'// -------
*/
{
//return strString.replace(/^\s*(.)/gi, "$1").replace(/(.)\s*$/gi, "$1");
return strString.replace(/(^\s*)|(\s*$)/g,'');
}
function dec_Trim (strString)
/*
'// -------
'// Supprime TOUS les espaces/tabulations/... d'une chaîne
'// -------
'// -------
*/
{
return strString.replace(/\s/, "");
}
function dec_StrOnlyLstCars (strString, strLstCars, boolUpperLower)
/*
'// -------
'// Ne garde que certains caractères d'une chaine
'// -------
'// ENTREE
'// strString : Chaine à "filtrer"
'// strLstCars : Chaine contenant la liste des caractères "autorisés"
'// boolUpperLower : 0 : pas de conversion de casse
'// 1 : conversion en majuscules
'// 2 : conversion en minuscules
'// -------
*/
{
strSrc = new String (strString);
if (boolUpperLower == 1)
strSrc = strSrc.toUpperCase();
else if (boolUpperLower == 2)
strSrc = strSrc.toLowerCase();
strOnly = new String("");
strCarsAGarder = new String(strLstCars);
iMaxCar = strSrc.length-1;
for (iNumCar=0; iNumCar<=iMaxCar; iNumCar++)
{
if (strCarsAGarder.indexOf(strSrc.charAt(iNumCar)) >= 0)
{
strOnly = strOnly + strSrc.charAt(iNumCar);
}
}
return strOnly;
}
function dec_StrOnly09 (strString)
/*
'// -------
' Ne garde que les caractères numériques d'une chaine
'// -------
'// -------
*/
{
//return dec_StrOnlyLstCars (strString, "0123456789", 0);
return strString.replace (/[^0-9]/g,"");
}
function dec_StrOnly09Pt (strString)
/*
'// -------
' Ne garde que les caractères numériques et séparateurs décimaux d'une chaine
'// -------
'// -------
*/
{
//return dec_StrOnlyLstCars (strString, "0123456789,.", 0);
return strString.replace (/[^0-9,.]/g,"");
}
function dec_StrOnly09AZ (strString)
/*
'// -------
' Ne garde que les caractères AlphaNum d'une chaine
'// -------
'// -------
*/
{
//return dec_StrOnlyLstCars (strString, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 1);
return strString.replace (/[^A-Z0-9]/gi,"").toUpperCase();
}
function dec_StrOnlyEMail (strString)
/*
'// -------
' Ne garde que les caractères autorisés pour une adresse e-mail
'// -------
'// -------
*/
{
return dec_StrOnlyLstCars (strString, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@.-_", 0);
}
function dec_IsNumeric (strString)
/*
'// -------
' Teste si une chaîne est une valeur numérique valide ou non
'// -------
'// -------
*/
{
return (strString.search (/^[0-9]+([,.][0-9]+)?$/) >= 0);
}
function gestErreur (err)
{
if (err != '')
{
alert(err);
}
}
//-------------------------------------------------------
function dec_Verif_Num_Cde(Champ_NumCde)
{ // vérification du format de la commande
var strNumCde = new RegExp("^[A-Z]{1}[0-9]{7}$","i");
//var strNumCde = "^[A-Z]{1}[0-9]{7}$";
return (Champ_NumCde.match(strNumCde));
}
//------------------------------------------------
// RAZ SID + Reload
function dec_RAZ_SID ()
{
var expDate = new Date()
expDate.setTime(expDate.getTime() + (-1 * 24 * 3600 * 1000))
document.cookie = "SID" + "=" + ";expires=" + expDate.toGMTString()
document.location.replace ('/accueil.aspx?sid=0x0000000000000000');
}
// Fonction de délimitation du text area passé en paramètre avec affichage du décompte du nombre de caractères
var ns6=document.getElementById&&!document.all;
function restrictinput(maxlength,e,placeholder)
{
if (window.event&&event.srcElement.value.length>=maxlength)
return false;
else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength)
{
var pressedkey=/[a-zA-Z0-9\.\,\/]/ ;
if (pressedkey.test(String.fromCharCode(e.which)));
e.stopPropagation();
}
}
function countlimit(maxlength,e,placeholder, display)
{
var theform=eval(placeholder);
var lengthleft=maxlength-theform.value.length;
var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder);
if (window.event||e.target&&e.target==eval(placeholder))
{
if (lengthleft<0)
theform.value=theform.value.substring(0,maxlength);
if (display == 1)
placeholderobj.innerHTML=lengthleft;
}
}
function displaylimit(thename, theid, thelimit, display)
{
var theform=theid!=""? document.getElementById(theid) : thename;
if (display == 1)
var limit_text=''+thelimit+' characteres Maximum.';
else
var limit_text='';
if (document.all||ns6)
document.write(limit_text);
if (document.all)
{
eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)};
eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform,display)};
}
else if (ns6)
{
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true);
document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform,display) }, true);
}
}
//fonction qui detecte si la chaine passé en paramètre ne contient pas de caractère non valide
function dec_caractere_valid(chaine)
{
Result = true;
var regChaine = new RegExp ("^[0-9a-zA-Z \;\.\,\:\'\/\\\-àâäéèêëûüùçôöîï\(\)]+$");
if (!regChaine.test(chaine))
{
Result = false;
}
return Result;
}
//========================================================
// Fonctions pour empecher de COLLER dans certains champs
// ne fonctionne qu'avec la combinaison de touches CTRL+C
// (autant dire que c'est pas génial)
//========================================================
var strOldSaisie = "";
var boolColler = false;
// Teste si la frappe clavier correspond a CTRL+V
function dec_TesteColler(e, val) {
if (boolColler) return false;
if (window.event) {
// IE
if (window.event.type=="keypress") {
if (window.event.ctrlKey && String.fromCharCode(e.which).toUpperCase()=="V") {
strOldSaisie=val;
boolColler=true;
return false;
}
}
} else {
// Netscape
if (e.type=="keypress") {
if (e.ctrlKey && String.fromCharCode(e.which).toUpperCase()=="V") {
strOldSaisie=val;
boolColler=true;
return false;
}
}
}
}
// Si la frappe est CTRL+V => on annule la derniere saisie
function dec_AnnuleColler(name, formname) {
if (boolColler) {
dec_SetFieldValue(eval("document."+formname+"."+name), strOldSaisie);
boolColler=false;
strOldSaisie="";
}
}
// Affecte une valeur a un champ
function dec_SetFieldValue(field, val) {
field.value = val;
return true;
}
//========================================================