// JavaScript Document
//************************************************************************************************
 
//Traitement des images en couches

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_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_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];}
}

//************************************************************************************************
/* Traitement du Reload pour gestion des calques avec Netscape en v4*/

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);

//************************************************************************************************
/* Ouverture des fenêtres en pop-up*/
/* SP le 22/08/07 => gestion fermeture des popups avec fermePopOuverts()*/

//si tableau des popups non défini, le définir sauf dans popups elles mêmes (pas utile)
if (!window.tPopOuverts && !window.opener){var tPopOuverts = new Array();}

function openPopWindows(what,name,largeur,hauteur) { //v3.0
 	var name = window.open(what,name,"top=0,left=0,scrollbars=yes,width=" + largeur + ",height=" + hauteur + ",toolbar=no,location=no,status=no,menubar=no,resizable=no");
	if (window.tPopOuverts){
		tPopOuverts[tPopOuverts.length]=name;
	}
}

//************************************************************************************************
/* Appelée par la fenêtre principale pour fermer les popups et retourner à l'accueil quand clic sur le logo (cf. entete.inc.php) OU quand on quite les scripts menu_au.php et menu_as.php (body onunload="javascript:fermePopOuverts('');")
tPopOuverts a été défini comme tableau javascript des Popups dans toute fenetre appelant des popups (cf. avant fonction openPopWindows ci-dessu)
openPopWindows() incrémente ce tableau (s'il existe) dans la fenêtre mère à chaque PDC (popup) ouvert
*/
function fermePopOuverts(typeacces) { 
	if(window.tPopOuverts){
		for(var i=0;i<tPopOuverts.length;i++){
			tPopOuverts[i].close();
		}
	}//end if
	if(typeacces=="AS"){window.location="menu_as.php";}
	if(typeacces=="AU"){window.location="menu_au.php";}
}


//************************************************************************************************
/* Redirige vers l'URL indiquée(nouvelle page ou rechargement page)*/

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]+"'");
}
//chaine à transmettre (exemple) : onChange="MM_goToURL('parent','toto.php');return document.MM_returnValue"

//************************************************************************************************
/*Vérifie le format date du champs*/
function ctrlDate(valeur) {
	var chaine=document.getElementById(valeur).value;
	if (document.getElementById(valeur).value != "") {
		if (chaine.search(/^[0-3][0-9]\/[0-1][0-9]\/[1-2][0|9][0-9][0-9]$/) == -1) {
			alert("Le Format de la date saisie est incorrect ! Utilisez le format indiqué (ex : 02/06/1999)...");
			document.getElementById(valeur).value="";
			document.getElementById(valeur).focus();
		}
	}
}
 //************************************************************************************************
/*Vérifie le format heure du champs*/
function ctrlHeure(valeur) {
	var chaine=document.getElementById(valeur).value;
	if (document.getElementById(valeur).value != "") {
		if (chaine.search(/^[0-2][0-9]:[0-5][0-9]$/) == -1) {
			alert("Le Format de l'heure saisie est incorrect ! Utilisez le format indiqué (ex : 09:30)...");
			document.getElementById(valeur).value="";
			document.getElementById(valeur).focus();
		}
	}
}
 //************************************************************************************************
/*Affiche une info-bulle, remplie par xajax, qui suit la souris (OK IE et Firefox)*/
/* RM 27/06/2007
//<body>:
<div id="toolTipLayer" style="position:absolute; visibility: hidden"></div>
<script language="JavaScript">initToolTips();</script>
//<balise (DIV de préférence)>
onMouseOver="toolTip('', 'infobulle1')" onMouseOut="toolTip()" class="information"
*/
var ie = document.all;
offsetX = -360;
offsetY = 30;
var toolTipSTYLE="";
function initToolTips()
{
	if(ie) {toolTipSTYLE = document.all.toolTipLayer.style;}else{toolTipSTYLE = document.getElementById("toolTipLayer").style;}
	
	toolTipSTYLE.visibility = "visible";
	toolTipSTYLE.display = "none";
	document.onmousemove = moveToMouseLoc;
}
function toolTip(flag)
{
	if(toolTip.arguments.length < 1) {/*hide*/toolTipSTYLE.display = "none";}else{/*show*/toolTipSTYLE.display='block';}
}
function moveToMouseLoc(e)
{
	if(ie) {
		x = event.x;
		y = event.y + document.documentElement.scrollTop;
		actuelY = event.y;//SP pour position V dynamique
	}else{
		x = e.pageX;
		y = e.pageY;
		offsetY = window.pageYOffset;//SP pour position V dynamique
		actuelY = y-offsetY;//SP pour position V dynamique
	}
	if(y>screen.height-350 && actuelY>200){offsetY=-180;}else{offsetY = 20;}//SP pour position V dynamique
	toolTipSTYLE.left = x + offsetX + 'px';
	toolTipSTYLE.top = y + offsetY + 'px';
	return true;
}

 //************************************************************************************************
