function cacheDisplay(pDiv) {
	if ((obj = MM_findObj(pDiv)) != null) {
		if (obj.style.display == 'inline') {
			obj.style.display = 'none';
		} else {
			obj.style.display = 'inline';
		}
	}
}

function cacheVisible(pDiv) {
	if ((obj = MM_findObj(pDiv)) != null) {
		if (obj.style.visibility == 'visible') {
			obj.style.visibility = 'hidden';
		} else {
			obj.style.visibility = 'visible';
		}
	}
}

function mailTo(pNom, pDomaine) {
	window.location = "mailto:"+pNom+"@"+pDomaine;
}

function MM_goToURL() { //v3.0
	var i, args=MM_goToURL.arguments;
	document.MM_returnValue = false;
	for (i=0 ; i<(args.length-1) ; i+=2)
		eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
	if (init == true) with (navigator) {
		if ((appName == "Netscape") && (parseInt(appVersion) == 4)) {
			document.MM_pgW = innerWidth;
			document.MM_pgH = innerHeight;
			onresize = MM_reloadPage;
		}
	}
	else if (innerWidth != document.MM_pgW || innerHeight != document.MM_pgH)
		location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
	var p,i,x;
	if (!d)
		d = document;
	if ((p=n.indexOf("?")) > 0 && parent.frames.length) {
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if (!(x = d[n]) && d.all)
		x = d.all[n];
	for (i=0;!x&&i<d.forms.length;i++)
		x = d.forms[i][n];
	for (i=0;!x&&d.layers&&i<d.layers.length;i++)
		x = MM_findObj(n,d.layers[i].document);
	if (!x && d.getElementById)
		x = d.getElementById(n);
	return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  	if ((obj=MM_findObj(args[i])) != null) {
		v = args[i+2];
    	if (obj.style) {
			obj = obj.style;
			v = (v=='show')?'visible':(v=='hide')?'hidden':v;
		}
    	obj.visibility=v;
	}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a = document.MM_sr;
  for (i=0 ; a&&i<a.length&&(x=a[i])&&x.oSrc ; i++)
  	x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d = document;
	if (d.images) {
		if (!d.MM_p)
			d.MM_p = new Array();
		var i,j = d.MM_p.length,a = MM_preloadImages.arguments;
		for (i=0 ; i<a.length ; i++)
			if (a[i].indexOf("#")!=0) {
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
	}
}

function MM_swapImage() { //v3.0
	var i, j=0, x, a=MM_swapImage.arguments;
	document.MM_sr = new Array;
	for (i=0 ; i<(a.length-2) ; i+=3)
		if ((x=MM_findObj(a[i])) != null) {
			document.MM_sr[j++] = x;
			if (!x.oSrc)
				x.oSrc = x.src;
			x.src= a[i+2];
		}
}

function navigateur() {
	if (navigator.appName.indexOf("Mozilla/5.0") > -1) {
		return "Mozilla/5.0";
	}
	if (navigator.appName.indexOf("Netscape") > -1) {
		return "Netscape";
	}
	if (navigator.appName.indexOf("Explorer") > -1) {
		return "Explorer";
	}
	return "Unknown";
}

function version() {
	return parseFloat(navigator.appVersion);
}

function OS() {
	if (navigator.appVersion.indexOf("Windows") > -1) {
		return "Windows";
	}
	if (navigator.appVersion.indexOf("Macintosh") > -1) {
		return "Macintosh";
	}
	if (navigator.appVersion.indexOf("X11") > -1) {
		return "Unix";
	}
	if (navigator.appVersion.indexOf("Unix") > -1) {
		return "Unix";
	}
	return "Unknown";
}

function toggleDisplay(pId) {
		if (document.getElementById) {
			if (document.getElementById(pId).style.display == "inline") {
				document.getElementById(pId).style.display = "none";
			}
			else document.getElementById(pId).style.display = "inline";
		}
		else if (document.all) {
			if (document.all[pId].style.display == "inline") {
				document.all[pId].style.display = "none";
			}
			else document.all[pId].style.display = "inline";
		}
		else if (document.layers) {
			if (document.layers[pId].display == "inline") {
				document.layers[pId].display = "none";
			}
			else document.layers[pId].display = "inline";
		}
}

// Pour contrôler les champs d'un formulaire
function MM_validateForm() {
	var i, p, q, nm, test, verif, num, min, max, errors='', args=MM_validateForm.arguments;
	var formulaire = args[0];
	for (i=1 ; i<(args.length-3) ; i+=4) {
		test = args[i+2];
		val = document[formulaire][args[i]];
		if (val) {
			nm = args[i+3];
			
			if ((val=val.value) != "") {
				if (test.indexOf('isEmail') != -1) {
					p = val.indexOf('@');
					if ((p<1) || (p == (val.length-1)))
						errors += '- '+nm+' doit être une adresse e-mail valide.\n';
				} else if ((test != 'R') && (test != 'I')) {
					num = parseFloat(val);
					if (isNaN(val))
						errors += '- '+nm+' ne peut contenir qu\'un nombre.\n';
					if (test.indexOf('inRange') != -1) {
						p = test.indexOf(':');
						min = test.substring(8, p);
						max = test.substring(p+1);
						if (num<min || max<num)
							errors += '- '+nm+' doit contenir un nombre compris entre '+min+' et '+max+'.\n';
					}
				}
				
				// ### Code de Charles pour vérifier le doublon ###
				if (test.charAt(0) == 'I') {
					verif = document[formulaire][args[i+1]];
					if (verif.name != '') {
						if (val != verif.value)
							errors += '- '+nm+' doit être identique à '+verif.name+'.\n';
					}
				}
				
				if (test.charAt(0) == 'C') {
					if (document.all[args[i]].checked != true) {
						errors += '- les '+nm+' doivent être acceptées .\n';
					}
				}
				// ### Fin du code de Charles ###
				
			} else if ((test.charAt(0) == 'R') || (test.charAt(0) == 'I') || (test.charAt(0) == 'N'))
				errors += '- '+nm+' doit être rempli.\n';
		}
	}
	if (errors)
		alert('Veuillez remplir correctement le formulaire :\n'+errors);
	document.MM_returnValue = (errors == '');
}

// Pour contrôler la valeur minimum d'un champ
function minimum(pFormulaire, pChamp, pValeur, pLibelle) {
	var errors='';
	if (document[pFormulaire][pChamp].value < pValeur) {
		errors += '- '+pLibelle+' ne peut pas être inférieur à '+pValeur+'.\n';
		document[pFormulaire][pChamp].value = pValeur;
	}
	if (errors)
		alert('Veuillez remplir correctement le formulaire :\n'+errors);
	document.MM_returnMinValue = (errors == '');
}

// Pour contrôler qu'un seul des champs donnés est vide
function controleChamp() { //v4.0
	var i, tCompteur=0, tTotal=0, errors='', args=controleChamp.arguments;
	for (i=0 ; i<(args.length-1) ; i+=2) {
		val = MM_findObj(args[i]);
		if (val) {
			nm = args[i+1];
			tTotal += 1;
			if ((val=val.value) == "") {
				tCompteur += 1;
				errors += '- '+nm+'\n';
			}
		}
	}
	if (tCompteur > 1)
		alert('Un seul de ces champs peut-être vide :\n'+errors);
	else
		errors = '';
	document.retourControleChamp = (errors == '');
}

// Pour éviter un message d'erreur car cette fonction est appelé dans la balise body de entete.php
function envoiResolution() {}

function coche(pChamp) {
	document.all[pChamp].checked = true;
}

function decoche(pChamp) {
	document.all[pChamp].checked = false;
}

function cocheSwap(pChamp) {
	if (document.all[pChamp].checked == true) {
		document.all[pChamp].checked = false;
	} else {
		document.all[pChamp].checked = true;
	}
}

function cocheTout(pField) {
	for (i = 1; i < pField.length; i=i+3) {
		if (pField[i].checked == true) {
  			
				pField[i].checked = false;
		}
		else {
  			pField[i].checked = true;
		}
	}
}

function confirmation(pChamp, pBtn) {
	if (pChamp.checked == true) {
		pBtn.disabled = false;
	} else {
		pBtn.disabled = true;
	}
}

function concatChamp(pChamp, pId) {
	document.all[pChamp].value = document.all[pChamp].value+"µ"+pId;
}