/**************************************/
/* Tabulation automatique IE-Netscape */
/**************************************/
/* Usage:
 * <INPUT TYPE="text" size="2" MAXLENGTH="2" name="DANAIJJ" onKeyUp="return autoTab(this,DANAIMM, 2);">
 * <INPUT TYPE="text" size="2" MAXLENGTH="2" name="DANAIMM">
 */
 if (window.Event) /* Pour netscape 4 */
  {
    document.captureEvents(Event.KEYPRESS);
  }
function autoTab(obj,nextobj,mlength)
  {
    /*if (autoTab.arguments.length == 2)
      mlength=obj
      a terminer :-D */
    if(!mlength)
      {
        mlength = obj.size;
      }
    if(obj.value.length>=mlength)
      {
        obj.value = obj.value.substr(0,mlength);
	      nextobj.focus();
	    }
  }

/*******************************************/
/* Gestion des ROLL-OVER                   */
/*******************************************/

  function img_act(imgName)
    {
      imgOn = eval(imgName + "on.src");
      document[imgName].src = imgOn;
    }

  function img_inact(imgName)
    {
      imgOff = eval(imgName + "off.src");
      document [imgName].src = imgOff;
      }
// ===============================================================================================
// checkNumber(field) : check if field value is a number and focus the field with a warning if not
//
// PURPOSE: Check value of number fields
// IN: aField - the name of the field containing the number
// RETVAL: true/false
// ===============================================================================================
function checkNumber(aField,errMsg){
  if(isNaN(aField.value)){
    alert(errMsg);
    aField.value = '';
    aField.focus();
    return false;
  }
  return true;
}

// ----------------------------------
// isEmpty (s)
// ----------------------------------
// Retourne true si le champ s est vide.

function isEmpty(s) {
	return ((s == null) || (s.length == 0));
}


// ----------------------------------
// isInteger2 (s [,eok])
// ----------------------------------
// Retourne true si tous les caractères du champ s sont des chiffres.

function isInteger2 (s) {
  var i;


	if(isEmpty(s)) {
		if(isInteger2.arguments.length == 1) {
     	return (false);
		} else {
			return (isInteger2.arguments[1] == true);
		}
	}

  for (i = 0; i < s.length; i++) {
	  var c = s.charAt(i);
	  if((c < "0") || (c > "9")) return (false);
  }

  return (true);
}



// ----------------------------------
// isRadioChecked(myField,errMsg)
// ----------------------------------
// Vérifie si on a bien coché *un des radio* du champs
// IN:  Le radio à tester (ex: document.monForm.monRadio)
//      Le message d'erreur
// OUT: True si on a coché une case
//      False sinon + alert de "errMsg"
// IMPORTANT: les radio de longueur 1 (une seule case) posent problème avec ce genre de script (myField.length)!!!

    function isRadioChecked(myField,errMsg)
      {
        //On boucle sur le nombre de case
        for (i=0;i<myField.length;i++)
          {
            //On teste si la case en cours est cochée
            if (myField[i].checked==true)
              {
                //Si oui
                return true;
              }
          }
        //Si non
        if (errMsg.length>0)
          alert(errMsg);
        return false;
      }

// ----------------------------------
// unCheck(myField)
// ----------------------------------
// Décoche tous les champs d'un radio
// IN:  Le radio à décocher
// IMPORTANT: les radio de longueur 1 (une seule case) posent problème avec ce genre de script (myField.length)!!!

    function unCheck(myField)
      {
        //On boucle sur le nombre de case
        for (i=0;i<myField.length;i++)
          {
            //On décoche
            myField[i].checked=false;
          }
        return;
      }


// ----------------------------------
// isSelected(myField,errMsg)
// ----------------------------------
// Vérifie si on a bien choisi une option avec valeur != "" dans un <SELECT>
// IN:  Le select à tester (ex: document.monForm.monSelect)
//      Le message d'erreur
// OUT: True si on a choisi une option valable
//      False sinon + alert de "errMsg"

    function isSelected(myField,errMsg)
      {
        if (myField[myField.selectedIndex].value=="")
          {
            myField.focus();
            if (errMsg.length>0)
                alert(errMsg);
            return false;
          }
        return true;
      }

/*****************************************
/* function isNumeric(strString)         *
/**************************************************************/
/* Vérifie si strString est numérique                         */
/* strValidChars est la liste des charactères acceptés        */
/**************************************************************/
function isNumeric(strString)
   //  check for valid numeric strings
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