/*Affiche une invit de confirmation avec le texte fourni. Si confirm => True sinon => False*/

function confirmation(texte)
{
	if(confirm(texte)) {
		return(true);
	}else{
		return(false);
	}
}
 //************************************************************************************************
/*Affiche une invit de confirmation avec le texte fourni. Si confirm => True sinon => False*/

function confirmation2(valeur)
{
	if(document.getElementById(valeur).value==0) {
		if(confirm("Cette action va supprimer les éléments dépendants après validation de la mise-à-jour !\rÊtes-vous certain de vouloir continuer ?")) {
			document.getElementById(valeur).value=0;
		}else{
			document.getElementById(valeur).value=1;
		}
	}
}
//************************************************************************************************
/* Désactivation / Activation / Masquage / Affichage d'un bouton de formulaire */
function onoffBouton(cible,texte,etat){
	if(document.getElementById(cible)) {
		if(texte=='') {texte=document.getElementById(cible).value}//si aucun texte n'est transmis, recupère la value actuelle

		if(etat=='0' || etat=='OFF') {//désactive le bouton et affiche le texte transmis
		document.getElementById(cible).disabled=true;
		document.getElementById(cible).value=texte; 
		} 
		if(etat=='1' || etat=='ON') {//affiche le texte transmis et active le bouton
		document.getElementById(cible).value=texte; 
		document.getElementById(cible).disabled=false;
		} 
		if(etat=='2' || etat=='MASK') {//masque le bouton et affiche le texte transmis
		document.getElementById(cible).style.display='none';
		document.getElementById(cible).value=texte; 
		} 
		if(etat=='3' || etat=='SHOW') {//affiche le texte transmis et affiche le bouton
		document.getElementById(cible).value=texte; 
		document.getElementById(cible).style.display='block';
		} 
	}
}
//***************************************************************************************************
//Fonction permettant de récupérer la position de la souris et de scroller à cette position
// A placer dans la balise body ou sur un événement : onMouseMove ou onclick="GoToMouse(event)"

function GoToMouse(e){
	var posY=0;
    if(parseInt(navigator.appVersion) >=4){
        if(navigator.appName == 'Netscape'){
            posY=e.pageY;
        }
        else{
			posY=event.y;
        }
		window.scroll(0,posY);
    }
}

//***************************************************************************************************
//Fonction permettant d'uniformiser la value du mail qui vient d'être modifié pour un agent destinataire de contact (modifcoordonneescontact.php-fonctions_coordonneescontact.inc.php)
//typeAgentSelectionne vaut DDEACCES, DDEABO ou DDEINFO : indique sur quel champ récupérer la value de l'agent visé (permet de vérifier si le même agent est sélectionné pour les autres types de contact, et dans ce cas de mettre à jour son mail dans les champs correspondants)
//valeurMailSaisie : valeur à renseigner si même agent pour autres types de contact

