// mode = jour ->
// format accepté :
// 8/8/1997
// 8-8-1997
// 08-08-1997
// mode = mois ->
// format accepté :
// 8/1997
// 8-1997
// 08-1997
function check_date(champ,mode)
{
   if(mode=='jour')
   {
	   var pattern = new RegExp("(0?[1-9]|[12][0-9]|3[01])[-/](0?[1-9]|1[012])[-/](19|20)..");
	   dd = getValue(eval('"'+champ+'"'));
	   if(dd.match(pattern))
	   {
		  var date_array = new Array();
		  date_array = dd.split('-');
		  if(date_array.length < 3) date_array = eval("document.getElementById('"+champ+"').value.split('/')");
		  if(date_array.length < 3)
		  {
			alert("Mauvais format de date, employez jour/mois/annee");
			return false;
		  }
		  var day = date_array[0];
	
		  var month = date_array[1] - 1;
		  var year = date_array[2];
	
		  source_date = new Date(year,month,day);
	
		  if(year != source_date.getFullYear() || month != source_date.getMonth() || day != source_date.getDate())
		  {
			alert("Mauvais format de date, employez jour/mois/annee");
			return false;
		  }
	   }
	   else
	   {
			alert("Mauvais format de date, employez jour/mois/annee");
		  return false;
	   }
   }
   else if(mode=='mois')
   {
	   var pattern = new RegExp("(0?[1-9]|1[012])[-/](19|20)..");
	   dd = getValue(eval('"'+champ+'"'));
	   if(dd.match(pattern))
	   {
		  var date_array = new Array();
		  date_array = dd.split('-');
		  if(date_array.length < 2) date_array = dd.split('/');
		  if(date_array.length < 2)
		  {
			alert("Mauvais format de date, employez mois/annee");
			return false;
		  }
	
		  var month = date_array[0] - 1;
		  var year = date_array[1];
	
		  source_date = new Date(year,month);
	
		  if(year != source_date.getFullYear() || month != source_date.getMonth())
		  {
			alert("Mauvais format de date, employez mois/annee");
			return false;
		  }
	   }
	   else
	   {
			alert("Mauvais format de date, employez mois/annee");
		  return false;
	   }
   }
   return true;
}
// check si un champ contient une valeur numerique repondant aux criteres suivants:
// champ		: l'id du champ
// libelle		: texte a afficher devant : n'est pas correct.
// annul		: valeur de remplacement de la valeur erronée ex : 0 ou ''
// entier		: true -> integer, false -> float. pas de test mais formaté
// limit_sup	: limite superieure incluse. mettre '*' pour aucune limite
// limit_inf	: limite inferieure incluse. mettre '*' pour aucune limite
// negatif		: true -> nombre negatif permis
// zero			: true -> valeur nulle permise
// silence		: a true pour aucun affichage
// RETOURNE true si la valeur est bonne, false si non
function check_champ(champ,libelle,annul,entier,limit_sup,limit_inf,negatif,zero,silence)
{
	if(limit_sup-limit_inf<0) return false;
	if(entier)	value=strtoint(getValue(eval('"'+champ+'"')),1);
	else		value=strtofloat(getValue(eval('"'+champ+'"')),1);
	c_zero		=	(zero)?"":"value!=0 && ";
	c_limit_sup	=	(limit_sup=='*')?"":"value <=" + limit_sup + " && ";
	c_limit_inf	=	(limit_inf=='*')?"":"value >=" + limit_inf + " && ";
	c_negatif	=	(negatif)?"":"value >= 0 && ";
	isnum = IsNumeric(value);
	cond = c_zero + c_limit_inf + c_limit_sup + c_negatif;
	if(eval(cond.substr(0,cond.length - 3))) return true;
	else
	{
		if(!silence)	alert(libelle+" n'est pas correct");
		setValue(eval('"'+champ+'"'),annul);
		//setFocus(eval('"'+champ+'"'));
		return false;
	}
}
function setDisabled(id)
{
	eval('document.getElementById("'+id+'").disabled = "disabled"');
}
function setEnabled(id)
{
	eval('document.getElementById("'+id+'").disabled = ""');
}
function setFocus(id)
{
	eval("document.getElementById('"+id+"').focus();");
}
function setVisible(id,oui)
{
	if(oui) eval("document.getElementById('"+id+"').style.display = 'block'");
	else	eval("document.getElementById('"+id+"').style.display = 'none'");
}
function setValue(id, valeur)
{
	eval("document.getElementById('"+id+"').value = '"+valeur+"'");
}
function setVisibleRow(id,oui)
{
	if(oui) eval("document.getElementById('"+id+"').style.display = ''");
	else	eval("document.getElementById('"+id+"').style.display = 'none'");
}
function getValue(id)
{
	return eval("document.getElementById('"+id+"').value");
}
function getIndex(id)
{
	return eval("document.getElementById('"+id+"').selectedIndex");
}
function isChecked(id)
{
	return eval("document.getElementById('"+id+"').checked");
}
function setChecked(id)
{
	eval("document.getElementById('"+id+"').checked = true");
}
function unSetChecked(id)
{
	eval("document.getElementById('"+id+"').checked = false");
}
function setIndex(id, valeur)
{
	return eval("document.getElementById('"+id+"').selectedIndex = '"+valeur+"'");
}
function getIndexValue(id)
{
	return eval("document.getElementById('"+id+"').options[document.getElementById('"+id+"').selectedIndex].text");
}
function IsNumeric(input)
{
   return (input - 0) == input && input.length > 0;
}