// ---------------------------------------------
// function checkField(myField,errMsg,isAmount)
// ---------------------------------------------
// Vérifie si un champs obligatoire est remplis. Affiche errMsg sinon. Ajoute ",00" si isAmout == true
// IN:  Le champs obligatoire (ex: document.monForm.monChamps)
//      Le message d'erreur
//      true s'il faut ajouter ",00"
// OUT: True si le champs est ok
//      False sinon + alert de "errMsg"

    function checkField(myField,errMsg,isAmount)
      {
        if (myField.value=="")
          {
            myField.focus();
            if (errMsg.length>0)
              alert(errMsg);
            return false;
          }
        if (isAmount)
          {
            //on vérifie si on a pas de caractère non admis ex:a,z,e,r,t,*,-, ...
            if (!checkEuro(myField))
              {
                if (errMsg.length>0)
                  {
                    alert(errMsg);
                  }
                return false;
              }
          }
        return true;
      }

/********************************************/
/* function isInteger(myField,errMsg[,eOk]) */
/********************************************/
/* Renvoie true:
 *  si la valeur du champs 'myField' est un nombre
 *  si le champs est vide ET que 'eOk' == true
 *  false sinon
 */

function isInteger(myField,errMsg) {

 s = myField.value; //récupère la valeur du champs
 s = trim(s);
 if(isEmpty(s)) {
  if(isInteger.arguments.length == 2) {
   alert(errMsg);
   myField.focus();
   return (false);
  } else {
   return (isInteger.arguments[2] == true);
  }
 }

 for (var i = 0; i < s.length; i++) {
  var c = s.charAt(i);
  if((c < "0") || (c > "9"))
    {
      myField.focus();
      alert(errMsg);
      return (false);
    }
 }

 return (true);
}

function isEmpty(s) {
 return ((s == null) || (s.length == 0));
}

// ----------------------------------
// function checkDate(myFields[,errMsg])
// ----------------------------------
// Vérifie si une date est valide
// IN:  Une *chaine* contenant le début du nom des champs contenant le jour, mois, année
//      exemple: DANAIJJ, DANAIMM, DANAIYY ==> "DANAI"
//      Le message d'erreur
// OUT: True si la date est ok
//      False sinon + alert de "errMsg" + mise à blanc des champs

    function checkDate(myFields,errMsg)
      {
        myDay=eval(myFields+"JJ");
        myMonth=eval(myFields+"MM");
        myYear=eval(myFields+"AA");

        //var errMsg="Veuillez entrer une date valide...";
        if(checkDate.arguments.length == 2) {
          errMsg=checkDate.arguments[1]
        } else {
          errMsg="";
        }

        //Test si pas de champs vide
        //!!!Attention au "defaults" de la fonction isDate...
        if ((myDay.value=="")||(myMonth.value=="")||(myYear.value==""))
          {
            if (errMsg.length>0)
              alert(errMsg);
            myDay.focus();
            return false;
          }

        //Test date
        if (!isDate(myDay.value,myMonth.value,myYear.value))
          {
            myDay.focus();
            if (errMsg.length>0)
              alert(errMsg);
            myDay.value="";
            myMonth.value="";
            myYear.value="";
            return false;
          }
        return true;
      }


/********************************************/
/* function isDate (day,month,year)         */
/********************************************/
/* Renvoie true:
 *  si la date est bonne :-D
 *  false sinon
 */
/*
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function isDate (day,month,year) {
// checks if date passed is valid
// will accept dates in following format:
// isDate(dd,mm,ccyy), or
// isDate(dd,mm) - which defaults to the current year, or
// isDate(dd) - which defaults to the current month and year.
// Note, if passed the month must be between 1 and 12, and the
// year in ccyy format.
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false
}
*/
// ----------------------------------
// ***OLD*** isDate	(dd, mm, yyyy)
// ----------------------------------
// Retourne true si la date est valide.

function isDate(dd, mm, yyyy) {
	if (!isInteger2(dd) || !isInteger2(mm) || !isInteger2(yyyy)) {	return (false);	}

	if (dd < 1 || dd > 31) { return (false); }
	if (mm < 1 || mm > 12) { return (false); }
	if ((yyyy.toString()).length != 4) { return (false); }
	if ((mm==4 || mm==6 || mm==9 || mm==11) && dd==31) { return (false); }

	if (mm == 2) {
		var isleap = (yyyy % 4 == 0 && (yyyy % 100 != 0 || yyyy % 400 == 0));
		if (dd > 29 || (dd==29 && !isleap)) {
			return false;
		}
	}

	return (true);
}

