// pour le formate montant qui ne prend pas de paramètres (gestion des évènements) : inclut par xlog.js
//<script type="text/javascript" language="javascript" src="/commun/js/compatibilite.js"></script>


var checkMontantNum = ".,0123456789"; // caractères autorisés dans un montant
var checkMontantAlpha = " "; // supplément de caractères autorisés dans un montant
var checkMontantSigne = "+-"; // qd on autorise les montants signés
var check = checkMontantAlpha + checkMontantNum ;
var checkSigne = checkMontantAlpha + checkMontantNum + checkMontantSigne ;
var virgule = ",";
var indiceVirgule = 0;

//***************************************************
// permet de savoir si le montant est un montant !!!
//***************************************************
function isMontant (str)
{
  var isValid;
  isValid = verifMontant (str, check);
  return isValid;
}

//*********************************************************
// permet de savoir si le montant est un montant signé !!!
//*********************************************************
function isMontantSigne (str)
{
  var isValid;
  isValid = verifMontant (str, checkSigne);
  return isValid;
}

//***********************************************************
// parcours du montant saisi pour en vérifier les caractères
// + récupération des caractères autres que des chiffres et ,
//***********************************************************
function verifMontant (toCheck, allowedChars)
{
  var montant = toCheck ;
  var allValid = true;
  for (var i = 0;  i < toCheck.length;  i++)
  {
    ch = toCheck.charAt(i);
    for (var j = 0;  j < allowedChars.length;  j++)
    {
      if (ch == allowedChars.charAt(j))
        break;
    }
    if (j == allowedChars.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

function formateXMontant()
{
	var obj;
	if (X_MS)
		obj = event.srcElement;
	else
		obj = this;
	return formateMontant(obj.value);
}
//************************************************************
// formate un montant en centimes 1234567800 en 12 345 678,00
//************************************************************
function formateMontant(str)
{
  var mt, montant;
  var signe;
  var cent;
  var euro;
  var j;
  
  str=""+str;
  signe = (str.length > 0 && (str.charAt(0) == '-' || str.charAt(0) == '+'));
  if (signe)
    mt = str.substr(1, str.length-1);
  else
    mt = str;
    
  cent = "00"+eval(mt) % 100;
  cent = cent.substring(cent.length-2,cent.length);
  euro = ""+Math.floor(eval(mt) / 100);
  
  montant = ""
  if (euro.length > 0)
  {
    j = 0;
    for (i = euro.length-1 ; i >= 0 ; i--)
    {
      if (j % 3 == 0 && j != 0)
        montant =' '+montant;
      montant = euro.charAt(i)+montant;
      j++;
    }
  }
  if (montant == "")
    montant = "0";
    
  if (signe)
    str = "-";
  else 
    str = "";
  return str+montant+"," +cent;
}
//*************************************
// transforme 120,30 ou 120,3 en 12030
// transforme 102 en 10200
// transforme un champ vide en 0
// retourne une chaine
//************************************* 
function montantEnCentimes(mt)
{
	var debut				= 1;
    var car;
	var chaine              ="";
	var signe               = " ";
	var dejaUneVirgule      = false;
	var chiffreApresVirgule = -1;
	
	if (mt == null || mt.length == 0)
		return "0";

	for (var i=0 ; i < mt.length ; i++)
	{
		car = mt.charAt(i);
		switch(car)
		{
			case "+" :
			case "-" :
				if (signe == " ")
					signe = car;
			break;
			case "0": if (debut==1) break;
			case "1":
			case "2":
			case "3":
			case "4":
			case "5":
			case "6":
			case "7":
			case "8":
			case "9":
				debut = 0;
				if (dejaUneVirgule == true)
				{
					if (chiffreApresVirgule < 2)
					{
						chiffreApresVirgule++;
						chaine+= car;
					}
				}
				else
					chaine+= car;
			break;
			case ',':
			case '.':
				debut = 0;
				if (dejaUneVirgule == false)
				{
					dejaUneVirgule      = true;
					chiffreApresVirgule = 0;
				}
			break;
		}
	}
	if (chiffreApresVirgule == -1)
		chaine+="00";
	else
		while (chiffreApresVirgule++ < 2)
			chaine+="0";
	if (signe == "-")
		chaine = signe+chaine;
	return chaine;
}

function montantEnCentimesSans0(mt)
{
	var chaine = montantEnCentimes(mt);
	var chaine2 = "";
	var debut0 = 1;

	for (var i = 0 ; i < chaine.length ; i++)
	{
	  if (chaine.charAt(i) == '0' && debut0==1)    // tant que ce sont des 0 au debut
	  	chaine2 += " ";
	  else
	  {
	  	debut0 = 0;
	  	chaine2 += chaine.charAt(i);
	  }
	}
	return chaine2;
}


// Permet de ne saisir que des caracteres pour les montants et gere 1 virgule pas plus...)
// A appeler comme ca : onKeypress="return onlyMontant(this);"
function onlyMontant(champs)
{
	var touche;
	var ret=false;
	var key = event.keyCode;
	if (key != 0)
	{
		touche = String.fromCharCode(key);
		ret = isMontant(touche);
		if (ret)
		{
			if ( (champs.value.indexOf(".") != -1 || champs.value.indexOf(",") != -1) && (touche == "." || touche == ","))
				return false;
			else
				return true;
		}
	}
	else if (key==8||key==46||key==16||key==37||key==39||key==36)
  		return true;
  return false;
}

function onlyMontantSigne(champs)
{
	var touche;
	var ret=false;
	var key = event.keyCode;
	if (key != 0)
	{
		touche = String.fromCharCode(key);
		ret = isMontantSigne(touche);
		if (ret)
		{
			if ( (champs.value.indexOf(".") != -1 || champs.value.indexOf(",") != -1) && (touche == "." || touche == ","))
				return false;
			else
				return true;
		}
	}
	else if (key==8||key==46||key==16||key==37||key==39||key==36)
  		return true;
  return false;
}


function onlyXMontant(evt)
{
	var obj;
	
	if (X_MS)
		obj = event.srcElement;
	else
		obj = this;

	return onlyMontant(obj);
}


function onlyXMontantSigne(evt)
{
	var obj;
	
	if (X_MS)
		obj = event.srcElement;
	else
		obj = this;

	return onlyMontantSigne(obj);
}


/*function montantEnCentimes(str)
{
   var montant = "" + str;
   var chaineValide = "";
   var indicePoint = montant.indexOf(".") ;
   montant = montant.substring(0,indicePoint) + "," + montant.substring(indicePoint + 1);
   //
   for (var k= 0; k<montant.length; k++)
   {
      // on enlève les points et les espaces du montant saisi
      if ((montant.charAt(k) != " ")&&(montant.charAt(k) != "."))
      {
         chaineValide += monatnt.charAtalert("montant transformé : "+montant);
      }
   }
   alert(montant);
   // on récupère alors un montant sans . et sans espace(s)
   // on regarde où se trouve la virgule
   indiceVirgule = montant.indexOf(virgule);

   // s'il n'y a pas de virgule, on rajoute simplement deux zéros
   if (indiceVirgule == -1)
   {
      // si l'utilisateur n'a rien saisi
      // il faut donc lui rajouter un zero devant le montant
      if (montant == "")
      {
        montant = "0" + montant ;
      }
      else
      {
        montant = montant + "00";
      }
   }

   // s'il y a une virgule, on doit l'enlever
   // et rajouter éventuellement un zéro
   // on considère que 120,   ou 120,303..... sont impossibles
   else
   {
     // on regarde combien de chiffres ont été saisi après la virgule
     if (montant.length - indiceVirgule < 3)
     {
        // un seul chiffre --> on ajoute un zéro
        montant += "0" ;
     }
     // on doit enlever la virgule
     montant = montant.substring(0,indiceVirgule) + montant.substring(indiceVirgule+1); 
   }
   return montant ;
}*/
   