  // ==== Expressions régulieres ====
  var modele = /^[a-zA-Z0-9\.\-_]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,5}$/i;
  var context_x =0;
  var context_y =0;
  var numCDCactuel= 0;

function context_position(e) {
  context_x = getMouseX(e);
  context_y = getMouseY(e);
}

function getMouseX(e){
    if (!e) var e = window.event;
   if(window.opera)                                                //OP6
           return e.clientX;
   else if(document.getElementById)               //N4,N6,Moz
           return e.pageX;
 }

function getMouseY(e){
    if (!e) var e = window.event;
   if(window.opera)                                                //OP6
           return e.clientY;
   else if(document.getElementById)               //N4,N6,Moz
           return e.pageY;
}

    document.onmousemove = context_position;


  // ==== Fonction d'affichage de la recherche avancée ====
  function viewSearch() {
    document.getElementById('rech_avancee_lightbox').style.visibility="visible";
    document.getElementById("rech_avancee_lightbox").style.top= eval(context_y)+"px";
    document.getElementById('page').className="fond_semiopaque";
  }
  
  // ==== Fonction de fermeture de la recherche avancée ====
  function closeSearch() {
    document.getElementById('rech_avancee_lightbox').style.visibility="hidden";
    document.getElementById('page').className="";
  }

  // ==== Fonction d'affichage de la carte ====
  function viewCarte() {
    document.getElementById("carte_lightbox").style.top= eval(context_y-80)+"px";
    document.getElementById('carte_lightbox').style.opacity="1";
    document.getElementById('carte_lightbox').style.visibility="visible";
    initialize();
  }

  // ==== Fonction de fermeture de la carte ====
  function closeCarte() {
    document.getElementById('carte_lightbox').style.visibility="hidden";
  }

  // ==== Fonction d'affichage de l'ajout d'avis ====
  function envoi_avis() {
    dj = new Date();
    document.getElementById("avis_lightbox").style.top= eval(context_y-230)+"px";
    document.getElementById('avis_lightbox').style.visibility="visible";
    document.getElementById('cfmFormAvis').innerHTML="<img src='include/cap.php?temp="+dj.getMinutes()+dj.getSeconds()+"' style='width:120px'>";
    document.getElementById('envoi_ami_lightbox').style.visibility="hidden";
    document.getElementById('contacter_lightbox').style.visibility="hidden";
  }

  // ==== Fonction de fermeture de l'ajout d'avis ====
  function close_envoi_avis() {
    document.getElementById('avis_lightbox').style.visibility="hidden";
  }

  // ==== Fonction d'affichage de l'envoi à un ami ====
  function envoi_ami() {
    dj = new Date();
    document.getElementById('envoi_ami_lightbox').style.visibility="visible";
    document.getElementById('cfmFormAmi').innerHTML="<img src='include/cap.php?temp="+dj.getMinutes()+dj.getSeconds()+"' style='width:120px'>";
    document.getElementById('avis_lightbox').style.visibility="hidden";
    document.getElementById('contacter_lightbox').style.visibility="hidden";
  }

  // ==== Fonction de fermeture de l'envoi à un ami ====
  function close_envoi_ami() {
    document.getElementById('envoi_ami_lightbox').style.visibility="hidden";
  }

    // ==== Fonction d'affichage de la confirmation de contact d'organisateur ====
  function focus_contacter() {
    dj = new Date();
    document.getElementById('confirmation_contact').style.display="block";
    document.getElementById('cfmFormFicheOrga').innerHTML="<img src='include/cap.php?temp="+dj.getMinutes()+dj.getSeconds()+"' style='width:120px'>";
  }
   
   // ==== Fonction pour cacher de la confirmation de contact d'organisateur ====
  function blur_contacter() {
	if (document.form_fiche_contacter.comment_textarea.value=="") {
	document.getElementById('confirmation_contact').style.display="none";
	document.form_fiche_contacter.comment_textarea.style.color='#888';
	document.form_fiche_contacter.comment_textarea.value="Écrivez votre message...";
	}
  }
  
  // ==== Fonction d'affichage du contact organisateur ====
  function contacter(num) {
    dj = new Date();
    document.getElementById('contacter_lightbox').style.visibility="visible";
    document.getElementById('cfmFormOrga').innerHTML="<img src='include/cap.php?temp="+dj.getMinutes()+dj.getSeconds()+"' style='width:120px'>";
    document.form_contacter.envoi_orga.value=num;
    document.getElementById('envoi_ami_lightbox').style.visibility="hidden";
    document.getElementById('avis_lightbox').style.visibility="hidden";
    if (num==1) document.getElementById('titre_orga').innerHTML="Contacter l'organisateur";
    if (num==2) document.getElementById('titre_orga').innerHTML="Réservez ce stage";
    if (num==3) document.getElementById('titre_orga').innerHTML="Offrez ce stage";
	document.getElementById('contacter_lightbox').style.top=eval(context_y-200)+"px";
  }

  // ==== Fonction d'affichage du contact organisateur (partenaire) ====
  function contacterPartenaire(num) {
    dj = new Date();
    document.getElementById('contacter_lightbox_partenaire').style.visibility="visible";
    document.getElementById('cfmFormOrga').innerHTML="<img src='include/cap.php?temp="+dj.getMinutes()+dj.getSeconds()+"' style='width:120px'>";
    document.form_contacter.envoi_orga.value=num;
    if (num==1) document.getElementById('titre_orga').innerHTML="Contacter l'organisateur";
    if (num==2) document.getElementById('titre_orga').innerHTML="Réservez ce stage";
    if (num==3) document.getElementById('titre_orga').innerHTML="Offrez ce stage";
	}
  
  // ==== Fonction de fermeture du contact organisateur ====
  function close_contacter() {
    document.getElementById('contacter_lightbox').style.visibility="hidden";
  }

  function verifavis() {
    if ( ((document.form_avis.email.value=="")||(modele.test(document.form_avis.email.value)!==true))
      && (document.form_avis.note.value!="-1")) {
      alert("Veuillez indiquer votre email.");
      return false;
    }
    if (document.form_avis.nom.value=="") {
      alert("Veuillez indiquer votre nom.");
      return false;
    }
    if (document.form_avis.titre.value=="") {
      alert("Veuillez remplir le titre.");
      return false;
    }
    if (document.form_avis.avis_textarea.value=="") {
      alert("Veuillez remplir la description de l'avis.");
      return false;
    }
    if ((document.form_avis.avis_textarea.value.indexOf("url=")>0)||(document.form_avis.avis_textarea.value.indexOf("href=")>0)) {
      alert("Vous ne devez pas indiquer de lien dans votre avis.");
      return false;
    }
    if (document.form_avis.cfmVal.value=="0") {
      alert("Le code indiqué ne correspond pas, veuillez le corriger.");
      return false;
    }
    obj=document.form_avis.note;
    if (obj.options[obj.selectedIndex].value=="-1") {
      alert("Veuillez donner une note.");
      return false;
    }
    return true;
  }

  function verifenvoiami() {
    if ((document.form_envoi_ami.expediteur.value=="")||(modele.test(document.form_envoi_ami.expediteur.value)!==true)) {
      alert("Veuillez indiquer l'expéditeur.");
      return false;
    }
    if ((document.form_envoi_ami.destinataire.value=="")||(modele.test(document.form_envoi_ami.destinataire.value)!==true)) {
      alert("Veuillez indiquer le destinataire.");
      return false;
    }
    if (document.form_envoi_ami.comment_textarea.value=="") {
      alert("Veuillez remplir le message.");
      return false;
    }
    if ((document.form_envoi_ami.comment_textarea.value.indexOf("url=")>0)||(document.form_envoi_ami.comment_textarea.value.indexOf("href=")>0)) {
      alert("Vous ne devez pas indiquer de lien dans votre message.");
      return false;
    }
    if (document.form_envoi_ami.cfmVal.value=="0") {
      alert("Le code indiqué ne correspond pas, veuillez le corriger.");
      return false;
    }
    return true;
  }

  function verifenvoiorga() {
    if ((document.form_contacter.expediteur.value=="")||(modele.test(document.form_contacter.expediteur.value)!==true)) {
      alert("Veuillez indiquer l'expéditeur.");
      return false;
    }

    if (document.form_contacter.comment_textarea.value=="") {
      alert("Veuillez remplir le message.");
      return false;
    }
    if ((document.form_contacter.comment_textarea.value.indexOf("url=")>0)||(document.form_contacter.comment_textarea.value.indexOf("href=")>0)) {
      alert("Vous ne devez pas indiquer de lien dans votre message.");
      return false;
    }
    if (document.form_contacter.cfmVal.value=="0") {
      alert("Le code indiqué ne correspond pas, veuillez le corriger.");
      return false;
    }
    return true;
  }

    function verifenvoificheorga() {
    if ((document.form_fiche_contacter.expediteur.value=="")||(modele.test(document.form_fiche_contacter.expediteur.value)!==true)) {
      alert("Veuillez indiquer l'expéditeur.");
      return false;
    }

    if (document.form_fiche_contacter.comment_textarea.value=="") {
      alert("Veuillez remplir le message.");
      return false;
    }
    if ((document.form_fiche_contacter.comment_textarea.value.indexOf("url=")>0)||(document.form_fiche_contacter.comment_textarea.value.indexOf("href=")>0)) {
      alert("Vous ne devez pas indiquer de lien dans votre message.");
      return false;
    }
    if (document.form_fiche_contacter.cfmVal.value=="0") {
      alert("Le code indiqué ne correspond pas, veuillez le corriger.");
      return false;
    }
    return true;
  }
  
  function checkCapOrga(code) {
    senddatas("modules/verifcaptcha.php",document.form_contacter,ret_checkCapOrga);
  }
  function checkCapAmi(code) {
    senddatas("modules/verifcaptcha.php",document.form_envoi_ami,ret_checkCapAmi);
  }
  function checkCapAvis(code) {
    senddatas("modules/verifcaptcha.php",document.form_avis,ret_checkCapAvis);
  }
   function checkCapOrgaMessage(code) {
    senddatas("modules/verifcaptcha.php",document.form_fiche_contacter,ret_checkCapOrgaMessage);
  } 
  function ret_checkCapOrga() {
    if ((xmlhttp.readyState == 4)&&(xmlhttp.status == 200)) {
      resultat = xmlhttp.responseText;
      if (resultat=="ok") document.form_contacter.cfmVal.value="1";
                     else document.form_contacter.cfmVal.value="0";
    }
  }
  function ret_checkCapAmi() {
    if ((xmlhttp.readyState == 4)&&(xmlhttp.status == 200)) {
      resultat = xmlhttp.responseText;
      if (resultat=="ok") document.form_envoi_ami.cfmVal.value="1";
                     else document.form_envoi_ami.cfmVal.value="0";
    }
  }
  function ret_checkCapAvis() {
    if ((xmlhttp.readyState == 4)&&(xmlhttp.status == 200)) {
      resultat = xmlhttp.responseText;
      if (resultat=="ok") document.form_avis.cfmVal.value="1";
                     else document.form_avis.cfmVal.value="0";
    }
  }
  function ret_checkCapOrgaMessage() {
    if ((xmlhttp.readyState == 4)&&(xmlhttp.status == 200)) {
      resultat = xmlhttp.responseText;
      if (resultat=="ok") document.form_fiche_contacter.cfmVal.value="1";
                     else document.form_fiche_contacter.cfmVal.value="0";
    }
  }  
  
  function contactsite(adrsite) {
    senddatas("modules/ouvresite.php",document.form_contactsite,ret_contactsite);
    window.open(adrsite,"_up");
  }
  function ret_contactsite() {
  }
  function contact1001(adr) {
    window.open("mai"+"lto:"+adr+"@"+"1001"+"stages"+".com","_self");
  }
  function veriftxt() {
      if ((document.form_rech_rapide.recherche.value=="Sujet, mot-clé, thème ...")||(document.form_rech_rapide.recherche.value=="")) {
        if ((document.form_rech_rapide.rech_lieu.value=="Ville, région, pays ...")||(document.form_rech_rapide.rech_lieu.value=="")) {
          alert('Veuillez indiquer au moins un mot-clé.');
          return false;
        }
      }
      
      if (document.form_rech_rapide.recherche.value=="Sujet, mot-clé, thème ...") {
        document.form_rech_rapide.recherche.value="";
      }
      if (document.form_rech_rapide.rech_lieu.value=="Ville, région, pays ...") {
        document.form_rech_rapide.rech_lieu.value="";
      }

      document.form_rech_rapide.action= "recherche-"+AccentToUrl(document.form_rech_rapide.recherche.value)
        +((document.form_rech_rapide.rech_lieu.value.length!=0)?((document.form_rech_rapide.recherche.value.length==0)?"lieu-":"-")
        +AccentToUrl(document.form_rech_rapide.rech_lieu.value):"")+".html";
  }

  // Validation et envoi du nouveau fournisseur
	function validnews() {
			if ((document.form_news.email.value =='')||(modele.test(document.form_news.email.value)!==true)) {
	      document.getElementById("alertMail").innerHTML     = "L'email indiqué n'est pas valide.";
        document.form_news.email.focus();
				return false;
			}
    return true;
  }
  
    function nettoiecaseh_rech() {
      if (document.form_rech_rapide.recherche.value=='Sujet, mot-clé, thème ...') {
        document.form_rech_rapide.recherche.value='';
        document.form_rech_rapide.recherche.style.color='#000'; duplique_rech(document.form_rech_rapide.recherche.value);
      }
    }

    function nettoiecaseh_lieu() {
      if (document.form_rech_rapide.rech_lieu.value=='Ville, région, pays ...') {
        document.form_rech_rapide.rech_lieu.value='';
        document.form_rech_rapide.rech_lieu.style.color='#000';
        duplique_lieu(document.form_rech_rapide.rech_lieu.value);
      }
    }


  // ==== Fonction de mise en valeur des familles ====
  function hlFamille(tabFamille,espace,change) {
    if (tabFamille.className=="") {
      couleur= (espace<10?"0":"")+espace;
      
      for (i=1;i<11;i++) {
        j=(i<10?"0":"")+i;
        document.getElementById("tabFamille"+j).className="";
        document.getElementById("mavFamille"+j).style.visibility="hidden";
      }
   
      tabFamille.className="rub"+couleur;
      document.getElementById("coup_de_coeur").className="box square rub"+couleur;
      document.getElementById("fiche_coup_de_coeur").innerHTML=cdc[change];
      document.getElementById("mavFamille"+couleur).style.visibility="visible";
    }
  }

  // ==== Fonction de mise en valeur des themes ====
  function hlTheme(tabTheme,espace,couleur,change) {
    if (tabTheme.className!="hover") {
      numCDCactuel=espace;
      tabTheme.className="rub"+(couleur<10?"0":"")+couleur;
      valid("modules/coupde_coeur_famille.php?id="+change+"&num="+espace,charge_cdc_theme);
    }
  }

  // ==== Fonction de suppression de mise en valeur des themes ====
  function nmTheme(tabTheme,espace) {
    if (tabTheme.className!="hover") tabTheme.className="";
  }

  // ==== Affichage des coups de coeur ====
  function charge_cdc_theme() {
    if ((xmlload.readyState == 4)&&(xmlload.status == 200)) {
      removeCadre = document.getElementById('coup_de_coeur');
      if (removeCadre) {
        removeCadre.parentNode.removeChild(removeCadre);
      }
      contenu_actuel= document.getElementById('center_col').innerHTML;
      document.getElementById('center_col').innerHTML = contenu_actuel+xmlload.responseText;
    }
  }
  
  // ==== Fonction de synchronisation de la recherche ====
  function duplique_rech(texte) {
    memotexte=texte;
    document.form_rech_rapide.recherche.value=memotexte;
    if (document.form_rech_tel) document.form_rech_tel.recherche.value=memotexte;
    //document.form_recherche.recherche.value=memotexte;
  }

  // ==== Fonction de synchronisation du lieu ====
  function duplique_lieu(texte) {
    memotexte=texte;
    if (document.form_rech_tel) document.form_rech_tel.rech_lieu.value=memotexte;
    //document.form_recherche.rech_lieu.value=memotexte;
    document.form_rech_rapide.rech_lieu.value=memotexte;
  }
  // ==== Fonction de synchronisation du lieu ====
  function duplique_sel_lieu(texte) {
    memotexte=texte;
    if (document.form_rech_tel) document.form_rech_tel.rech_lieu.value=memotexte;
    //document.form_recherche.rech_lieu.value=memotexte;
    document.form_rech_rapide.rech_lieu.value=memotexte;
  }

  // ==== Fonction de synchronisation de la rubrique ====
  function duplique_rub(obj) {
    memovalue=obj.options[obj.selectedIndex].value;
    memoobj=  obj.name;
    var spanNodes = document.getElementsByTagName('select');
      for(var i=0; i<spanNodes.length; i++) {
        if (spanNodes[i].name==memoobj) spanNodes[i].value=memovalue;
    }
  }

