 /*
voir explications.txt ou explications.html
*/
//Fonction de vérification globale de l'ensemble du formulaire
var comdeb;
var nappe = new Array();
var dezero;
var mezele = new Array();
var mazali;
var butte;
var detectns; //comment détecter l'existence d'un calque sans planter NS ?
function attention(ffff){
comdeb = '';
nappe.length = 0;
dezero = 0;
mezele.length = 0;
mazali = 0;
//1) conserver le nom des éléments à controler du formulaire ffff
for (i=0;i<document.forms[ffff].length;i++){
if (document.forms[ffff].elements[i].name && (document.forms[ffff].elements[i].name.indexOf('av') == 0 || document.forms[ffff].elements[i].name.indexOf('aa') == 0)){
mezele[mazali] = document.forms[ffff].elements[i].name;
//cas des cases à cocher et des boutons radio
if (i > 0 && mezele[mazali] == mezele[mazali - 1]){
mezele.length = mezele.length - 1;
}
else{
mazali ++;
}
}
}
//2) commencer par rendre invisibles tous les messages d'erreur
//cas du message d'erreur de tout le formulaire (au moins un champ obligatoire)
if (document.getElementById && document.getElementById('k_' + ffff)){
document.getElementById('k_' + ffff).style.visibility = 'hidden';
if (document.getElementById('k_' + ffff).style.display){
document.getElementById('k_' + ffff).style.display = 'none';
}
}
else if (detectns == 'oui'){
document.eval('k_' + ffff).visibility = 'hidden';
if (document.eval('k_' + ffff).display){
document.eval('k_' + ffff).display = 'none';
}
}
//messages d'erreur des éléments controlables
for (i=0;i<mezele.length;i++){
monal = 'k_' + mezele[i].substring(mezele[i].indexOf('_') + 1);
if (document.getElementById && document.getElementById(monal)){
document.getElementById(monal).style.visibility = 'hidden';
if (document.getElementById(monal).style.display){
document.getElementById(monal).style.display = 'none';
}
}
else if (document.layers && document.eval(monal)){
document.eval(monal).visibility = 'hidden';
if (document.eval(monal).display){
document.eval(monal).display = 'none';
}
}
}
//3) controles : partir de la fin pour avoir le focus final sur le premier champ erroné
butte = 0;
detectns = 'non';
for (i=(mezele.length - 1);i>-1;i--){
//pour formulaire qui ne serait constitué que de qq ens de cases à cocher du type aac_
if(mezele[i].indexOf('aac') == 0){
if(!document.forms[ffff].elements[mezele[i]].length && document.forms[ffff].elements[mezele[i]].checked){
butte++;
}
else{
for(k=0;k<document.forms[ffff].elements[mezele[i]].length;k++){
if (document.forms[ffff].elements[mezele[i]][k].checked){
butte++;
break;
}
}
}
}
//pour formulaire qui ne serait constitué que de listes à dérouler du type aas_ //attention à NS qui peut accorder un selectedIndex = 1 à un champ texte
else if(mezele[i].indexOf('aas') == 0){
if (document.forms[ffff].elements[mezele[i]].selectedIndex > -0){
butte++;
}
}
//éléments qui passent au controle
else if (mezele[i].indexOf('av') == 0 || (mezele[i].indexOf('aa') == 0 && !document.forms[ffff].elements[mezele[i]].length && document.forms[ffff].elements[mezele[i]].value != '')){
butte++;
//fonctions de controle commun
if (mezele[i].indexOf('avf') < 0 && mezele[i].indexOf('aaf') < 0){
eval(mezele[i].substring(2,3) + 'ph')(ffff,mezele[i]);
}
//fonctions spécifiques
else{
eval('ph' + mezele[i].substring(mezele[i].indexOf('_') + 1))(ffff,mezele[i]);
}
}
}
//4) résultat des courses
//aucun champ de rempli pour le cas "au moins un champ obligatoire"
if (butte == 0){
montrer('k_' + ffff);
alert(eval('f_' + ffff));
if (document.layers){
detectns = 'oui';
}
if (mezele[0].indexOf('aac') == 0 && document.forms[ffff].elements[mezele[0]].length){
document.forms[ffff].elements[mezele[0]][0].focus();
}
else{
document.forms[ffff].elements[mezele[0]].focus();
}
return false;
}
//soumission du formulaire rempli sans erreur
else if (comdeb == ''){
// cas où une URL est passée en 2ème argument
if (arguments.length >=2){
if(arguments[1]!='nosubmit'){
document.forms[ffff].pop.value=arguments[1];
document.forms[ffff].submit();
//winPopAide('');
}
}
else {
document.forms[ffff].submit();
}
return true;
}
//sinon messages d'erreur affichés sont redoublés par une seule boîte de dialogue
else {
comdeb = '';
for (i=(nappe.length - 1);i>=0;i--){
comdeb += nappe[i];
}
alert(comdeb);
return false;
}
}
//Faire apparaître calque contenant message erreur
function montrer(a){
if (document.getElementById && document.getElementById(a)){
document.getElementById(a).style.visibility = 'visible';
if (document.getElementById(a).style.display){
document.getElementById(a).style.display = 'block';
}
}
else if (document.layers && document.eval(a)){
document.eval(a).visibility = 'show';
if (document.eval(a).display){
document.eval(a).display = 'block';
}
}
}
function cacherById(ffff)
{
if (document.getElementById && document.getElementById(ffff)){
document.getElementById(ffff).style.visibility = 'hidden';
if (document.getElementById(ffff).style.display){
document.getElementById(ffff).style.display = 'none';
}
}
else if (document.layers){
document.eval(ffff).visibility = 'hidden';
if (document.eval(ffff).display){
document.eval(ffff).display = 'none';
}
}
}
//Evider les espaces (penser à passer en Regex)
function espace(a){
var aa = ligne(a);
a = aa;
xxx = a.length - 1;
while (xxx >= 0){
if (a.charAt(xxx) == " "){
aa = a.substring(0,xxx) + a.substring(xxx + 1,a.length);
a = aa;
}
xxx--;
}
return (a);
}
// régulariser les sauts de ligne sur Mozilla
function ligne(a){
for (z=1;z<a.length;z++){
if (a.charCodeAt(z) == 10 && a.charCodeAt(z - 1) != 13){
var aa = a.substring(0,z) + String.fromCharCode(13) + a.substring(z,a.length);
a = aa;
}
}
return (a);
}