//fonction de vérification de formulaire
//zone : nom du champ
//mini : nombre de caractéres minum, 1 pour champ obligatoire, "" pour les autres
//maxi : nombre de caractéres maximum
//ligne : nom de la ligne qui changera de couleur
//format : type du test
//couleur de la ligne en cas d'erreur

function vfrm(zone, mini, maxi, ligne, format, couleur, etiquette)
{

	var msg=""; //message renvoyé
	var chaine=""; //extension du fichier
	
	//Si le champ est obligatoire, on controle
	// Si le champ est facultatif, on controle uniquement si le champ est renseigné

	if (mini>0 || zone.value!=""){
		
		//le champ est-il vide
		if (zone.value==""){
			document.all[ligne].style.background=couleur;
			zone.focus();
			alert("Veuillez renseigner "+etiquette);
			return false;
		}
		else{
			document.all[ligne].style.background="";
		}
		
			
		// Vérifie la validité du format de la chaine saisie
		function testFormat()
		{
			//on vérifie le formatage du champ saisie
			if (!RE.test(zone.value))
			{
				document.all[ligne].style.background=couleur;
				zone.focus();
				alert("Erreur de saisie :\n"+ etiquette + " est incorrect "+msg);
				return false;
			}
			else
			{
				document.all[ligne].style.background="#FFFFFF";
			}
		
		}

		// Vérifie la validité de la longueur maximum du champ saisie
		function testMaxi()
		{
		
			if (maxi!=0)
			{
				if (zone.value.length>maxi )
				{
					document.all[ligne].style.background=couleur;
					zone.focus();
					alert("Vous ne pouvez pas saisir plus de " + maxi + " caractères" + " pour " + etiquette);
					return false;
				}
				else
				{
					document.all[ligne].style.background="";
				}
			}
		
		}

	
		//penser à ajouter le controle du  Mini + champ vide
		//mise en majuscule du format 
		format=format.toUpperCase();
		
		switch (format){
		
			// A : alphabétique
			case "A" :
				RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;
				msg="alphabéthique (az)";
				if (testFormat()==false)return false;
				if (testMaxi()==false)return false;
				break;
				
			// AN : alphanumérique
			case "AN" :
				RE = /^[A-Za-zàâäéèêëîïôùûç.!€\?&:;\"()\/-°\s\%\@\#\+,'0-9\-]+$/;
				msg="alphanumérique";
				if (testFormat()==false)return false;
				if (testMaxi()==false)return false;
				break;
				
			// N : numérique
			case "N" :
				RE = /^[-\d]+[.]?\d*$/;
				remplace(zone, ",", ".")
				if (testFormat()==false)return false;
				if (testMaxi()==false)return false;
				break;
	
			// CP : code postal français (5 chiffres)
			case "CP" :
				RE = /^\d{5}$/;
				msg="(ex : 79000)";
				if (testFormat()==false)return false;
				if (testMaxi()==false)return false;
				break;
			
			// EMAIL : courriel
			case "EMAIL" :
				RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;
				msg="(ex : jacques.martin@deux-sevres.com)";	
				if (testFormat()==false)return false;
				if (testMaxi()==false)return false;
				break;
			
			//fichier image	
			case "IMAGEFILE" :
			
				//récupération de l'extension du fichier
				var deb=zone.value.length-4;
				var chaine=zone.value.substr(deb,4);
				chaine=chaine.toLowerCase();
			
				if (chaine.indexOf(".jpg")<0 && chaine.indexOf(".gif")<0){
					document.all[ligne].style.background=couleur;
					alert("Seul les images gif ou jpg sont autorisées pour" + etiquette);
					zone.select();
					return false;
				}
				else{
					document.all[ligne].style.background="";
				}
				
				break;
				
			//fichier bureautique - documents
			case "DOCUMENTFILE" :
				
				//récupération de l'extension du fichier
				var deb=zone.value.length-4;
				var chaine=zone.value.substr(deb,4);
				chaine=chaine.toLowerCase();		
			
				if (chaine.indexOf(".rtf")<0 && chaine.indexOf(".xls")<0 && chaine.indexOf(".doc")<0 && chaine.indexOf(".pdf")<0 && chaine.indexOf(".ppt")<0 ){
					document.all[ligne].style.background=couleur;
					alert("Seul les documents Word, Excel, Powerpoint, RTF ou Acrobat PDF sont autorisés pour " + etiquette);
					zone.select();
					return false;			
				}
				else{
					document.all[ligne].style.background="";
				}
				break;
			
			//RADIO : controle qu'un élément du bouton radio est sélectionné
			
			case "RADIO" :
			
				var test=0; // =1 si un élément est sélectionné
				
				for (zz=0;zz<zone.length;zz++){
				
					var tempobj=zone[zz];
					
					if (tempobj.checked==true) {
						test=1;
					} 
					
				}
	
				if (test==1){
					document.all[ligne].style.background=couleur;
					alert("Veuillez sélectionner " + etiquette);
					return false;
				}
				else{
					document.all[ligne].style.background="";
				}
				
				break;
				
			//DATE : Validité de la date (xx/xx/xxxx ou xx-xx-xxxx)
			// la date doit être dans un champ text
			case "DATE" :
			
				// DATE : Date (xx/xx/xxxx ou xx-xx-xxxx)
				RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{4}$/;
				msgc="(ex : xx/xx/xxxx ou xx-xx-xxxx)";	
				
				if (testFormat()==false)return false;
				
				//récupération des jour / mois / année
				var j=(zone.value.substring(0,2));
				var m=(zone.value.substring(3,5));
				var a=(zone.value.substring(6));
	
				//Création d'une date avec les valeurs saisie
				// si la date générer est la même que celle saisie alors la date est valide
				var d2=new Date(a,m-1,j);
				j2=d2.getDate();
				m2=d2.getMonth()+1;
				a2=d2.getYear();
				
				if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
					
					document.all[ligne].style.background=couleur;
					zone.focus();
					alert("La date "+chainedate+" n'existe pas !");
					return false;
				}
				else{
					document.all[ligne].style.background="";
				}	
			
				break;
			
			//LISTE : vérifié qu'un élément est sélectionné dans la liste
			case "LISTE" :
			
				if (zone.options[0].selected==true ){
					document.all[ligne].style.background=couleur;
					zone.focus();
					alert("Veuillez sélectionner un élément dans " + etiquette);
					return false;
				}
				else{
					document.all[ligne].style.background="";
				}
				
				break;
			
		} // fin switch
	
	} // fin si obligatoire / facultatif
	
	return true;
	
}