// ----------------------------------
// getStandardDate(dd, mm, yyyy)
// ----------------------------------
// Retourne une date au format standard (yyyymmdd).

function getStandardDate(dd, mm, yyyy) {
	if (!isDate(dd, mm, yyyy)) {
		return (false);
	} else {
		if ((dd.toString()).length == 1) { dd = '0' + dd;	}
		if ((mm.toString()).length == 1) { mm = '0' + mm;	}

		return (yyyy.toString() + mm.toString() + dd.toString());
	}
}


// ----------------------------------
// getStandardHour(ss, mm, hh)
// ----------------------------------
// Retourne une heure au format standard (hhmmss).

function getStandardHour(ss, mm, hh) {
	if (!isSecond(ss) || !isMinute(mm) || !isHour(hh)) {
		return (false);
	} else {
		if ((ss.toString()).length == 1) { ss = '0' + ss;	}
		if ((mm.toString()).length == 1) { mm = '0' + mm;	}
		if ((hh.toString()).length == 1) { hh = '0' + hh;	}

		return (hh.toString() + mm.toString() + ss.toString());
	}
}


// ----------------------------------
// compareDate(date1, date2, sign)
// ----------------------------------
// Comparaison de deux dates au format standard.
// Le champ sign détermine le type de comparaison, et peut avoir
// les valeurs suivantes: "<", "<=", ">", ">=", "=".

function compareDate(date1, date2, sign) {
	if (date1.length!=8) { return (false); }
	if (date2.length!=8) { return (false); }

	switch (sign) {
		case '<' :
			if (date1 >= date2) { return (false); }
			break;
		case '<=' :
			if (date1 > date2)  { return (false); }
			break;
		case '>' :
			if (date1 <= date2) { return (false); }
			break;
		case '>=' :
			if (date1 < date2)  { return (false); }
			break;
		case '=' :
			if (date1 != date2) { return (false); }
			break;
		default :
			return (false);
			break;
	}

	return (true);
}


// ----------------------------------
// getSystemDate()
// ----------------------------------
// Retourne la date système au format standard (yyyymmdd).

function getSystemDate() {
	return (getStandardDate(getCurrentDay(), getCurrentMonth(), getCurrentYear()));
}


// ----------------------------------
// getSystemTime()
// ----------------------------------
// Retourne l'heure système au format standard (hhmm).

function getSystemTime() {
	var hh = getCurrentHours();
	var mm = getCurrentMinutes();
	var ss = getCurrentSeconds();
	return (hh.toString() + mm.toString() + ss.toString());
}


// ----------------------------------
// getCurrentYear()
// ----------------------------------
// Retourne l'année courante.

function getCurrentYear() {
	var today = new Date();
	today = today.getYear();
	return (today < 1900 ? 1900 + today : today);
}


// ----------------------------------
// getCurrentMonth()
// ----------------------------------
// Retourne le mois de l'année courante (01-12).

function getCurrentMonth() {
	var today = new Date();
	today = today.getMonth() + 1;
	return (today < 10 ? '0' + today : today);
}


// ----------------------------------
// getCurrentDay()
// ----------------------------------
// Retourne le jour du mois courant (01-31).

function getCurrentDay() {
	var today = new Date();
	today = today.getDate()
	return (today < 10 ? '0' + today : today);
}


// ----------------------------------
// getCurrentHours()
// ----------------------------------
// Retourne l'heure du jour courant (00-23).

function getCurrentHours() {
	var today = new Date();
	today = today.getHours();
	return (today < 10 ? '0' + today : today);

}


// ----------------------------------
// getCurrentMinutes()
// ----------------------------------
// Retourne le nombre de minutes de l'heure courante (00-59).

function getCurrentMinutes() {
	var today = new Date();
	today = today.getMinutes();
	return (today < 10 ? '0' + today : today);
}


// ----------------------------------
// getCurrentSeconds()
// ----------------------------------
// Retourne le nombre de secondes de la minute courante (00-59).

function getCurrentSeconds() {
	var today = new Date();
	today = today.getSeconds();
	return (today < 10 ? '0' + today : today);
}

