	//-****** Formulaire ******
	function calendatp(cal) {
		window.open("../publiq/calendatp.html?cal="+cal, "calw", "left=200,top=200,width=300,height=190,toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=1");
		return false;
	}
	function fosoumettre(contenu) {
		ofo = obtenirLById("fo"+contenu);
		if (! ofo)
			return;
		nbr = ofo.elements.length;
		msg = "";
		for (k = 0; k < nbr && msg == ""; k++)
			if (ofo.elements[k].name == "ctrl") {
				elm = ofo.elements[k - 1];
				
				switch (ofo.elements[k].value) {
				case "qqch":
					if (elm.value.search(/\S+/) == -1)
						switch (mlang) {
							case "fr": msg = "Il faut remplir ce champ de saisie svp"; break;
							case "nl": msg = "Gelieve het volgende verplichte veld in te vullen, aub"; break;
							default: msg = "Please fill in this field";
						}
					break;
				case "datv":
					if (elm.value == "") break;
				case "dat":
					n = elm.value.match(/^(\d{2})\D(\d{2})\D(\d{4})$/);
					if (n != null) {
						n[1] = parseInt(n[1], 10);
						n[2] = parseInt(n[2], 10);
						n[3] = parseInt(n[3], 10);
					}
					if (n == null || n[1]<1 || n[1]>31 || n[2]<1 || n[2]>12 || n[3]<1900 || n[3]>2100)
						switch (mlang) {
							case "fr": msg = "Il faut entrer une date valide svp (jj-mm-aaaa)"; break;
							case "nl": msg = "Gelieve de datum correct in te vullen (dd-mm-jjjj), aub"; break;
							default: msg = "Please type a valid date (dd-mm-yyyy)";
						}
					break;
				case "adrv":
					if (elm.value == "") break;
				case "adr":
					if (elm.value.search(/^\S+@\S+\.\S+$/) == -1)
						switch (mlang) {
							case "fr": msg = "Il faut entrer une adresse e-mail valide svp"; break;
							case "nl": msg = "Gelieve een correct e-mailadres in te vullen aub"; break;
							default: msg = "Please type a valid e-mail address";
						}
					break;
				case "numv":
					if (elm.value == "") break;
				case "num":
					n = parseFloat(elm.value);
					if (isNaN(n))
						switch (mlang) {
							case "fr": msg = "Il faut entrer un nombre svp"; break;
							case "nl": msg = "Gelieve een getal in te vullen, aub"; break;
							default: msg = "Please type a numeric value";
						}
					else
						elm.value = n;
					break;
				case "entv":
					if (elm.value == "") break;
				case "ent":
					n = parseInt(elm.value, 10);
					if (isNaN(n))
						switch (mlang) {
							case "fr": msg = "Il faut entrer un nombre entier svp"; break;
							case "nl": msg = "Gelieve een geheel getal in te vullen, aub"; break;
							default: msg = "Please type a integer";
						}
					else
						elm.value = n;
					break;
				case "posv":
					if (elm.value == "") break;
				case "pos":
					n = parseInt(elm.value, 10);
					if (isNaN(n) || n < 0)
						switch (mlang) {
							case "fr": msg = "Il faut entrer un nombre entier positif ou nul svp"; break;
							case "nl": msg = "Gelieve een positief geheel getal of nul in te vullen, aub"; break;
							default: msg = "Please type a integer >= 0";
						}
					else
						elm.value = n;
					break;
				case "sposv":
					if (elm.value == "") break;
				case "spos":
					n = parseInt(elm.value, 10);
					if (isNaN(n) || n <= 0)
						switch (mlang) {
							case "fr": msg = "Il faut entrer un nombre entier positif svp"; break;
							case "nl": msg = "Gelieve een positief geheel getal in te vullen, aub"; break;
							default: msg = "Please type a integer > 0";
						}
					else
						elm.value = n;
					break;
				case "rsel":
					switch (mlang) {
						case "fr": msg = "Il faut sélectionner un bouton radio svp"; break;
						case "nl": msg = "Gelieve één van de vakjes aan te vinken, aub"; break;
						default: msg = "Please select a radio button";
					}
					for (n = k, n--; ofo.elements[n].type == "radio" && msg; n--)
						if (ofo.elements[n].checked)
							msg = "";
					break;
				case "ssel":
					switch (mlang) {
						case "fr": msg = "Il faut sélectionner une option de la liste déroulante svp"; break;
						case "nl": msg = "Gelieve één van de mogelijkheden in het rolmenu te selecteren, aub"; break;
						default: msg = "Please select a option in the drop-down list";
					}
					if (elm.selectedIndex != 0)
						msg = "";
					break;
				case "csel":
					switch (mlang) {
						case "fr": msg = "Il faut sélectionner au moins une case à cocher svp"; break;
						case "nl": msg = "Gelieve minstens één van de vakjes aan te vinken, aub"; break;
						default: msg = "Please select at least one check box";
					}
					for (n = k, n--; ofo.elements[n].type == "checkbox" && msg; n--)
						if (ofo.elements[n].checked)
							msg = "";
					break;
				}
				if (msg != "") {
					mnro = 0; mnom = ""; mtyp = "";
					for (n = 0; n <= k; n++) {
						if (ofo.elements[n].name != mnom && ofo.elements[n].type != "hidden" && ofo.elements[n].type != "button")
							if (mtyp != "checkbox" || ofo.elements[n].type != mtyp)
								mnro++;
						mnom = ofo.elements[n].name;
						mtyp = ofo.elements[n].type;
					}
					alert(msg + " (n " + mnro + ")");
					if (elm.type != "hidden")
						elm.focus();
				}
			}
		if (msg == "" && typeof(formsoumettre) == "function")
			formsoumettre();	//--- fonction dans la page ?
		if (msg == "") {
			ofo.oper.value = contenu;
			if (ofo.action == "#")
				ofo.action = window.location.href;
			ofo.submit();
		}
	}