//vérifie la validité d'une date sur +sieur champ
function vdte(jj,mm,aaaa,ligne,oblig,couleur){

	//saisie d'une date facultatif
	if (oblig==1){

		//Création d'une date avec les valeurs saisie
		// si la date générer est la même que celle saisie alors la date est valide
		var d2=new Date(aaaa.value,mm.value-1,jj.value);

		j2=d2.getDate();
		m2=d2.getMonth()+1;
		a2=d2.getYear();
		

		if ( (jj.value!=j2)||(mm.value!=m2)||(aaaa.value!=a2) || (a2<1900 ) ) {
			
			document.all[ligne].style.background=couleur;
			jj.focus();
			alert("La date "+jj.value+"/"+mm.value+"/"+aaaa.value+" n'existe pas !");
			return false;
		}
		else{
			document.all[ligne].style.background="";
		}
			
	}
}


//Affiche un message dans la barre d'état
function affstatus (msg){

	window.status=msg;
	return true;

}

//Gère le filtre d'opacité sur une image 

function makevisible(cur,which){
	if (which==0) cur.filters.alpha.opacity=60
	else cur.filters.alpha.opacity=100 
}

//Efface une zone date
function videdt(jj, mm, aaaa){

	jj.value="";
	mm.value="";
	aaaa.value="";

}

