/**
 * Fichier commun.js
 * Ce fichier contient les fonctions javascript client
 */

// Fonctions Standard Macromedia Dreamweaver
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_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_validateForm() { //v3.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name;obj=val; if ((val=val.value)!="") {
      if (obj.type=="checkbox")	if (!obj.checked) errors+='- La case '+nm+' doit être cochée.\n';
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- Le champ '+nm+' doit contenir une adresse mail valide.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (val!=''+num) errors+='- Le champ '+nm+' doit contenir une valeur numérique.\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+='- Le champ '+nm+' doit contenir une valeur numérique comprise entre '+min+' et '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est obligatoire.\n'; }
  } if (errors) alert('Le formulaire n\' a pas pu être validé pour les raisons suivantes :\n'+errors);
  document.MM_returnValue = (errors == '');
}
// Fonction pour initialiser la page du site (initialise le menu, les tableaux "riches", et le préchargement des images du menu)
function init(){
	// initialise le préchargement des images
	MM_preloadImages(
		'/images/bouton_courts.gif',
		'/images/bouton_long.gif',
		'/images/bulle_01.png',
		'/images/bulle_02.png',
		'/images/bulle_03.png',
		'/images/bulle_04.png',
		'/images/bulle_02_survol.png',
		'/images/bulle_03_survol.png',
		'/images/bulle_04_survol.png',
		'/images/chargement.gif'
	);
	// Initialise le menu
	initMenu();
	// Initialise les couleurs des lignes de tableaux (pair, impair)
	if (typeof(domTableEnhance) == 'function') domTableEnhance();
	// Initialise le voile sur tout l'écran
	if (document.getElementById("voile")) setHeight("voile",getPageSize()[1]);
	// Initialise la popup nommée "résultats" par défaut (si elle existe)
	Popup("resultats");
}
// Fonction pour faire apparaître en fondu un calque à partir de son id
Popup.y = 220;
function Popup(id){
	var element=document.getElementById(id);
	if (element){
		fondu(id,20);
		setDisplay(id,true);
		setDisplay("voile",true);
		setX(id,getX(document.getElementById("page")));
		setY(id,Math.max(document.documentElement.scrollTop+document.body.scrollTop,Popup.y));
	}
}
// Fonction pour cacher le panneau résultat
Popup.cacher=function(id){
	setDisplay(id,false);
	setDisplay("voile",false);
	setAlpha(document.getElementById(id),0);
}
// Fonction pour manipuler diverses propriétés CSS
function setX(id,x){
	document.getElementById(id).style.left = x + "px";
}
function getX(element){
	if (element.offsetParent)
		return (element.offsetLeft + getX(element.offsetParent));
	else
		return (element.offsetLeft);
}
function setY(id,y){
	document.getElementById(id).style.top = y + "px";
}
function getY(element){
	if (element.offsetParent)
		return (element.offsetTop + getY(element.offsetParent));
	else
		return (element.offsetTop);
}
function getHeight(id){
	return document.getElementById(id).offsetHeight;
}
function setDisplay(id,block){
	document.getElementById(id).style.display=block?"block":"none";
}
function setAlpha(objet,alpha){
	if (browser.isIE4up){ // IE 4 ou +
		objet.filters.alpha.opacity=alpha;
	}else if (browser.isNS || browser.isNSCompatible){ // Netscape 6 ou +
		objet.style.MozOpacity=alpha/100;
	}
}
function getAlpha(objet){
	var resultat = null;
	if (browser.isIE4up){ // IE 4 ou +
		resultat = objet.filters.alpha.opacity;
	}else if (browser.isNS || browser.isNSCompatible){ // Netscape 6 ou +
		resultat = objet.style.MozOpacity*100;
	}
	return resultat;
}
function setHeight(id,height){
	document.getElementById(id).style.height = height + "px";
}
function getPageSize(){
	if (window.innerHeight && window.scrollMaxY) {
		// Firefox
		var yWithScroll = window.innerHeight + window.scrollMaxY;
		var xWithScroll = window.innerWidth + window.scrollMaxX;
	}else if (document.body.scrollHeight > document.body.offsetHeight){
		// all but Explorer Mac
		var yWithScroll = document.body.scrollHeight;
		var xWithScroll = document.body.scrollWidth;
	} else {
		// works in Explorer 6 Strict, Mozilla (not FF) and Safari
		var yWithScroll = document.body.offsetHeight;
		var xWithScroll = document.body.offsetWidth;
	}
	return new Array(xWithScroll,yWithScroll);
}
// Effectue un fondu pour un calque
function fondu(id,vitesse){
	var objet = document.getElementById(id);
	if (objet){
		setAlpha(objet,getAlpha(objet)+vitesse);
		if (getAlpha(objet)<100) setTimeout("fondu('"+id+"',"+vitesse+")",100);
	}
}
//Mise à jour et soumission du formulaire de recherche pour changer de page
function changePage(page,i){
	var f = document.forms[i];
	f.page.value=page;
	f.submit();
} 
// Generation du sélecteur de pages
function genererPages(page,nbPages,nbform){
	if (typeof(nbform)=='undefined') nbform=0;
	var resultat="";
	if (nbPages>1){
		resultat="<div class=\"pages\">Pages ";
		if (page>1){
			resultat+='<a href="javascript:changePage('+(page-1)+','+nbform+')"><img src=\"/images/fleche_gauche.gif\" width=\"19\" height=\"19\" alt="Précédente"/></a>';
		}
		resultat+=' ';
		for (var i=1;i<=nbPages && (i<=20 || i<=page+2);i++){
			var debut='';
			var fin='';
			if (i!=page){
				debut='<a href="javascript:changePage('+i+','+nbform+');" target="_self">';
				fin='</a>';
			}else{
				debut='<b>';
				fin='</b>';
			}
			resultat+=debut+i+fin+' ';
		}
		if (page<nbPages){
			resultat+=('<a href="javascript:changePage('+(page+1)+','+nbform+')"><img src=\"/images/fleche_droite.gif\" width=\"19\" height=\"19\" alt="Suivante"/></a>');
		}
		resultat+="</div>";
	}
	return resultat;
}
// Met à jour le champ caché tri et soumet le formulaire
function trier(champ){
	var f = document.forms[0];
	f.tri.value=champ;
	f.submit();
}
// Affiche l'aperçu de la photo
function apercu(){
	var media = document.getElementById("media");
	media.innerHTML = "<img src=\"/images/chargement.gif\" alt=\"Chargement en cours... Veuillez patienter\"/>";
	// Si une URL est spécifiée, on affiche l'aperçu, sinon on le cache
	if (apercu.arguments.length>0){
		// Avant d'afficher l'aperçu, on initialise la division media qui se trouve à l'intérieur
		var url = apercu.arguments[0];
		if (url.substring(url.lastIndexOf(".")).toLowerCase()==".flv"){
			// Si l'URL se termine par FLV on la charge dans le lecteur vidéo
			lancerVideo(media,url);
		}else{
			// Sinon, on affiche une image
			var image = new Image();
			image.src = url;
			image.onload=function(){
				media.innerHTML = "";
				media.appendChild(image);
			}
			image.onclick = function (){apercu();};
			if (image.complete){
				media.innerHTML = "";
				media.appendChild(image);
			}
		}
		// Ajoute les textes libelle, credits et dateCreation
		var p = document.getElementById("apercu").getElementsByTagName("p");
		for (var i=0;i<p.length;i++) p[i].innerHTML=apercu.arguments[i+1];
		// Positionne l'aperçu dans la fenêtre visible
		setY("apercu",Math.max(document.documentElement.scrollTop+document.body.scrollTop,100));
		// Fondu de l'aperçu et affichage des panneaux
		setDisplay("apercu",true);
		fondu("apercu",25);
		setDisplay("voile",true);
	}else{
		// Masque les panneaux et réinitialise l'image
		setAlpha(document.getElementById("apercu"),0);
		setDisplay("apercu",false);
		setDisplay("voile",false);
	}
}
// Ouverture popup
function ouvrirFenetre(url){
	return window.open(url,"fenetre");
}
// Ouvrir un formulaire dans une nouvelle fenêtre
function submitPopup(form){
	var f=ouvrirFenetre("about:blank");
	form.target="fenetre";
}
// Restaure la cible du formulaire
function resetFormTarget(){
	document.forms[0].target="_self";
}
// Charge le lecteur vidéo dans un div avec une URL
function lancerVideo(conteneur,url){
	conteneur.innerHTML='<div id="video">Pour voir cette vidéo, vous devez <a href="http://www.macromedia.com/go/getflashplayer" target="_blank">t&#233;l&#233;charger le Lecteur Flash</a>.</div>'
	var s1 = new SWFObject("/swf/flvplayer.swf","single","960","720","7");
	s1.addParam("allowfullscreen","true");
	s1.addVariable("autostart","true");
	s1.addVariable("file",url);
	s1.write("video");
}
