///////////////////////////////////////////////////////////////////////////////
// inc_verification_form.js - 
// 	Bibliotheques de fonctions Javascript d'aide utilisee par ma fonction
// 	de verification de formulaires "verifie_le_form()".
//		(derniere modification le 03/03/2008)
//		- ...
///////////////////////////////////////////////////////////////////////////////


// VARIABLE DECLARATIONS

var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

// whitespace characters
var whitespace = " \t\n\r";

// decimal point character differs by language and culture
var decimalPointDelimiter = "."

var defaultEmptyOK = false


function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}


function isWhitespace (s)
{   var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}


function isNum(s)
{
 if (isEmpty(s)) return true;
 var i =0,r = true;
 for (;i<s.length;i++){
  r &= ((s.charAt(i)>='0') && (s.charAt(i)<='9'))
 }
 return r;
}

/* old
function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    if (isWhitespace(s)) return false;
    var i = 1;
    var sLength = s.length;
    while ((i < sLength) && (s.charAt(i) != "@"))
    {  if ( (s.charAt(i) == ";") || (s.charAt(i) == " ")) return false;
       i++
    }
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    while ((i < sLength) && (s.charAt(i) != "."))
    {  if ( (s.charAt(i) == ";") || (s.charAt(i) == " ")) return false;
       i++
    }
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}
*/

// Nouvelle version 03/03/2009 :

function isEmail(s) {
	if (isEmpty(s)) {
		if (isEmail.arguments.length == 1) {
			return defaultEmptyOK;
		} else {
			return (isEmail.arguments[1] == true);
		}
	}
	if (isWhitespace(s)) {
		return false;
	}
	var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,}$/;
	var result = ((reg.exec(s)!=null));
	if(result==false) {
		// email n'est pas valide
		return false;
	} else {
		// email est valide
		return true;
	}
}


function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}


function getRadioButtonValue (radio)
{   for (var i = 0; i < radio.length; i++)
    {   if (radio[i].checked) { break }
    }
    return radio[i].value
}


function getSelectValue (monSelect) {
  for (var i = 0; i < monSelect.options.length; i++) {
    if (monSelect.options[i].selected) { break }
  }
  return monSelect.options[i].value
}


function testSiPasVide( monElement ) {
  if ( monElement.length == 0 )
    return 0 ;
  return 1 ;
}


function StringOfDigits( theString ) {
	var	validDigits	=	"0123456789";
	var	i			=	0;
	if ( theString.length == 0 )
		return false;	// blank entry is not a string of digits
	for( i = 0; i < theString.length; i++ )	{
		var	thisChar	=	theString.charAt(i);
		if ( validDigits.indexOf( thisChar ) == -1 )	{
			return false;
		} // end if
	} // end for
	return true;
}


function ValidateInteger( theElement )	{
	if ( theElement.value.length == 0 )
		return false;	// blank entry is not a valid integer
	if ( theElement.value.charAt(0) == '-' )	{
		return StringOfDigits( theElement.value.substring( 1, theElement.value.length - 1 ) );
	} else	{
		return StringOfDigits( theElement.value );
	} // end if
} 

	
////////////////////////////////////////////////////////////////////////////////
//	filtre_caraczarb_word ( leChamp )
//		Fonction qui lit le contenu d'un champ, et remplace tous les caracteres 
//		"biscornus" par leur equivalent normaux :
//		
//		- "quote" (guillemet) typographiques propres a Word, remplaces par un 
//		  caractere quote normal (les quotes de word apparaissent quand un texte 
//		  est copies-colles depuis word vers MSIE)
//		
//		- "oe" colles propres a Word, remplaces par les deux caracteres normaux 
//		  o+e (le oe colle de word apparait quand un texte est copie-colle depuis 
//		  word vers MSIE)
//		
//		- "3 petits points colles" propre a Word, remplaces par 3 points separes
//		  ... (le "3 petits points colles" de word apparait quand un texte est 
//		  copie-colle depuis word vers MSIE)
//		
//		Cette fonction permet de resoudre un bug bizarre dans MSIE : Dans un 
//		tag "form", si on indique l'option ENCTYPE="multipart/form-data", la 
//		soumission d'un champ TEXT ou TEXTAREA plantera dans le cas ou on 
//		copie-colle un texte contenant les caractere biscornus precedent depuis 
//		Word (guillemet typographique, oe colle) ... (IE ne soumet pas le form 
//		et reaffiche la page avec les champs réinitialisés).
//
function filtre_caraczarb_word(leChamp) {
	// Init :
	var texte = leChamp.value;
	var newTexte = texte;
	//
	// Remplacer les quotes words par des quotes normaux :
	var leCarCible = String.fromCharCode(8217); // Quote typographique de Word
	var leCarDeRempl = "'";	// quote normal qui passe partout
	var maRegexp = new RegExp(leCarCible, "g") ;
	newTexte = newTexte.replace(maRegexp, leCarDeRempl);
	//
	// Remplacer les oe colles par des o+e :
	var leCarCible = String.fromCharCode(339); // oe colles (word)
	var leCarDeRempl = "oe";	// remplacement
	var maRegexp = new RegExp(leCarCible, "g") ;
	newTexte = newTexte.replace(maRegexp, leCarDeRempl);
	//
	// Remplacer les "3 petits points colles" par 3 points separes (… -> ...) :
	var leCarCible = String.fromCharCode(8230); // 3 petits points colles (word)
	var leCarDeRempl = "...";	// remplacement
	var maRegexp = new RegExp(leCarCible, "g") ;
	newTexte = newTexte.replace(maRegexp, leCarDeRempl);
	//
	// Remplacer les "€" par des "&euro;" :
	var leCarCible = '€';
	var leCarDeRempl = "&euro;";	// remplacement
	var maRegexp = new RegExp(leCarCible, "g") ;
	newTexte = newTexte.replace(maRegexp, leCarDeRempl);
	//
	// Remplacer les grands "–"  (ascii 150) par des "-" normaux :
	var leCarCible = '–'; // ATTENTION! Ne pas l'editer !!!
	var leCarDeRempl = '-';	// remplacement
	var maRegexp = new RegExp(leCarCible, "g") ;
	newTexte = newTexte.replace(maRegexp, leCarDeRempl);
	//
	// Mettre le champ a jour :
	leChamp.value = newTexte;
		//alert ( newTexte ) ; // debug
}