// Remplace toutes les occurences d'une chaine
function replaceAll(str, search, repl) {
while (str.indexOf(search) != -1)
str = str.replace(search, repl);
return str;
}

// Remplace les caractères accentués
function AccentToUrl(str) {
var norm = new Array('&','#',':',';','.','?','!',',',' ','+','*','"',"'",'=','/','(',')','_','|','À','Á','Â','Ã','Ä','Å','Æ','œ','æ','Œ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï', 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß', 'à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ', 'ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ý','þ','ÿ');
var spec = new Array('-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','A','A','A','A','A','A','AE','oe','ae','OE','C','E','E','E','E','I','I','I','I', 'D','N','O','O','O','0','O','O','U','U','U','U','Y','b','s', 'a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n', 'o','o','o','o','o','o','u','u','u','u','y','y','b','y');
for (var i = 0; i < spec.length; i++)
str = replaceAll(str, norm[i], spec[i]);
return str;
}

// Remplace les caractères accentués sauf espace
function AccentToNoAccent(str) {
var norm = new Array('&','#',':',';','.','?','!',',','+','*','"',"'",'=','/','(',')','_','|','À','Á','Â','Ã','Ä','Å','Æ','œ','æ','Œ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï', 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß', 'à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ', 'ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ý','þ','ÿ');
var spec = new Array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','A','A','A','A','A','A','AE','oe','ae','OE','C','E','E','E','E','I','I','I','I', 'D','N','O','O','O','0','O','O','U','U','U','U','Y','b','s', 'a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n', 'o','o','o','o','o','o','u','u','u','u','y','y','b','y');
for (var i = 0; i < spec.length; i++)
str = replaceAll(str, norm[i], spec[i]);
return str;
}

// Masque ou affiche un pavé rubrique
function gestion_pave_rub(numero) {
  pave=document.getElementById("pave_rubrique_"+numero).style;
  btpv=document.getElementById("bt_rubrique_"+numero);
  if (pave.display=="none") { pave.display="block";
                              btpv.src="img/img_html/btn_divers/btn_moins_04_10x10.png"; }
                       else { pave.display="none";
                              btpv.src="img/img_html/btn_divers/btn_plus_04_10x10.png"; }
  
}






var dragged = null;
var dX, dY;

function start_drag(objet,event)
{
	if( objet.max) return; 
  dragged = objet;

	event.returnValue = false;
	if( event.preventDefault ) event.preventDefault();

  var x = event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);
  var y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);

  if ((objet.id=="telecommande_lightbox")||(objet.id=="envoi_ami_lightbox")||(objet.id=="avis_lightbox")||(objet.id=="contacter_lightbox")) {
    x+=30;
    y+=170;
  }

  var eX = 0;
  var eY = 0;
  var element = objet;
  do
  {
    eX += element.offsetLeft;
    eY += element.offsetTop;
    element = element.offsetParent;
	} while( element && getCssStyleValue(element, 'position') != 'absolute');

  dX = x - eX;
  dY = y - eY;

}