function lectnb(snbre,signe) {
	var s=snbre.toString();
	var sign="";
	var nbre="";
	var virg=0;
  for (var p=0; p<s.length; p++) {
		var c=s.charAt(p);
		if(!((c>="0" && c<="9") || c=="-" || c=="+" || c=="." || c=="," || c==" "))
			return "";
		if ((c>="1" && c<="9") || ((c=="0")&&(nbre!=""))) nbre+=c;
		if (((c==",")||(c==".")) && (virg==0)) {
			nbre+=".";
			virg++;
		}
		if ((c=="-")&&(nbre=="")&&(signe==1)) sign="-";
	}
	return (nbre=="")?"0":(sign+nbre);
}

function strtoint(snbre,signe) {
	if (strtoint.arguments.length<2) signe=0;
	return Math.round(parseFloat(lectnb(snbre,signe)));
}

function strtofloat(snbre,signe) {
	if (strtofloat.arguments.length<2) signe=0;
	return Math.round(parseFloat(lectnb(snbre,signe))*10000)/10000;
}

function inttostr(inbre,afficherZero) {
	if (inttostr.arguments.length<2) afficherZero=1;
	inbre=Math.round(parseFloat(inbre));
	var sign="";
	if (inbre<0) {
		sign="-";
		inbre=-inbre;
	}
	var s=inbre.toString();
	var snbre="";
	for (var p=0; p<s.length; p++) {
		var c=s.charAt(s.length-p-1);
		if ((p!=0)&&(p%3==0)) {
			snbre=c+" "+snbre;
		} else {
			snbre=c+snbre;
		}
	}
	if ((snbre=="0")&&(afficherZero==0)) snbre=""; else snbre=sign+snbre;
	return snbre;
}

function floattostr(fnbre,afficherZero,decimals) {
	if (floattostr.arguments.length<2) afficherZero=1;
	if (floattostr.arguments.length<3) decimals=2;
	var sign="";
	if (fnbre<0) {
		sign="-";
		fnbre=-fnbre;
	}
  var m=Math.pow(10,decimals);
	fnbre=Math.round(fnbre*m)/m;
	var ent=Math.floor(fnbre);
	var dec=Math.round((fnbre-ent)*m);
	var sdec=dec.toString();
  while (sdec.length<decimals) sdec="0"+sdec;
  return ((ent==0)&&(dec==0)&&(afficherZero==0))?"":(sign+inttostr(ent)+'.'+sdec);
}