function harmoniseMailAgent(typeAgentSelectionne,valeurMailSaisie){
	if(typeAgentSelectionne=="DDEACCES"){
		objTypeAgentSelectionne=document.getElementById("ageDDEACCES");
		cptrAgentEdite=objTypeAgentSelectionne.options[objTypeAgentSelectionne.selectedIndex].value;
		objAgentDDEABO=document.getElementById("ageDDEABO");
		if(cptrAgentEdite==objAgentDDEABO.options[objAgentDDEABO.selectedIndex].value){
			document.getElementById("mailDDEABO").value=valeurMailSaisie;
		}
		objAgentDDEINFO=document.getElementById("ageDDEINFO");
		if(cptrAgentEdite==objAgentDDEINFO.options[objAgentDDEINFO.selectedIndex].value){
			document.getElementById("mailDDEINFO").value=valeurMailSaisie;
		}
	}
	else if(typeAgentSelectionne=="DDEABO"){
		objTypeAgentSelectionne=document.getElementById("ageDDEABO");
		cptrAgentEdite=objTypeAgentSelectionne.options[objTypeAgentSelectionne.selectedIndex].value;
		objAgentDDEACCES=document.getElementById("ageDDEACCES");
		if(cptrAgentEdite==objAgentDDEACCES.options[objAgentDDEACCES.selectedIndex].value){
			document.getElementById("mailDDEACCES").value=valeurMailSaisie;
		}
		objAgentDDEINFO=document.getElementById("ageDDEINFO");
		if(cptrAgentEdite==objAgentDDEINFO.options[objAgentDDEINFO.selectedIndex].value){
			document.getElementById("mailDDEINFO").value=valeurMailSaisie;
		}
	}
	else if(typeAgentSelectionne=="DDEINFO"){
		objTypeAgentSelectionne=document.getElementById("ageDDEINFO");
		cptrAgentEdite=objTypeAgentSelectionne.options[objTypeAgentSelectionne.selectedIndex].value;
		objAgentDDEACCES=document.getElementById("ageDDEACCES");
		if(cptrAgentEdite==objAgentDDEACCES.options[objAgentDDEACCES.selectedIndex].value){
			document.getElementById("mailDDEACCES").value=valeurMailSaisie;
		}
		objAgentDDEABO=document.getElementById("ageDDEABO");
		if(cptrAgentEdite==objAgentDDEABO.options[objAgentDDEABO.selectedIndex].value){
			document.getElementById("mailDDEABO").value=valeurMailSaisie;
		}
	}
}

/*function montremenu(nom_id,num_id,nb_id) {
//fonction permettant d'afficher l'élément de menu sélectionné et masquer les autres
//attendus : le nom de l'id utilisé + le num d'id et le nombre total d'éléments
	nb_id=nb_id+1;
	var nom_id_str;
	var i;
	
	for (i=1; i<nb_id; i++) {
		nom_id_str=nom_id + i;
		if (i==num_id) {
			document.getElementById(nom_id_str).style.height='auto';
			document.getElementById(nom_id_str).style.overflow='visible';
		}else{
			document.getElementById(nom_id_str).style.height='0px';
			document.getElementById(nom_id_str).style.overflow='hidden';
		}
	}
}*/

function lienDeconnexionOuFermer() {
//fonction permettant d'afficher le lien déconnexion ou le lien fermer selon qu'on est dans une popup ou non
//appelé sur body onload des scripts de la partie authentifiée
//écrit le href et le texte du lien id='lienDouF' écrit par l'entête
	if(window.opener){
		document.getElementById('lienDouF').innerHTML='<img src="images/fermer.png" align="absmiddle" />&nbsp;Fermer cette fenêtre';
		document.getElementById('lienDouF').href='javascript:window.close();';
	}else{
		document.getElementById('lienDouF').innerHTML='<img src="images/lock.png" align="absmiddle" />&nbsp;Déconnexion';		
		document.getElementById('lienDouF').href='index.php';
	}
}

function affecteImageUploadeeDansCible(cible,chemin,largeur,hauteur) {
//fonction permettant d'afficher l'image uploadee depuis le script enregistreImage.php (dans iframe)
	var ladate=new Date();
	t=ladate.getTime();
	//afficher l'image dans la cible
	window.parent.document.getElementById(cible).innerHTML='<img id=\'img'+cible+'\' src=\''+chemin+'?t='+t+'\' />';
	if(largeur!=""){window.parent.document.getElementById('img'+cible).width=largeur;}
	if(hauteur!=""){window.parent.document.getElementById('img'+cible).height=hauteur;}
}

function affecteImageReleveurUploade(num) {
//renseigne le champs caché avec le chemin de l'image dans le formulaires des releveurs
//réaffiche le formulaire de changement d'image
	//remplir le champ caché du form
	window.parent.document.getElementById('imageReleveur'+num).value='images/releveur'+num+'.png';
	//rafficher l'input file (pour changement image=
	history.go(-1);
}

function raffraichitImageLogo() {
//raffraichit le logo après son remplacement
//appelée depuis l'iframe lors de l'enregistrement du logo grace à la fonction de retour passée en paramètre
	var ladate=new Date();
	t=ladate.getTime();
	document.getElementById('imagelogo').src='images/logo.png?t='+t;
}