function min_max(fenetre)
{
  if( ! fenetre.max )
  {
    fenetre.max = true;
    fenetre.oldTop = fenetre.style.top;
    fenetre.oldLeft = fenetre.style.left;
    fenetre.oldWidth = fenetre.style.width;
    fenetre.oldHeight = fenetre.style.height;

    fenetre.style.top = 0;
    fenetre.style.left = 0;
    fenetre.style.width = '100%';
    fenetre.style.height = '100%';
  }
  else
  {
    fenetre.max = false;
    fenetre.style.top = fenetre.oldTop;
    fenetre.style.left = fenetre.oldLeft;
    fenetre.style.width = fenetre.oldWidth;
    fenetre.style.height = fenetre.oldHeight;
  }
}

function close(fenetre)
{
  fenetre.style.display = 'none';
}
function drag_onmousemove(event)
{
  if( dragged )
  {
    var x = event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);
    var y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);

		//On applique le décalage
		x -= dX;
		y -= dY;

    dragged.style.position = 'absolute';
    dragged.style.left = x + 'px';
    dragged.style.top = y + 'px';
  }
}

function drag_onmouseup(event)
{
  dragged = null; 
}

function addEvent(obj,event,fct)
{
  if( obj.attachEvent)
     obj.attachEvent('on' + event,fct);
  else
     obj.addEventListener(event,fct,true);
}

