function popup(chem,id, prenom, nom, id_sortie)
	{
		
	var largeur = 440;
	var hauteur = 450;
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
  
window.open(chem+'popup.php?id_participant='+id+'&prenom='+prenom+'&nom='+nom+'&id_sortie='+id_sortie+'', 'messages', config='top='+top+', height='+hauteur+', width='+largeur+', left='+left+', toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
	}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function popupall(chemin, id_sortie)
	{
		
	var largeur = 440;
	var hauteur = 600;
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
  
window.open(chemin+'popupall.php?id_sortie='+id_sortie+'', 'tousmessages', config='top='+top+', height='+hauteur+', width='+largeur+', left='+left+', toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
	}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function cocher_tout(num,i)
{

var nom_case = '';
	for (var j=0;j<i;j++)
	{
	nom_case='supp_'+j;
	document.getElementById(nom_case).checked = true;
	document.getElementById(nom_case).parentNode.parentNode.className+=" noprint";
	}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function decocher_tout(num,i)
{

var nom_case = '';
	for (var j=0;j<i;j++)
	{
	nom_case = 'supp_'+j;
	nom_classe = document.getElementById(nom_case).parentNode.parentNode.className;
	document.getElementById(nom_case).checked = false;
	if (nom_classe == "italique noprint") {nom_classe="italique";} else {nom_classe="";}
	document.getElementById(nom_case).parentNode.parentNode.className= nom_classe;
	}
} 

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function noprint_cocher(i)
{
nom_case = 'supp_'+i;
nom_classe = document.getElementById(nom_case).parentNode.parentNode.className;
if (document.getElementById(nom_case).checked)
	{
	document.getElementById(nom_case).parentNode.parentNode.className+=" noprint";}
else
{if (nom_classe == "italique noprint") {nom_classe="italique";} else {nom_classe="";}
	document.getElementById(nom_case).parentNode.parentNode.className = nom_classe;}

}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verif(c)
{if (c == null) return true;
	var champ = c.value;

	if (champ != '')
		{return true;}
	else
		{return false;}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verifSiCoche(f)
{
var resultat = false;
if (f.length != undefined)	
	{for (i=0; i<f.length; i++)
		{
		if (f[i].checked)
			{resultat = true;
			break;
			}
		}
		return resultat;
	}
	else
	{
	if (f.checked) {resultat = true;} return resultat;
	}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verifParticipant(nom, prenom, statut, niveau, id, timestamp)
{if (statut == undefined) {alert("Les 'max' sont tous à 0 pour cette sortie. Inscription impossible."); return false;}
	var nomOK = verif(nom);
	var prenomOK = verif(prenom);
	var statutOK = verifSiCoche(statut);
	var niveauOK = verif(niveau);
	var statutCoche = false;
	if (statut.length != undefined)
		{for (i=0; i<statut.length; i++)
			{
			if (statut[i].checked) {if (statut[i].value == 'accompagnateur') {statutCoche = true;} break;}
			}
		}
		else
		{
		if (statut.value=='accompagnateur') {statutCoche = true;}
		}
	var timeOK = verifTimestamp(timestamp);

		if (!timeOK)
			{alert("Vous devez impérativement entrer la date sous la forme \"JJ/MM/AAAA HHh MMmin SSs\" en respectant les espaces et le nombre total de caractères !");
			return false;}
		
		if ((nomOK && prenomOK && niveauOK && statutOK) || (nomOK && prenomOK && statutOK && statutCoche))
				{return true;}
		else {
				alert("Vous devez renseigner votre statut, nom, prénom et niveau (sauf pour les accompagnateurs) !");
				return false;
			}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verifSortie(nom, detail, maxEncadres, maxEncadrants, maxAutonomes,maxAccompagnateurs, maxMinibus, sup, timestamp, date_paiement, clore, nb_plongees)
{
	var nomOK = verif(nom);
	var detailOK = verif(detail);
	var maxEncadresOK = verif(maxEncadres);
	var maxEncadrantsOK = verif(maxEncadrants);
	var maxAutonomesOK = verif(maxAutonomes);
	var maxAccompagnateursOK = verif(maxAccompagnateurs);
	var maxMinibusOK = verif(maxMinibus);
	var suppOK = verif(sup);
	var nb_plongeesOK = verif(nb_plongees);
	var timeOK = verifTimestamp(timestamp);
	var date_paiementOK = verifTimestamp(date_paiement);
	var maxEncadresNum = estChiffre(maxEncadres);
	var maxEncadrantsNum = estChiffre(maxEncadrants);
	var maxAutonomesNum = estChiffre(maxAutonomes);
	var maxAccompagnateursNum = estChiffre(maxAccompagnateurs);
	var maxMinibusNum = estChiffre(maxMinibus);
	var suppNum = estChiffre(sup);
	var nb_plongeesNum = estChiffre(nb_plongees);
	var cloreOK = estValide(clore);
		if (!maxEncadresNum || !maxEncadrantsNum || !maxAutonomesNum || !maxAccompagnateursNum || !maxMinibusNum || !suppNum || !nb_plongeesNum || !cloreOK)
		{alert("Le nombre max d'encadrés, encadrants... doit être un chiffre (composé de quatre 0 ou 1 pour forcer inscriptions closes) ainsi que le nombre de jours précédents la sortie où un participant ne peut plus se désinscrire et le nombre de plongées !");
		return false;}
		else
		{
		if (!timeOK || !date_paiementOK)
			{alert("Vous devez impérativement entrer la date sous la forme \"JJ/MM/AAAA HHh MMmin SSs\" en respectant les espaces et le nombre total de caractères !");
			return false;}
		if (nomOK && detailOK && maxEncadresOK && maxEncadrantsOK && maxAutonomesOK && maxAccompagnateursOK && maxMinibusOK && suppOK && nb_plongeesOK)
					{return true;}
			else
				{
				alert("Vous devez impérativement renseigner tous les champs et saisir la date sous la forme \"JJ/MM/AAAA HHh MMmin SSs\" en respectant les espaces et le nombre total de caractères !");
				return false;
				}
			
		}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verifTimestamp(t)
{if (t == null) return true;
var regex = /^([0-9]{2}[\/ -]){2}[0-9]{4} [0-9]{2}h [0-9]{2}min [0-9]{2}s$/i;
	if(regex.test(t.value))
		{return true;}
	else
		{return false;}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function estChiffre(c)
{
	if(isNaN(c.value))
		{return false;}
	else
		{return true;}
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function estValide(c)
{	var valeur;
	var i = 0;
	if(c.value.length != 4)
		{valeur = false;}
	else
		{for (i=0; i < c.value.length; i++)
			{
			if (c.value.charAt(i) != "0" && c.value.charAt(i) != "1")
				{valeur = false; break;}
			else
				{valeur = true;}
			}
		}
	return valeur;
}


/*-------------------------------------------------------------------------------------------------------------------------------------*/
//Affecte à notre cookie defaut_sorties la valeur de la variable $sorties_par_page ainsi qu'une nouvelle date de fin à 1 an.
function defaut_sorties(defaut)
{
var nom = 'defaut_sorties';
var expdate = new Date ();
expdate.setTime (expdate.getTime() + (365 * 24 * 60 * 60 * 1000));
document.cookie = nom + "=" + escape(defaut) + ";expires = " + expdate.toGMTString();
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
//Fonction pour insérer les smileys
function smiley(smile) {
smile = " "+smile+" ";

 var compgen = navigator.userAgent.toLowerCase();
 var navsafari = ((compgen.indexOf("safari") != -1) || (navigator.vfinor == "Apple"));
 var navie = ((compgen.indexOf("msie") != -1) && (!navopera) && (!navsafari) && (!navwebtv));
 var navopera = (compgen.indexOf("opera") != -1);
 var navwebtv = (compgen.indexOf("webtv") != -1);
 var oswin = ((compgen.indexOf("win") != -1) || (compgen.indexOf("16bit") != -1));
 var navers = parseInt(navigator.appVersion);
 var chem = document.getElementById("details");
 var fermer = false;

 if ((navers >= 4) && navie && oswin) {
 if (chem.isTextEdit) {
 chem.focus();
 var dselect = document.selection;
 var cr = dselect.createRange(); cr.colapse;
 if ((dselect.type == "Text" || dselect.type == "None") && cr != null) {
 fermer = true;
 cr.text = smile;
 }
 }
 else { fermer = true; chem.value += smile; }
 }
 else {
 if (chem.selectionEnd) {
 var selectdebut = chem.selectionStart;
 var selecthaut = chem.scrollTop;
 var selectfin = chem.selectionEnd;
 if (selectfin <= 2) { selectfin = chem.textLength; }
 var debut = (chem.value).substring(0, selectdebut);
 var milieu = (chem.value).substring(selectdebut, selectfin);
 var fin = (chem.value).substring(selectfin, chem.textLength);
 if (chem.selectionEnd - chem.selectionStart > 0) { milieu = smile + milieu; } else { milieu = smile + milieu; fermer = true; }
 chem.value = debut + milieu + fin;
 var cpos = selectdebut + (milieu.length);
 chem.selectionStart = cpos;
 chem.selectionEnd = cpos;
 chem.scrollTop = selecthaut;
 }
 else {
 fermer = true;
 chem.value += smile;
 }
 chem.focus();
 }
 return fermer;
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
//Fonction pour insérer les autres types de balises (autres que smileys)
function insertTag(startTag, endTag, tagType) {
        var field = document.getElementById("details"); 
        field.focus();
        
        /* === Partie 1 : on récupère la sélection === */
        if (window.ActiveXObject) {
                var textRange = document.selection.createRange();            
                var currentSelection = textRange.text;
	
        } else {
                var startSelection   = field.value.substring(0, field.selectionStart);
                var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
                var endSelection     = field.value.substring(field.selectionEnd);               
        }
        
        /* === Partie 2 : on analyse le tagType === */
        if (tagType) {
                switch (tagType) {
				
                        case "url":
        endTag = "[/url]";
        if (currentSelection) { // Il y a une sélection
                if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) {
                        // La sélection semble être un lien. On demande alors le libellé
                        var label = prompt("Entrez le libellé du lien") || "";
                        startTag = "[url=" + currentSelection + "]";
                        currentSelection = label;
                } else {
                        // La sélection n'est pas un lien, donc c'est le libelle. On demande alors l'URL
                        var URL = prompt("Entrez l'URL");
                        startTag = "[url=" + URL + "]";
                }
        } else { // Pas de sélection, donc on demande l'URL et le libelle
                var URL = prompt("Entrez l'URL") || "";
                var label = prompt("Entrez le libellé du lien") || "";
                startTag = "[url=" + URL + "]";
                currentSelection = label;                     
        }
                        break;
						
                   case "color":
        
        if (currentSelection) { // Il y a une sélection
				if (startTag != '')
					{startTag = "[color=" + startTag + "]";
					endTag = "[/color]";
					setTimeout("document.getElementById('color').selectedIndex=0",1000)}
			
        } else { // Pas de sélection, donc on demande le libelle

                if (startTag != '')
					{var label = prompt("Entrez le texte à colorer") || "";
					startTag = "[color=" + startTag + "]";
					endTag = "[/color]";
					setTimeout("document.getElementById('color').selectedIndex=0",1000)}
                currentSelection = label;                     
        }
                        break;
						
                   case "mail":
        endTag = "[/mail]";
        if (currentSelection) { // Il y a une sélection
			var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/
			if (regex.test(currentSelection)) {
                        // La sélection semble être un mail. On demande alors le nom du destinataire
                        var label = prompt("Entrez le nom du destinataire") || "";
                        startTag = "[mail=mailto:" + currentSelection + "]";
                        currentSelection = label;
                } else {
                        // La sélection n'est pas un lien, donc c'est le libelle. On demande alors le mail
                        var MAIL = prompt("Entrez l'adresse email");
                        startTag = "[mail=" + MAIL + "]";
                }
        } else { // Pas de sélection, donc on demande le mail et le libelle
                var MAIL = prompt("Entrez l'adresse email") || "";
                var label = prompt("Entrez le nom du destinataire") || "";
                startTag = "[mail=" + MAIL + "]";
                currentSelection = label;                     
        }
                        break;
						
				case "size":
        endTag = "[/size]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à tailler.
                        var SIZE = prompt("Entrez la taille de caractère (x fois la taille standard. Exemple : 1.3)");
                        startTag = "[size=" + SIZE + "]";
                
        } else { // Pas de sélection, donc on demande le texte à tailler
                var SIZE = prompt("Entrez la taille de caractère (x fois la taille standard. Exemple : 1.3)") || "";
                var label = prompt("Entrez le texte à écrire dans cette taille de caractère") || "";
                startTag = "[size=" + SIZE + "]";
                currentSelection = label;                     
        }
                        break;
						
				case "bold":
        endTag = "[/b]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à mettre en gras
                        
                        startTag = "[b]";
                
        } else { // Pas de sélection, donc on demande le texte à mettre en gras
                var label = prompt("Entrez le texte à mettre en gras") || "";
                startTag = "[b]";
                currentSelection = label;                     
        }
                        break;
						
				case "italic":
        endTag = "[/i]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à mettre en italique
                        
                        startTag = "[i]";
                
        } else { // Pas de sélection, donc on demande le texte à mettre en italique
                var label = prompt("Entrez le texte à mettre en italique") || "";
                startTag = "[i]";
                currentSelection = label;                     
        }
                        break;
						
				case "souligne":
        endTag = "[/u]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à souligner
                        
                        startTag = "[u]";
                
        } else { // Pas de sélection, donc on demande le texte à souligner
                var label = prompt("Entrez le texte à souligner") || "";
                startTag = "[u]";
                currentSelection = label;                     
        }
                        break;

				case "surligner":
        endTag = "[/o]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à surligner
                        
                        startTag = "[o]";
                
        } else { // Pas de sélection, donc on demande le texte à surligner
                var label = prompt("Entrez le texte à surligner") || "";
                startTag = "[o]";
                currentSelection = label;                     
        }
                        break;

				case "barrer":
        endTag = "[/s]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à barrer
                        
                        startTag = "[s]";
                
        } else { // Pas de sélection, donc on demande le texte à barrer
                var label = prompt("Entrez le texte à barrer") || "";
                startTag = "[s]";
                currentSelection = label;                     
        }
                        break;

				case "exposant":
        endTag = "[/e]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à mettre en exposant
                        
                        startTag = "[e]";
                
        } else { // Pas de sélection, donc on demande le texte à mettre en exposant
                var label = prompt("Entrez le texte à mettre en exposant") || "";
                startTag = "[e]";
                currentSelection = label;                     
        }
                        break;

				case "indice":
        endTag = "[/d]";
        if (currentSelection) { // Il y a une sélection
                        // La sélection est le texte à mettre en indice
                        
                        startTag = "[d]";
                
        } else { // Pas de sélection, donc on demande le texte à mettre en indice
                var label = prompt("Entrez le texte à mettre en indice") || "";
                startTag = "[d]";
                currentSelection = label;                     
        }
                        break;
						
				case "list":
        endTag = "[/list]";
        if (currentSelection) { // Il y a une sélection, on remplace les retours ligne par [*]
		var regex = /\n/g;
				currentSelection = currentSelection.replace(regex,'[*]');
                startTag = "[list][*]";
                
        } else { // Pas de sélection, donc on demande insère la balise telle quelle
                startTag = "[list][*]";                     
        }
                        break;
						
		case "listnum":
        endTag = "[/listnum]";
        if (currentSelection) { // Il y a une sélection, on remplace les retours ligne par [*]
		var regex = /\n/g;
				currentSelection = currentSelection.replace(regex,'[*]');
                startTag = "[listnum][*]";
                
        } else { // Pas de sélection, donc on demande insère la balise telle quelle
                startTag = "[listnum][*]";                     
        }
                        break;
                }
        }
        
        /* === Partie 3 : on insère le tout === */
        if (window.ActiveXObject && startTag!='') {
                textRange.text = startTag + currentSelection + endTag;
                textRange.moveStart("character", -endTag.length - currentSelection.length);
                textRange.moveEnd("character", -endTag.length);
                textRange.select();     
        } else {if (startTag != '')
                {field.value = startSelection + startTag + currentSelection + endTag + endSelection;
                field.focus();
                field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);}
        }       
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
//Fonctions permettant la communication AJAX pour vérifier, en page d'administration, si un licencié est bien inscrit
function writediv(texte)
     {
     document.getElementById('testlicence').innerHTML = texte;
     }

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function getXMLHttpRequest() {
        var xhr = null;
 
        if(window.XMLHttpRequest || window.ActiveXObject) {
                if(window.ActiveXObject) {
                        try {
                                xhr = new ActiveXObject("Msxml2.XMLHTTP");
                        } catch(e) {
                                xhr = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                } else {
                        xhr = new XMLHttpRequest();
                }
        } else {
                alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                return null;
        }
 
        return xhr;
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function file(fichier, nom, prenom, timestamp)
     {
	var xhr = getXMLHttpRequest();

    if(xhr && xhr.readyState != 0)
		{
                xhr.abort(); 
        }

	xhr.onreadystatechange = function()
		{if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
			{if (xhr.responseText == 1)
				writediv('<span style="color:#cc0000"><b>'+unescape(prenom)+' '+unescape(nom)+'</b> n\'est pas licencié(e) au club</span>');
			else if (xhr.responseText == 2)
				writediv('<span style="color:#1A7917"><b>'+unescape(prenom)+' '+unescape(nom)+'</b> est bien licencié(e) au club. Certificat médical OK à la date de cette sortie.</span>');
			else if (xhr.responseText == 3)
				writediv('<span style="color:#1A7917"><b>'+unescape(prenom)+' '+unescape(nom)+'</b> est bien licencié(e) au club.</span> <span style="color:#cc0000"><b>Certificat médical PÉRIMÉ à la date de cette sortie.</b></span>');				
			}
		else if(xhr.readyState == 2 || xhr.readyState == 3) writediv('<span style="color:#cc0000"><b>Absence de r&eacute;ponse du serveur</span>');
		}
		
	xhr.open("POST", fichier, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("newparticipant="+nom+"&newprenom="+prenom+"&newtimestamp="+timestamp);
     }

/*-------------------------------------------------------------------------------------------------------------------------------------*/
function verifLicence(nom, prenom, timestamp)
     {if (nom != '' && prenom != '')
               {
               file('testlicence.php', escape(nom), escape(prenom), escape(timestamp));	
				divshow();			   
				}
		else {divhide();}
     }

/*-------------------------------------------------------------------------------------------------------------------------------------*/	 
function hauteur (t, i, sens)
	{var hauteurini= t.offsetHeight;
	t.style.height = "auto";
	var hauteurfinale = t.offsetHeight;
	t.style.height = hauteurini + "px";
	var pas = 20;
		
	if (t.offsetHeight < hauteurfinale && sens == 1)
		{
		t.style.height = (t.offsetHeight + pas) + "px";
		
		if(t.offsetHeight >= hauteurfinale)
			{t.style.height = hauteurfinale + "px";
			document.getElementById('img_' + i).src = "../images/arrowup.png";
			t.nextSibling.title = "Réduire";
			return;}
		var tempo = setTimeout(function(){hauteur(t,i, 1);}, 1);
		}
		
	else
		{hauteurfinale = 90;
		t.style.height = (t.offsetHeight - pas) + "px";
		if(t.offsetHeight <= hauteurfinale)
			{t.style.height = hauteurfinale + "px";
			document.getElementById('img_' + i).src = "../images/arrowdown.png";
			t.nextSibling.title = "Agrandir";
			return;}
		var tempo = setTimeout(function(){hauteur(t,i, 0);}, 1);
		}
	}
/*-------------------------------------------------------------------------------------------------------------------------------------*/	 
function toutagrandir (i)
{for (var j=0;j<i;j++)
	{
	document.getElementById('div'+j).previousSibling.style.height = "auto";
	document.getElementById('img_'+j).src = "../images/arrowup.png";
	document.getElementById('div'+j).title = "Réduire";
	}
	document.location.href="#div"+(i-1);
}
/*-------------------------------------------------------------------------------------------------------------------------------------*/	 
function toutreduire (i)
{for (var j=0;j<i;j++)
	{
	document.getElementById('div'+j).previousSibling.style.height = "90px";
	document.getElementById('img_'+j).src = "../images/arrowdown.png";
	document.getElementById('div'+j).title = "Agrandir";
	}
	document.location.href="#div"+(i-1);
}

/*-------------------------------------------------------------------------------------------------------------------------------------*/	
var Mouse_X; // Variable globale Position X de la Mouse
var Mouse_Y; // Variable globale Position Y de la Mouse

function WhereMouse( e ){
  var DocRef;    // Variable pour IE uniquement

  // L'événement est passée à la fonction
  // donc tous sauf IE…
  if( e){                     // Dans ce cas on obtient directement la position dans la page
    Mouse_X = e.pageX;
    Mouse_Y = e.pageY;
  }
  else{                      // Dans ce cas on obtient la position relative à la fenêtre d'affichage
    Mouse_X = event.clientX;
    Mouse_Y = event.clientY;

    //-- Il faut traiter le CAS des DOCTYPE sous IE
    if( document.documentElement && document.documentElement.clientWidth) // Donc DOCTYPE
      DocRef = document.documentElement;   // Dans ce cas c'est documentElement qui est réfèrence
    else
      DocRef = document.body;                    // Dans ce cas c'est body qui est réfèrence

    //-- On rajoute la position liée aux ScrollBars
    Mouse_X += DocRef.scrollLeft;
    Mouse_Y += DocRef.scrollTop;
  }
}

function divshow()
	{	document.getElementById('testlicence').style.visibility = 'visible';
		document.getElementById('testlicence').style.left = (Mouse_X+30) +'px';
  		document.getElementById('testlicence').style.top = (Mouse_Y-55) +'px';
	}

function divhide()
	{	document.getElementById('testlicence').style.visibility = 'hidden';
	}
	
document.onmousemove = WhereMouse;