function annuleImageReleveur(num) {
//fonction permettant d'annuler l'image du releveur
//renseigne le champs caché avec le chemin de l'image dans le formulaires des releveurs
	var ladate=new Date();
	t=ladate.getTime();
	//afficher l'image par défaut à coté du nom
	document.getElementById('TDimage'+num).innerHTML='<img src=\'images/inconnu.png?t='+t+'\' height=\'150\' />';
	//remplir le champ caché du form
	document.getElementById('imageReleveur'+num).value='';
}

//fonction qui positionne la div de surimpression en fonction du scroll
//Appelée sur body onload="javascript:timerDivSurimpression=setInterval('positionneDivSurimpression()', 50);" quand utilisée
var timerDivSurimpression="";
function positionneDivSurimpression() {
  	if(ie) {
		posy = document.documentElement.scrollTop;
	}else{
		posy = window.pageYOffset;
	}
	document.getElementById('divSurimpression').style.top=posy+20+'px';
}

//fonction de défilement horizontal du trombino des releveurs
function defileTRombino(){
	avant=document.getElementById('trombino').scrollLeft;
	document.getElementById('trombino').scrollLeft+=pas;
	if (pas>0 && apres-avant>1){pas=-1;}
	if (pas<0 && avant-apres>1){pas=1;}
	apres+=pas;
	monScroll=setTimeout("defileTRombino()",50);
}

// vérifie la validité du mail fourni
function validmail(mail) {
	if (mail.search(/^[_a-zA-Z0-9-.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9]+$/) == -1) {
		return (false);
	}else{
		return (true);
	}
}

//fonction de contrôle du mail renseigné pour le renvoi des identifiants à l'usager par l'admin webabo
// 3 si inchangé => envoi identifiants
function confirmerMailUsager(num,auth_cptr){
	var changementMail=0;
	ancienMail=document.getElementById('anciencourriel'+num).value;
	nouveauMail=document.getElementById('courriel'+num).value;
// 1 si pas de mail ou mauvais format => alerte impossible
	if(validmail(nouveauMail)==false){
		alert("L'usager doit avoir une adresse de Courriel valide pour recevoir ses identifiants...");
	}else{
// 2 si mail changé par rapport à l'ancien => demande confirmation puis envoi identifiants
		if(ancienMail!=nouveauMail){
			if(confirm("Confirmez vous le changement d'adresse de Courriel de l'Usager ?")){
				changementMail=1;
				xajax_envoyerIdentifiantsUsager(num,nouveauMail,changementMail,auth_cptr);
			}else{
				alert("Les identifiants n'ont pas été envoyés...");
			}
		}else{
			xajax_envoyerIdentifiantsUsager(num,nouveauMail,changementMail,auth_cptr);
		}
	}
}

//******************************************************************************************
//******************************************************************************************
// Menus de la partie publique

/*function montremenu(nom_id,num_id,nb_id) {
//fonction permettant d'afficher l'élément de menu sélectionné et masquer les autres
//attendus : le nom de l'id utilisé + le num d'id et le nombre total d'éléments
	nb_id=nb_id+1;
	var nom_id_str;
	var i;
	
	for (i=1; i<nb_id; i++) {
		nom_id_str=nom_id + i;
		if (i==num_id) {
			document.getElementById(nom_id_str).style.height='auto';
			document.getElementById(nom_id_str).style.overflow='visible';
		}else{
			document.getElementById(nom_id_str).style.height='0px';
			document.getElementById(nom_id_str).style.overflow='hidden';
		}
	}
}*/

//fonction de masquage des menus inactifs
function masqueMenupublic(j){
	j=j+1;
	for (var i=0;i<j;i++){
		if(document.getElementById('menupublic'+i)) {document.getElementById('menupublic'+i).style.display='none';}
	}
}

//fonction d'affichage du menu actif
function montreMenupublic(num){
	masqueMenupublic();
	if(document.getElementById('menupublic'+num)) {document.getElementById('menupublic'+num).style.display='';}
}

/*function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('menu'+i)) {document.getElementById('menu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}*/

/********************************************************************************/

//fonction de mise en surbrillance du PDC sélectionné (menu usager)
function selPDC(pdc,nbpdcencours){

	//enlève la surbrillance de tous les PDC
	for (var i = 0; i<nbpdcencours; i++) {
		if (document.getElementById('aboencours'+i)) {document.getElementById('aboencours'+i).className='';}
	}

	//mets le PDC sélectionné en surbrillance
	document.getElementById(pdc).className='pdcactif';

}


