
//==============================================================
//##
//## Fonctions de bas niveau
//##
//==============================================================

//==============================================================
function LTrim(str)
//==============================================================
{
  var whitespace = new String(" \t\n\r");
  var s = new String(str);

  if (whitespace.indexOf(s.charAt(0)) != -1) {
		var j=0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
			 j++;

		s = s.substring(j, i);
  }
  return s;
}


	
//==============================================================
function RTrim(str)
//==============================================================
{
  var whitespace = new String(" \t\n\r");
  var s = new String(str);

  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
		var i = s.length - 1;       // Get length of string
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
			 i--;

		s = s.substring(0, i+1);
  }

  return s;
}
	
	
//==============================================================
function Trim(str)
//==============================================================
{
 return RTrim(LTrim(str));
}



//==============================================================
function validNum(sVal, min, max)
//==============================================================
{
var ret = false;

if( isNaN(sVal) == false)
{
if(sVal.indexOf("0")==0)
intVal = parseInt(sVal.substring(1));
else
intVal = parseInt(sVal);

if ( (intVal >= min) && (intVal <= max) )
ret = true;
}

return ret;
}






//##############################################################
//##
//## Fonctions de haut niveau (Check)
//##
//##############################################################


//##############################################################
function checkNum( item, min, max, nom )
//##############################################################
{
	if ( Trim(item.value) == "")
	 return true;
	else
	 {

		if( min && max )
		 {
			if( validNum( item.value,min,max) )
				return true;
			else
			 {
				alert("-"+nom+"- doit être compris entre "+min+" et "+max );
				item.focus();
				return false;
			 }
		 }
		else
		 {
			if( isNaN( item.value ) )
			 {
				alert("-"+nom+"- doit être de type numérique !!!" );
				item.focus();
				return false;
			 }
			else
				return true;
		 }
	 }
}




//##############################################################
function checkOblig( item, msg )
//##############################################################
{
	var val;
//	val = Trim(item.value);
	val = item.value;
//window.alert(item.name + ' id :' + item.id + ' = ' +item.value );
	if(item.type == "radio" || item.type == "checkbox")
	 {
	 	// Si c'est un controle de type RADIOBUTTON / CHECKBOX
	 	// il existe plusieurs éléments du même nom ...
	 	
		var elt,i,theform,findif;
		theform = item.form;
		elt = document.forms[ theform.name ].elements;
		findit = false;
		for (i=0;i< elt.length;i++)
		 {
		 	// Parcours donc, l'ensemble des éléments pour rechercher
		 	// celui qui est checké (et qui contient donc, la valeur à 
		 	// prendre en compte)
			if(elt[i].name==item.name && elt[i].checked)
			 {
			 	// c'est le bon élément
			 	findit = true;
			 	val =  Trim(elt[i].value);
			 	break;
			 }
		 }
		 
		if(!findit)
		 	val=""; // pour sortir en erreur (car, aucun n'est checked !)
	 }

	if( ! ( val.length>0 ) )
	 {
		alert( msg );
		if(item.type=="text" || item.type=="textarea") item.select();
	    // si type=hidden et id = 'hdn'+name, c sans doute 1 RTE...
		// je sait pas focuser...
//		if(item.type=="hidden" && item.id=='hdn'+item.name) {
//			if (document.all) {
//				oRTE = frames[item.name].document;
//			} else {
//				oRTE = document.getElementById(item.name).contentWindow.document;
//			}
//			oRTE.focus();
//		} else 		
         item.focus();
		return false;
	 }
	else
		return true;
}





//##############################################################
function checkDate(item,m)
//##############################################################
{
	if ( Trim(item.value) == "")
	 return true;
	else
	 {

		if ((item.value.charAt(2) == "/") && (item.value.charAt(5) == "/") && (item.value.length == 10))
		 {
			var day = item.value.substring(0, 2);
			var month = item.value.substring(3, 5);
			var year = item.value.substring(6, 10);

			if (validNum(day,1, 31) == false)
			 {
				alert( m+" Format de date incorrect!\nEntrez un jour valide");
				item.focus();
				return false;
			 }
			if (validNum(month,1, 12) == false)
			 {
				alert( m+" Format de date incorrect!\nEntre un mois valide");
				item.focus();
				return false;
			 }
			if (validNum(year,1970, 3999) == false)
			 {
				alert(m+" Format de date incorrect!\nEntre une date réaliste!");
				item.focus();
				return false;
			 }
			return true;
		 }

		alert(m+" Format de date incorrect!\nEntrez: dd/mm/yyyy");
		item.focus();
		return false;
	 }
}
