
//===============================================================================
// Objet         :   Fonctions de manipulation de chaînes de caractères.
// Auteur        :   Laurent Ains
// Création      :   02/04/2000
// Modifications : - 10/04/2000 (Laurent Ains) [LA01]
// Bugs          : - N/A
// Notes         : - Ce fichier peut être inclus par "server-side include" en ASP
//'===============================================================================

//-------------------------------------------------------------------------------
// Objet         :   Renvoie une chaîne épurée des espaces de début et de fin.
// Création      :   02/04/2000 (Laurent Ains)
// Modifications : - N/A
// Paramètre     : - la chaîne à traiter.
// Renvoie       : - la chaîne épurée.
// Bugs          : - N/A
// Notes         : - N/A
//-------------------------------------------------------------------------------

function JSC_strTrim_String(str) {
	str=str.replace(/^\s+/g,"");
	str=str.replace(/\s+$/g,"");
	return str;
}

//-------------------------------------------------------------------------------
// Objet         :   Détermine si une chaîne est numérique.
// Création      :   02/04/2000 (Laurent Ains)
// Modifications : - N/A
// Paramètres    : - la chaîne à tester,
//                 - un booléen indiquant si la virgule est considérée comme
//                   séparateur décimal.
// Renvoie       : - true si la chaîne est numérique,
//                 - false sinon.
// Bugs          : - N/A
// Notes         : - N/A
//-------------------------------------------------------------------------------

function JSC_isNumber_String(str,hasComma) {
	str=JSC_strTrim_String(str);                                                // Enlevons les espaces inutiles !
	intFCT_virgules=0;                                                          // Nombre de séparateurs décimaux trouvés

	// On accepte les caractères "+" et "-" uniquement en début de chaîne
	if (str.charAt(0)=="-" || str.charAt(0)=="+")
		str=str.substring(1,str.length);                                        // On se débarasse du signe

	for (i=0 ; i<str.length ; i++)
		if (str.charAt(i)=="." || (hasComma && str.charAt(i)==","))
			intFCT_virgules++;                                                  // Et un séparateur décimal, un !
		else
			if (str.charAt(i)<"0" || str.charAt(i)>"9")                         // Pas numérique ?
				return false;                                                   // -> ce n'est pas un nombre
	if (intFCT_virgules>1)                                                      // Plus d'un séparateur décimal ?
		return false;                                                           // -> ce n'est pas un nombre
	return true;
}

//-------------------------------------------------------------------------------
// Objet         :   Détermine si une chaîne est une adresse électronique
//                   sémantiquement valide.
// Création      :   02/04/2000 (Laurent Ains)
// Modifications : - 10/04/2000 (Laurent Ains) [LA01]
// Paramètres    : - la chaîne à tester.
// Renvoie       : - true si la chaîne est une adresse électronique valide,
//                 - false sinon.
// Bugs          : - N/A
// Notes         : - Ne teste pas si l'adresse correspond effectivement à un
//                   individu !
//                 - Dans les commentaires, le symbole * représente zéro ou
//                   plusieurs caractères quelconques.
//-------------------------------------------------------------------------------

function JSC_isEmail_String(str) { 
//---[+LA01]---------------------------------------------------------------------
// Ces caractères (invalides) avaient été oubliés...

	if (str.indexOf("'")!=-1)                                                   // "'" refusé
		return false;
	if (str.indexOf(" ")!=-1)                                                   // " " refusé
		return false;
	if (str.indexOf('"')!=-1)                                                   // '"' refusé
		return false;
	if (str.indexOf("#")!=-1)                                                   // "#" refusé
		return false;
	if (str.indexOf("(")!=-1)                                                   // "(" refusé
		return false;
	if (str.indexOf(")")!=-1)                                                   // ")" refusé
		return false;
	if (str.indexOf("/")!=-1)                                                   // "/" refusé
		return false;
	if (str.indexOf("\\")!=-1)                                                  // "\" refusé
		return false;
	if (str.indexOf("?")!=-1)                                                   // "?" refusé
		return false;
	if (str.indexOf(":")!=-1)                                                   // ":" refusé
		return false;
	if (str.indexOf(";")!=-1)                                                   // ";" refusé
		return false;
	if (str.indexOf("+")!=-1)                                                   // "+" refusé
		return false;
	if (str.indexOf("=")!=-1)                                                   // "=" refusé
		return false;
	if (str.indexOf("<")!=-1)                                                   // "<" refusé
		return false;
	if (str.indexOf(">")!=-1)                                                   // ">" refusé
		return false;
	if (str.indexOf("*")!=-1)                                                   // "*" refusé
		return false;
	if (str.indexOf("%")!=-1)                                                   // "%" refusé
		return false;
	if (str.indexOf("&")!=-1)                                                   // "&" refusé
		return false;
	if (str.indexOf(".@")!=-1)                                                  // "*.@*" refusé
		return false;
	if (str.indexOf("@.")!=-1)                                                  // "*@.*" refusé
		return false;
	if (".@".indexOf(str.charAt(0))!=-1)                                        // "@*" et ".*" refusés
		return false;
	if (".@".indexOf(str.charAt(str.length-1))!=-1)                             // "*@" et "*." refusés
		return false;
	if (str.search(/@.*@/g)!=-1)                                                // "*@*@*" et "*@@*" refusés
		return false;
	if (str.indexOf("..")!=-1)                                                  // "*..*" refusé
		return false;
	if (str.search(/@.*\./g)==-1)                                               // On refuse s'il n'y a pas de point à droite de "@"
		return false;
	if (str.length>5+str.lastIndexOf("."))                                      // On refuse les extensions de plus de 4 caractères
		return false;
	return true;
}

//-------------------------------------------------------------------------------
// Objet         :   Détermine si une chaîne est un numéro de téléphone
//                   sémantiquement valide.
// Création      :   02/04/2000 (Laurent Ains)
// Modifications : - N/A
// Paramètres    : - la chaîne à tester.
// Renvoie       : - true si la chaîne est un numéro de téléphone valide,
//                 - false sinon.
// Bugs          : - N/A
// Notes         : - N/A
//-------------------------------------------------------------------------------

function JSC_isTel_String(str) {
	if (str.search(/[^0-9\(\)+\-.\/ ]/gi)!=-1)                                    // Y a-t-il des caractères autres que "0" à "9", "(", ")", "+", "-", " " ,"/" et "." ?
		return false;                                                           // -> ce n'est pas un numéro de téléphone
	else
		return true;
}

//-------------------------------------------------------------------------------
// Objet         :   Détermine si une chaîne est vide (ou avec uniquement des
//                   espaces).
// Création      :   02/04/2000 (Laurent Ains)
// Modifications : - N/A
// Paramètres    : - la chaîne à tester.
// Renvoie       : - true si la chaîne est vide,
//                 - false sinon.
// Bugs          : - N/A
// Notes         : - N/A
//-------------------------------------------------------------------------------

function JSC_isEmpty_String(str) {
	return (JSC_strTrim_String(str).length==0);
}

