<!--

function popuponclick()
{
 my_window = window.open("message_erreur.php",
    "mywindow","status=1,width=350,height=150");
 	my_window.document.write("<input type='hidden' name='toto' value='c est bon'/>"); 
  //my_window.document.write('<H1>The Popup Window</H1>');   
  //my_window.document.write('<A href="javascript: this.close ();">Close the Popup Window</A>');
  
  
} 

function twValide(nForm,etmsg) {
  // ********************************************
  //  FONCTION UNIVERSELLE POUR FORCER LA SAISIE
  // DES TOUS LES TYPES DE CHAMPS D'UN FORMULAIRE
  // Plus plusieurs validations de champs.
  // ********************************************
  // twValide 2.2 (octobre 2001)
  // Création : Django (Oznog) Blais
  // http://www.trucsweb.com
  //
  // LIBRE DE DROITS À LA CONDITION DE LAISSER
  // CETTE REMARQUE.
  //
  // INSTRUCTION
  // Dans le fichier "valide.htm" ou sur le site à
  // http://www.trucsweb.com/Javascript/
  // (cliquer > Fonction de validation twValide)
  // ********************************************
  // MAJ - Octobre : Ajout des fonctions
  //                 - twValide_courriel()
  //                 - twValide_date()
  //     - Septembre : Ajustement de la fonction
  //                 - twValide_char()
  //                   Validation minimum de caractères
  //     - Septembre : Ajustement d'un bogue.
  //     - Été 2001 : Version 2
  // ********************************************
  // COMPATIBILITÉ testée sur ces navigateurs
  // - Internet Explorer 5.0, 5.5, 6.0 (Win98/2000)
  // - Internet Explorer 3.0, 4.0 (Mac OS7.6+)
  // - Internet Explorer 4.5, 5.0, 6.0 (Mac G4)
  // - Mozilla 0.9.3 (Win98/2000)
  // - Netscape 4.7, 6.0 (Win98/2000)
  // - Communicator 4.0 (Mac OS6+)
  // - Navigator gold 3.0 (Mac OS6+)
  // - Netscape 4.5, 6.0 (Mac G4)
  // - Opera 5.0 (Win98/2000)
  //
  // COMPATIBILITÉ supposée
  // - Internet Explorer 4+ (Win)
  // - Netscape 3+ (Win)
  // - Opera 4+ (Win)
  // - AOL 4+ (Win)
  // ********************************************
  
  // ********************************************
  // Ne rien modifier ci-dessous
  // ********************************************
  // Rajout HM 4/06/03 Sur les listes déroulantes, 
  // ne pas obliger à une sélection si une seule option disponible
  var RdCkOk = false;
  var RdMess = "";
  var CbMess = "";
  var CbCkOk = false;
  var msg = ""
  for (var i=0; i<nForm.elements.length; i++) {
    if (varValid.indexOf(nForm.elements[i].name) == -1 && nForm.elements[i].type != 'submit' && nForm.elements[i].type != 'reset' && nForm.elements[i].type != 'button' && nForm.elements[i].type != 'hidden') {
      if (nForm.elements[i].type == 'select-one') {
        if (nForm.elements[i].selectedIndex == 0 && nForm.elements[i].length>1) {
          msg += "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'select-multiple') {
        if (nForm.elements[i].selectedIndex < 0 && nForm.elements[i].length>1) {
          msg += "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'text') {
        if (nForm.elements[i].value == '') {
          msg += "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'textarea') {
        if (nForm.elements[i].value == '') {
          msg += "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'password') {
        if (nForm.elements[i].value == '') {
          msg += "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'radio') {
        if (nForm.elements[i].checked) {
            RdCkOk = true;
            RdMess = "";
        }
        if (RdCkOk == false) {
          RdMess = "\n         " + nForm.elements[i].title;
        }
      } else
      if (nForm.elements[i].type == 'checkbox'&&CbCkOk == false) {
        if (nForm.elements[i].checked) {
          CbCkOk = true;
          CbMess = "";
        }
        if (CbCkOk == false) {
            CbMess = "\n         " + nForm.elements[i].title;
        }
      } 	
    }
  }
  if (msg.length != 0||RdMess.length != 0||CbMess.length != 0) {
    msg += RdMess + CbMess; 
    msg = etmsg + msg + "\n";
    alert(msg);
    return false;
  }
  else
  {
  	return true;
  }
}
// ********************************************
// FIN DE LA FONCTION twValide()
// ********************************************


// ********************************************
// FONCTION twValide_char()
// ********************************************
function twValide_char(nChamp,nAccepte,nbr) {
  // Ajouter ce code dans la saisie du champs
  //  onBlur="twValide_char(this,'()-0123456789')"
  // Les caractères acceptés peuvent être changés
  var ok = "oui";
  var min = "oui";
  var nChar;
  for (var i=0; i<nChamp.value.length; i++) {
    nChar = "" + nChamp.value.substring(i, i+1);
    if (nAccepte.indexOf(nChar) == "-1") ok = "non";
  }
  if (ok == "non") {
    if (nlang=="fr") 
      alert ("\nEntrée invalide!\nSeul ces caractères sont valides :\n "+nAccepte)
    else 
      alert("\nInvalid entry!\nOnly these characters are accepted:\n "+nAccepte);
    nChamp.focus();
    nChamp.select();
  }
  if (nChamp.value.length < nbr&&nChamp.value.length > 0) min = "non";
  if (min == "non") {
    if (nlang=="fr")
      alert("\nSaisie invalide!\nAssurez-vous d'entrer au moins " + nbr + " caractères.");
    else 
      alert("\nInvalid entry!\nYou must at least " + nbr + " characters.");
    nChamp.focus();
    nChamp.select();
  }
}

// ********************************************
// FONCTION twValide_dc()
// ********************************************
// Auteur : Hervé Ménager Date : 28/10/2003
// Cette fonction valide un champ décimal nChamp de la forme nnnn,nn (nC chiffres dont nD décimales)
function twValide_dc(nChamp,nC,nD,invalmsg) {
	var regex= new RegExp("^(\\d{0," + nC + "}){1}([.]\\d{0," + nD + "}){0,1}$");
	if (!(regex.test(nChamp.value)))
	{
		alert(nChamp.title + invalmsg + nChamp.value);
		return false;
	}
	else
	{
		return true;
	}
}

function AnneeBissex(Annee) {
        // règle :
        // toute les années multiples de 4 sont bissextiles
        // sauf la première année d'un siècle
        // mais la première année d'un millénaire est bissextile
            if ( Annee%4 == 0 ) {
                if ( Annee/1000 == Int(Annee/1000)) {
                    return true;}
                else if ( Annee/100 == Int(Annee/100)) {
                    return false;}
                return true;
            }
            else {
                return false;}
        }

// ********************************************
// FONCTION twValide_date()
// ********************************************
function twValide_date(nDate,nA1,nA2,nFormat,dtinvmsg1,dtinvmsg2,dtinvmsg3) {
  // Ajouter ce code dans la saisie du champs date
  //  onBlur="twValide_date(this,1950,2020,'jj/mm/aaaa')"
  // La date valide doit être entre 1950 et 2020.
  //    vous pouvez changer l'interval.
  // Format valide: (ne pas utiliser d'autre format...
  // - jj/mm/aaaa
  // - mm/jj/aaaa
  // - aaaa/mm/jj
  // Noter que vous devriez indiquer à l'usager le format valide...
  var ok = "oui";
  var nChar;
  var aDate;
  var nJ;
  var nM;
  var nA;
  var jMax = 31;
  nAccepte = "0123456789/";
  if (nDate.value){
  if (nDate.value.length > 0) {
    if (nDate.value.length < 8 || nDate.value.length > 10) ok = "non";
    for (var i=0; i<nDate.value.length; i++) {
      nChar = "" + nDate.value.substring(i, i+1);
      if (nAccepte.indexOf(nChar) == "-1") ok = "non";
    }
    if (ok == "oui") {
      aDate = nDate.value.split("/");
      if (nFormat == "jj/mm/aaaa") { nJ = aDate[0]; nM = aDate[1]; nA = aDate[2];
      } else if (nFormat == "mm/jj/aaaa") { nJ = aDate[1]; nM = aDate[0]; nA = aDate[2];
        } else if (nFormat == "aaaa/mm/jj") { nJ = aDate[2]; nM = aDate[1]; nA = aDate[0]; }
      if ((nJ < 1 || nJ > jMax) || (nM < 1 || nM > 12) || (nA < nA1 || nA > nA2)) ok = "non";
      else {
        if (nM == 2) { 
          if (AnneeBissex(nA) == true) { jMax = 29 } else { jMax = 28 }
        }
        if ((nM == 1 || nM == 3 || nM == 5 || nM == 7 || nM == 8 || nM == 10 || nM == 12)) jMax = 31
        if ((nM == 4 || nM == 6 || nM == 9 || nM == 11)) jMax = 30
        if (nJ < 1 || nJ > jMax) ok = "non";
      }
    }
    if (ok == "non") {
      nDate.focus();
      nDate.select();
        alert (dtinvmsg1 + nFormat + dtinvmsg2 +nA1+ dtinvmsg3 +nA2)
      return false;
    }else return true;
  }
 }
}

function resultt(nTexte){
	alert("coucou"+nTexte);
}

// ********************************************
// FONCTION twCompteur_Texte()
// ********************************************
function twCompteur_Texte(nTexte, nCompteur, nLimite) {
  // Ajouter ce code dans la saisie du champ "textarea"
  // onKeyDown="twCompteur_Texte(this,this.form.compte,2000);"
  // onKeyUp="twCompteur_Texte(this,this.form.compte,2000);"
  // 2000 représente le nombre maximum de caractères accepté
  // Vous devez aussi ajouter une boîte de saisie qui
  // indique le nombre de caractères restant.
  // <input readonly="readonly" type="text" name="compte" value="2000">
  if (nTexte.value.length > nLimite)
    nTexte.value = nTexte.value.substring(0, nLimite);
  else 
    nCompteur.value = nLimite - nTexte.value.length;
}


// ********************************************
// FONCTION twValide_dateComp()
// AUTEUR Hervé Ménager
// Valide le fait que date1 et date2 ont une relation de comparaison opComp
// ********************************************
function twValide_dateComp(date1,date2,opComp,nFormat,dtcpmsg1,dtcpmsg2,dtcpmsg3,dtcpmsg4) {
	// Ajouter ce code dans la saisie du champs date
	//  onBlur="twValide_dateComp(this,2ème date,'=' ou un autre opérateur,'jj/mm/aaaa')"
	// Format valide: (ne pas utiliser d'autre format...
	// - jj/mm/aaaa
	// - mm/jj/aaaa
	// - aaaa/mm/jj
	var date1Comp=0; // date1 au format aaaammjj
	var date2Comp=0; // date2 au format aaaammjj
	var date1Tab=[0,0,0]; // tableau de date1
	var date2Tab=[0,0,0]; // tableau de date2
	var ok = "oui";
	var ok2 = "oui";
	
	var msg_format="";
	
	// 1. transformer les dates au format aaaammjj
		
	date1Tab = date1.value.split("/");
	date2Tab = date2.value.split("/");
	if (nFormat == "jj/mm/aaaa")
	{
		if (parseInt(date1Tab[2])<2000){
			msg_format=msg_format+"Format de date incorrect pour "+date1.value+", requis : jj/mm/aaaa"; 
			ok2="non"
		}
		if (parseInt(date2Tab[2])<2000){
			msg_format=msg_format+"Format de date incorrect pour "+date2.value+", requis : jj/mm/aaaa"; 
			ok2="non"
		}
		date1Comp = parseInt(date1Tab[0]*1) + parseInt(date1Tab[1]*100) + parseInt(date1Tab[2]*10000);
		date2Comp = parseInt(date2Tab[0]*1) + parseInt(date2Tab[1]*100) + parseInt(date2Tab[2]*10000);
	}
	if (nFormat == "mm/jj/aaaa")
	{
		date1Comp = parseInt(date1Tab[1]*1) + parseInt(date1Tab[0]*100) + parseInt(date1Tab[2]*10000);
		date2Comp = parseInt(date2Tab[1]*1) + parseInt(date2Tab[0]*100) + parseInt(date2Tab[2]*10000);
	}
	if (nFormat == "aaaa/mm/jj")
	{
		date1Comp = parseInt(date1Tab[2]*1) + parseInt(date1Tab[1]*100) + parseInt(date1Tab[0]*10000);
		date2Comp = parseInt(date2Tab[2]*1) + parseInt(date2Tab[1]*100) + parseInt(date2Tab[0]*10000);
	}
	// 2. comparer les dates
	if (opComp == "=")
	{
		if (date1Comp!=date2Comp)
		{
			ok = "non";
		}
	}
	if (opComp == "<")
	{
		if (date1Comp>=date2Comp)
		{
			ok = "non";
		}
	}
	if (opComp == ">")
	{
		if (date1Comp<=date2Comp)
		{
			ok = "non";
		}
	}
	if (opComp == "<=")
	{
		if (date1Comp>date2Comp)
		{
			ok = "non";
		}
	}
	if (opComp == ">=")
	{
		if (date1Comp<date2Comp)
		{		
			ok = "non";
		}
	}
	// 3. si les dates ne vérifient pas la relation, envoyer un message d'alerte
	
	if(ok2=="non"){
			alert (msg_format);
			date1.focus;
			date1.select;
			date2.select;
			return false;
	}else {
			if (ok=="non")
			{
				alert (dtcpmsg1 + opComp + dtcpmsg2 + date1.value + dtcpmsg3 + date2.value  + dtcpmsg4);
				date1.focus;
				date1.select;
				date2.select;		
				return false;
			}
			else return true;
	}
}

// ********************************************
// FONCTION twValide_dateExpeditionDelai()
// AUTEUR Hervé Ménager
// Valide le fait que date1 (date d'expédition) et date2 (date du jour) sont telles que date1>=date2+nbJours
// dans le cas contraire un message mess est affiché, et la soumission n'est pas validée 
// ********************************************
function twValide_dateExpeditionDelai(dateExped,dateLim,nbJours,mess,nFormat) {
	// Ajouter ce code dans la saisie du champs date
	//  onBlur="twValide_dateComp([date d'expédition],[date du jour],[nombre minimal de jours d'avance],[message d'information])"
	// Format valide: (ne pas utiliser d'autre format...
	// - jj/mm/aaaa
	// - mm/jj/aaaa
	// - aaaa/mm/jj
	var date1Comp=0; // date1 au format aaaammjj
	var date2Comp=0; // date2 au format aaaammjj
	var date1Tab=[0,0,0]; // tableau de date1
	var date2Tab=[0,0,0]; // tableau de date2
	var ok = "oui";
	// 1. transformer les dates au format aaaammjj
	date1Tab = dateExped.value.split("/");
	if (nFormat == "jj/mm/aaaa")
	{
		date1Comp = parseInt(date1Tab[0]*1) + parseInt(date1Tab[1]*100) + parseInt(date1Tab[2]*10000);
	}
	if (nFormat == "mm/jj/aaaa")
	{
		date1Comp = parseInt(date1Tab[1]*1) + parseInt(date1Tab[0]*100) + parseInt(date1Tab[2]*10000);
	}
	if (nFormat == "aaaa/mm/jj")
	{
		date1Comp = parseInt(date1Tab[2]*1) + parseInt(date1Tab[1]*100) + parseInt(date1Tab[0]*10000);
	}
	// 2. comparer les dates
		if (date1Comp<=dateLim)
		{
			ok = "non";
		}
	// 3. si les dates ne vérifient pas la relation, envoyer un message d'alerte
	if (ok=="non")
	{
		alert (mess);
		dateExped.focus;
		dateExped.select;
		return false;
	}
	else
	{
		return true;
	}
}

function confirmation(message,ma_valeur){
  if (confirm(message)) {
  return "OK";
  }
  else {
	return "KO";
  }
}


// -->