//fonction de remplacement d'un caractére
//champ : nom du champ concerné
//txtsearch : texte recherché
//txtreplace : chaine qui remplacera le texte recherché

function remplace(champ, txtsearch, txtreplace){
	chaine = champ.value;
	chainemodif = eval('chaine.replace(/'+txtsearch+'/g,"'+txtreplace+'")');
	champ.value = chainemodif;
}

//fonction de remplacement d'un caractére
//chaine : nom de la chaine concernée
//txtsearch : texte recherché
//txtreplace : chaine qui remplacera le texte recherché

function remplace_ch(chaine, txtsearch, txtreplace){

	chainemodif = eval('chaine.replace(/'+txtsearch+'/g,"'+txtreplace+'")');
	champ.value = chainemodif;
}

//remplace les voyelles avec accent par des voyelles simples

function remplace_accent(obj){

		var minus = "aàâäbcçdeéèêëfghiîïjklmnoôöpqrstuùûvwxyz"        
        var majus = "aaaabccdeeeeefghiiijklmnooopqrstuuuvwxyz"
        var entree = obj.value;
        var sortie = "";
		
        for (var i = 0 ; i < entree.length ; i++)
        {
          var car = entree.substr(i, 1);
          sortie += (minus.indexOf(car) != -1) ? majus.substr(minus.indexOf(car), 1) : car;
        }
        obj.value = sortie;
}

//remplace les voyelles avec accent par des voyelles simples en majuscules

function remplace_accent_maj(obj)
{
        var minus = "aàâäbcçdeéèêëfghiîïjklmnoôöpqrstuùûvwxyz"        
        var majus = "AAAABCCDEEEEEFGHIIIJKLMNOOOPQRSTUUUVWXYZ"
        var entree = obj.value;
        var sortie = "";
        for (var i = 0 ; i < entree.length ; i++)
        {
          var car = entree.substr(i, 1);
          sortie += (minus.indexOf(car) != -1) ? majus.substr(minus.indexOf(car), 1) : car;
        }
        obj.value = sortie;
}

function Compter(Target, max)
{
	StrLen = Target.value.length
		if (StrLen > max )
		{
			Target.value = Target.value.substring(0,max);
			CharsLeft = max;
			alert(max+" caractères maximum");								
		}
		else
		{
			CharsLeft = StrLen;
		}	
}

//fonction comptage
//wrap="soft" onFocus="Compter(this,2000,projet.comptage)" onKeyDown="Compter(this,2000,projet.comptage)" onKeyUp="Compter(this,2000,projet.comptage)" onBlur="Compter(this,2000,projet.comptage)"

function Comptercar(Target, maxi, nomchamp)
{
	StrLen = Target.value.length
		if (StrLen > maxi )
		{
			Target.value = Target.value.substring(0,maxi);
			CharsLeft = maxi;
			alert(maxi+" caractères maximum");								
		}
		else
		{
			CharsLeft = StrLen;
		}	
	nomchamp.value = CharsLeft;
}

// met une valeur par default à 0 sur une zone - appelle par onblur

function verifnumber(zone){
	if(zone.value==""){
		zone.value=0;
	}
}


//chaine à rechercher dans la liste déroulante
var strkey="";
//interval pour réinitialiser strkey
var interval="";

//reinitialise strkey

function initkey()
{
	strkey="";
}

//selectionne l'option dans la liste déroulante en fonction de la touche pressée

