var checkAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcçdefghijklmnopqrstuvwxyzèéêùûà-äëüï/ '";
var checkCodeCpta = "0123456789 ";
var checkNum = "0123456789";
var checkNumTel = "0123456789- ";
var checkAlphaNum = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcçdefghijklmnoôöpqrstuvwxyzèéêùûà-äëüï/ 0123456789'+";
var checkAlphaNum2 = "ÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÀÁÂÃÄÅÆÇ";
var checkAlphaNumMDT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcçdefghijklmnoôöpqrstuvwxyzèéêùûà-äëüï/ 0123456789'°*";
var checkDept = "ABab";
var checkAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

function checkStrChars (toCheck, allowedChars)
{
  var allValid = true;
  for (i = 0;  i < toCheck.length;  i++)
  {
    ch = toCheck.charAt(i);
    for (j = 0;  j < allowedChars.length;  j++)
      if (ch == allowedChars.charAt(j))
        break;
    if (j == allowedChars.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

function isEmptyString (str)
{
   var exp = /[^ ]/ ;
   return !(exp.exec(str) != null);
}

function isAlphabetic (str)
{
  return checkStrChars (str, checkAlpha);
}

function isAlphabet (str)
{
  return checkStrChars (str, checkAlphabet);
}

function isAlphaNum (str)
{
  return checkStrChars (str, checkAlphaNum);
}
function isNonMajax(str) 
// les seul caractères refusé sont les majuscules accentuées
// utilisée pour les champs sur lesquels on applique pas de requete sql contenant un 'like' à cause du caractère %
{
  return !checkStrChars (str, checkAlphaNum2);
}

function isAlphaNumMDT (str)
{
  return checkStrChars (str, checkAlphaNumMDT);
}

function isDept (str)
{
  return checkStrChars (str, checkDept);
}

function isNumeric (str)
{
  return checkStrChars (str, checkNum);
}

function isNumTel (str)
{
  return checkStrChars (str, checkNumTel);
}

function isCodeCpta (str)
{
  return checkStrChars (str, checkCodeCpta);
}

// revoie vrai si la chaine est de la forme HH:MM
// sinon renvoie faux
function isHeureValide(uneChaine)
{
	var exp = /^([01][0-9]|2[0-3]):[0-5][0-9]$/ ;
	if(exp.exec(uneChaine) == null)
	{
		return false ;
	}
	else
	{
		return true ;
	}
}
// Pour gérer les cas d'erreurs à la validation
// Méthode qui éclaire le champ pour signaler une erreur (l'entoure de jaune)
function highlight(champ)
{
	if (champ.style.backgroundColor != "#ffff66")
	{ // si le champs était deja jaune il ne faut pas sauvegarder la couleur
		champ.style.savebackgroundColor = champ.style.backgroundColor;
  		champ.style.backgroundColor = "#ffff66";
  	}
}
// Méthode qui 'déséclaire' le champ (lui enlève la couleur jaune)
function unhighlight(formulaire)
{	
	for (var i=0 ; i<formulaire.elements.length ; i++)
  	{
  		// on ne veut pas changer le look des 'faux champs input' définis comme suit : <INPUT type="text" class="fauxInput"...
    	if (formulaire.elements[i].type != "text" || formulaire.elements[i].className != "fauxInput")
	  	{
	  		if (formulaire.elements[i].style.savebackgroundColor != null)
    		{
    			formulaire.elements[i].style.backgroundColor = formulaire.elements[i].style.savebackgroundColor;
    		}
    	}
    } 	
}

//*************************************************************************************************************
// ATTENTION : à l'occasion, faire les modifs nécessaires pour pouvoir virer highlight.js et highlightChamp.js 
//*************************************************************************************************************
function unhighlightChamp(champ)
{
	champ.style.backgroundColor = "white";
}

/* A VOIR...
function isURLSite(uneChaine)
{
	var exp = /^http:\/\/[A-Za-z0-9_.-]*[A-Za-z0-9_-]+\.[A-Za-z]{2,5}$/ ;
	if (exp.exec(uneChaine) == null)
		return false ;
	else
		return true ;
}
*/
function isTelephone(chaine)
{
	var exp = /^([0-9]{2}[-/. ]{1}){5}[0-9]{2}$/ ;
	if (exp.exec(chaine) == null)
		return false ;
	else
		return true ;
}

function isEmail(chaine)
{
	var exp = /^[a-z0-9-\._]+@([a-z0-9-_]+\.)+[a-z]+$/ ;
	if (exp.exec(chaine) == null)
		return false ;
	else
		return true ;
}