window.onload=addvForm;

function addvForm()
{

	if(typeof document.f=="object"){
			document.f.onsubmit=vForm;

	}
}


function vForm(flag) { //v5.0 by jp

	var sub = false;
	if(typeof flag=="boolean")sub = flag;

	var warningStyle = '1 solid #3333CC';
	var alertStyle   = '1 solid #FF0000';


	var report = new Array();

	//window.onerror=continue_it;

	function continue_it(e){
		alert(':: Une erreur de code a été detectée, veuillez contacter l\'administrateur');
		return true;
	}

	var flag = 0;

	for(i=0;i<document.all.length;i++){

             elem = document.all[i];

			 if(elem.info){

				 //elem.style.border = "";

				 var txt = "";
				 if(!elem.title) txt = elem.name;
				 else txt = elem.title;

                 //Détecte les champs obligatoires
                 if(elem.info.indexOf('mustExist')>-1 && elem.value.length==0){

					 for(k=0;k<report.length;k++){
						if(!report[k].indexOf(elem.name))flag = 1;
					 }
                     if(flag!=1){
						 report[report.length] = (txt + "  (champ obligatoire)");
						 //elem.style.border=warningStyle;
					 }

                 }

                 //Détecte les champs obligatoires
                 if(elem.info.indexOf('MAIL')>-1 && elem.value.indexOf("@")==-1 && elem.value.length>0){
					 for(k=0;k<report.length;k++){
						if(!report[k].indexOf(elem.name))flag = 2;
					 }
                     if(flag!=2){
						 report[report.length] = (txt + "  (format de mail incorrect)");
					 }

                 }

				  //Détecte les champs dates
                 if(elem.info.indexOf('DATE')>-1 && elem.value.length>0 && elem.value.split("-",3).length!=3){
                     for(k=0;k<report.length;k++){
						if(!report[k].indexOf(elem.name))flag = 3;
					 }
					 if(flag!=3)if(report.join().indexOf(elem.name)==-1)report[report.length] = (txt + "  (format de date incorrect jj-mm-aaaa)");

                 }

                 //Détecte les champs numériques
                 if((elem.info.indexOf('NUMERIC')>-1 || elem.info.indexOf('FLOAT')>-1) && isNaN(elem.value) && elem.value.length>0){
					 for(k=0;k<report.length;k++){
						if(!report[k].indexOf(elem.name))flag = 4;
					 }
                     if(flag!=4){

						 report[report.length] = (txt + "  (caractère incorrect,numéro obligatoire)");
						 //elem.style.border=alertStyle;
					 }

                 }

			flag = 0;
			}
    }

    if(report.length>0){

                   //Reporting des erreurs
                   printout = "Certains champs sont incorrects ou manquants : \r\r";
                   for(j=0;j<report.length;j++) printout+= ":: " + report[j] + "\r\r";
                   alert(printout);

                   //Flush des erreurs
                   //report = null;

                   //Block du formulaire
                   //return false;
    }else{
                   //Formulaire validé
                   if(sub)document.f.submit();
				   //return true;
    }
}