function selectoption(lst){

	//reinitialise l'appelle de la fonction init() à 3 seconde
	window.clearInterval (interval);
	interval=window.setInterval ("initkey()",3000);
	//capture la touche pressée
	keycode=event.keyCode;
	//converti le code ascii récupéré en char et mise en majuscule et le concatène avec la pprécédent touche pressée
	strkey=strkey+String.fromCharCode(keycode);
	strkey=strkey.toUpperCase();

	//bloque l'éxécution de la touche pressée
	window.event.returnValue=false;

	//recherche l'option commencant par les touches pressées
	for (i=0;i<lst.options.length;i++){
		
		text=lst.options[i].text;
		text=text.toUpperCase();
		text=text.substr(0,strkey.length)
		
		if (strkey==text){
		
			lst.options[i].selected=true;
			break;
		
		}
	
	}
	
}

function msgwait() {
	var content ="<TABLE WIDTH=100% height=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=#CCCCCC><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><CENTER><FONT face=Verdana, Arial, Helvetica, sans-serif COLOR=#FFFFFF SIZE=1><B>Veuillez patientez ...</B></FONT></CENTER></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=#EBEBF5><TR><TD><FONT face=Verdana, Arial, Helvetica, sans-serif COLOR=#000099 SIZE=1><CENTER>Chargement de votre requête en cours</CENTER></FONT></TD></TR></TABLE></TD></TR></TABLE>";
	document.all("topdeck").innerHTML = content;
	document.all("page").style.left = -2000;
	document.all("page").style.top  = 0;
	document.all("page").style.visibility = "hidden";  
	document.all("topdeck").style.visibility = "visible";
}

// sélectionne et désélectionne toutes les options (gestion_alerte.asp et gestion_selection.asp)

function seltous(tous, form, com){
	
	if (tous.checked==false)
	{
		for (i=0;i<form.length;i++) {
			var tempobj=form.elements[i];
			if (tempobj.name.indexOf("sel"+com)>=0) {
				tempobj.checked=false;
			}
		}
	}
	else
	{
		for (i=0;i<form.length;i++) {
			var tempobj=form.elements[i];
			if (tempobj.name.indexOf("sel"+com)>=0) {
				tempobj.checked=true;
			}
		}
	
	}
}

//Envoi vers le signet demandé

function liste(liste) { 
	com="#"+liste.options[liste.selectedIndex].value; 
	location.href = com;  
} 


//Affiche ou masque les mesures sur évènement onclick page etat.asp

function affiche(axe,contenug){
	plus = "plus"+axe;
	if (document.all[axe].style.visibility == "hidden"){
		document.all[axe].style.visibility = "visible";
		document.all[axe].innerHTML = contenug;
		document.all[plus].innerHTML = "[-]";
	}else{
		document.all[axe].style.visibility = "hidden";
		document.all[axe].innerHTML = "";
		document.all[plus].innerHTML = "[+]";
	}
}

function heure (heure, minute, zone,ligne, couleur)
	{
	var message="non";
	if (isNaN(heure)==true || isNaN(minute)==true || heure=="" || minute=="" ){
		message="oui";
	}
//place un zéro devant les chiffres à un nombre

	for (i=0;i<=9;i++){
		if (heure==i){heure="0"+i;}
		if (minute==i){minute="0"+i;}
	}	
	if (heure>23 || heure <0){
		message="oui";
	}	
	if (minute>59 || minute <0){
		message="oui";
	}
	if (message=="oui"){
		alert ("Veuillez saisir une heure valide.");
		document.all[ligne].style.background=couleur;
		zone.focus();
		return false;
	}else{
		document.all[ligne].style.background=""
	}
}

// redirige vers la page du lien cliqué dans le menu

function redirige(url){
	document.location = url;
}

//modifie la couleur du tr au passage de la souris dans le menu

function chgcolor(td,classe){	
	td.className=classe;
}

//rétabli la couleur initiale au tr dans le menu

function backcolor(td,classe){
	cellule=td;
	dernierstyle=td.className;
	td.className=classe;
}

//ouvre une fenêtre et la positionne en premier plan

var popup_url='';

function open_url(lien){
	if(popup_url)
		  {
			if(!popup_url.closed) popup_url.close();
		  }
		  popup_url = open(lien, 'popup_url', '');
}