function getCssStyleValue(element /*element html*/, style/*style recherché*/)
{
  if( element.currentStyle )
  {
    return element.currentStyle[style];
  }
  else
  {
    return window.getComputedStyle(element,null).getPropertyValue(style);
  }
}

function drag_onmousedown (event)
{
  var target = event.target || event.srcElement;

  var fenetre = target;
  while( fenetre)
  {
    if( fenetre.className && fenetre.className.match(/\btelecommande\b/g) )
    {
       break; 
    }
		fenetre = fenetre.parentNode;
  }
  if( !fenetre)
    return;

  var element = target;
  while(element)
  {
    if( element.className)
    {
      if( element.className.match(/\bwindow-close\b/g))
      {
        close(fenetre);
        break;
      }
      else if( element.className.match(/\bwindow-min-max\b/g) )
      {
        min_max(fenetre);
        break;
			}
      else if( element.className.match(/\bbox-header\b/g)||element.className.match(/\btitre\b/g)
      ||element.className.match(/\btitre_fenetre\b/g) )
      {
        start_drag(fenetre, event);
        break;
      }
    }
		element = element.parentNode;
  }

	var elements = document.getElementsByTagName('*'); 
	var zIndex = 0;
	for( var i=0; i < elements.length; i++)
	{
					zIndex = Math.max(zIndex,elements[i].style.zIndex);
	}
	fenetre.style.zIndex = zIndex + 1;

}
addEvent(document,'mousedown',drag_onmousedown);
addEvent(document,'mousemove',drag_onmousemove);
addEvent(document,'mouseup',drag_onmouseup);


var urlPage = document.location.href;
urlPage= urlPage.replace(/(http:\/\/)/, "");
urlPage= urlPage.replace(/(localhost\/)/, "");
urlPage= urlPage.substring(urlPage.indexOf("/")+1);
urlPage= urlPage.replace(/(\.html)/, "");
urlPage= urlPage.replace(/(\.php)/, "");

if (urlPage.indexOf("-")>0) urlType= urlPage.substring(0,urlPage.indexOf("-"));
                       else urlType= urlPage;
