function $(id) {
   if (document.getElementById(id))
      return document.getElementById(id);
   else return false;
}
   function resize_frame(frameobj) { // resize le div complet pour "suivre"
     frameobj.style.height = "1px";
     frameobj.style.height = (frameobj.contentWindow.document.body.scrollHeight+30)+"px";
   }


   function getClientSize() {
     var myWidth = 0, myHeight = 0;
     if( typeof( window.innerWidth ) == 'number' ) {
       //Non-IE
       myWidth = window.innerWidth;
       myHeight = window.innerHeight;
     } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
       //IE 6+ in 'standards compliant mode'
       myWidth = document.documentElement.clientWidth;
       myHeight = document.documentElement.clientHeight;
     } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
       //IE 4 compatible
       myWidth = document.body.clientWidth;
       myHeight = document.body.clientHeight;
     }
     return [ myWidth, myHeight ];
   }

   function getScrollXY() {
     var scrOfX = 0, scrOfY = 0;
     if( typeof( window.pageYOffset ) == 'number' ) {
       //Netscape compliant
       scrOfY = window.pageYOffset;
       scrOfX = window.pageXOffset;
     } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
       //DOM compliant
       scrOfY = document.body.scrollTop;
       scrOfX = document.body.scrollLeft;
     } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
       //IE6 standards compliant mode
       scrOfY = document.documentElement.scrollTop;
       scrOfX = document.documentElement.scrollLeft;
     }
     return [ scrOfX, scrOfY ];
   }


   var IEfader = (navigator.appName == "Microsoft Internet Explorer");

   var fadings = new Array();

   function fade_in(id,op,max) {
     if (!fadings[id] || fadings[id] == "") fadings[id] = "in";
     if (fadings[id] == "in") {
      if (element = $(id)) {
          if (op==0) element.style.visibility = "visible";
          //if (element.style.visibility != "visible") element.style.visibility = "visible";
          if (op>max) op=max;
          if (IEfader)
            element.style.filter = "alpha(opacity="+op+")";
          else {
            element.style.opacity = (op / 100);
            element.style.MozOpacity = (op / 100);
          }
          if (op < max) setTimeout('fade_in("'+id+'",'+(op+15)+','+max+');',55);
          else fadings[id] = "";
      }
     }
     else { //sinon attendre...
        setTimeout('fade_in("'+id+'",'+op+','+max+');',75);
     }
    }

    function fade_out(id,op,min) {
      if (!fadings[id] || fadings[id] == "") fadings[id] = "out";
      if (fadings[id] == "out") {
       if (element = $(id)) {
          if (op < min) op=min;
          if (IEfader)
            element.style.filter = "alpha(opacity="+op+")";
          else {
            element.style.opacity = (op / 100);
            element.style.MozOpacity = (op / 100);
          }

          if (op==0) element.style.visibility = "hidden";

          if (op>min) setTimeout('fade_out("'+id+'",'+(op-15)+','+min+');',55);
          else fadings[id] = "";
       }
       else { //sinon attendre...
         setTimeout('fade_out("'+id+'",'+op+','+min+');',75);
      }
     }
   }


   /* ------------------  Fonctions de fenêtres "génériques"..  ------ */
    function Ouvrir(id) {
      if (!IEfader)
        fade_in(id,0,100);
      $(id).style.display = "block";
    }

    function Fermer(id) {
      if (!IEfader)
        fade_out(id,70,0);
      else $(id).style.display = "none";
    }


/* ------------------  Fonction de base pour capture / drag de la souris..  ------ */

   var nowX = 0;
   var nowY = 0;
   var curr_z = 200;

   var sourisX1 = 0;
   var sourisY1 = 0;
   var objX1 = 0;
   var objY1 = 0;
   var initialise = false;

   function getMouseXY(e) {
      var posX = 0;
      var posY = 0;
      var e = (!e) ? window.event : e;
      if (e.pageX || e.pageY) {
         posX = e.pageX;
         posY = e.pageY;
      }
      else if (e.clientX || e.clientY) {
         if (document.body.scrollLeft || document.body.scrollTop) {
            posX = e.clientX + document.body.scrollLeft;
            posY = e.clientY + document.body.scrollTop;
         }
         else {
            posX = e.clientX + document.documentElement.scrollLeft;
            posY = e.clientY + document.documentElement.scrollTop;
         }
      }
      nowX = posX;
      nowY = posY;
   }

   /* onmousemove appelle toujours getMouseXY, */
   /* pour s'assurer que lorsqu'on commence un drag, on a une valeur de nowX et nowY valide */   
   document.onmouseup = function() {
       document.onmousemove = function(e) { getMouseXY(e); }       
   }
   document.onmousemove = function(e) { getMouseXY(e); }

    function drag(id) {
       obj = $(id);
       obj.style.zIndex = curr_z++;
       /* initialise les positions relatives au début du drag */
       sourisX1 = nowX;
       sourisY1 = nowY;
       objX1 = obj.offsetLeft;
       objY1 = obj.offsetTop;
       /* redéfinis la fonction temporairement (jusqu'à "onmouseup") */
       document.onmousemove = function(e) {
           getMouseXY(e);
           newX = (objX1-sourisX1+nowX);
           newY = (objY1-sourisY1+nowY);
           obj.style.left = newX+"px";
           obj.style.top = newY+"px";
       }
   }


   /* ------------------  Fin des fonctions de capture de la souris..  ------ */


/* ---------------------------------------------------------------
 *
 *          Fonctions ALBUM PHOTOS
 *
 * -------------------------------------------------------------*/

var album_page_active = "";
var album_photo_active = "";
var album_page_back_admin = "";
var album_photo_back_admin = "";

function AfficheAlbumThumbs(idalbum) {
   if ( $('album_pres_thumbs')) {
     //window.scroll(0,0);
     $('album_pres_thumbs_titre').innerHTML = $('album_titre_page_'+idalbum).innerHTML;

     if (album_page_active != idalbum) {
       // patch pour historique, pas grave puisque bouton non clicable lorsque sélectionné !
        if (album_page_active != "" && $('album_thumbs_page_'+album_page_active))
            $('album_thumbs_page_'+album_page_active).style.display = "none";
        album_page_active = idalbum;

        if ($('album_thumbs_page_'+idalbum)) Ouvrir('album_thumbs_page_'+idalbum);
     }

   }
}
var effacer_photo = false;
function AfficheAlbumPhoto(idphoto) {
  if (!effacer_photo) {
   histo_iframe = false;
   AjusteFiltre();
   fade_in("overlay_filtre",0,55);
   $('overlay_filtre').style.display = 'block';
/*
   if ($('album_pres_conteneur').style.display != "block"
       || $('album_pres_conteneur').style.visibility == "hidden" )
      Ouvrir('album_pres_conteneur');
*/
   $('album_pres_conteneur').style.display = "block";
   $('album_pres_conteneur').style.top = (getScrollXY()[1]+15)+"px";
   $('album_pres_conteneur').style.left = (getScrollXY()[0]+15)+"px";

   if ( $('album_pres_photo') && $('album_photo_src_'+idphoto)) {
     if (album_photo_active != idphoto) {
       /*$('album_pres_photo').style.visibility = "hidden";*/
       fade_out('album_pres_photo',10,0);
       album_photo_active = idphoto;

       $('album_pres_titre').innerHTML = $('album_photo_titre_'+idphoto).innerHTML;
       $('album_pres_photo').innerHTML = '<img src="'+$('album_photo_src_'+idphoto).innerHTML+'" onmousedown="return false;" ondrag="return false;" />';

       setTimeout("fade_in('album_pres_photo',0,100);",200); // puisque juste l'image, IE AUSSI, donc fade_in sans "ouvrir" ! :)

       $('album_pres_contenu').innerHTML = $('album_photo_contenu_'+idphoto).innerHTML;
     }
   }
  }
}
function FermeAlbumPhoto() {
   $('album_pres_conteneur').style.display = 'none';
   $('overlay_filtre').style.display = 'none';

   /*fade_out("overlay_filtre",70,0);*/

   if ($('div_modifier_album_photo') && $('div_modifier_album_photo').style.display=="block") {
      Annuler('div_modifier_album_photo');
   }
   histo_iframe = true;
}

   /* ------------------  Fin des fonctions de l'album photo..  ------ */



/* ---------------------------------------------------------------
 *
 *          Fonctions du MENU DÉROULANT
 *
 * -------------------------------------------------------------*/

var sm_actif = "aucun";
var sm_ancien = "aucun";

var pompe = 1;              // menu déroulants: contourne des petits problèmes (diff. IE vs FIREFOX)..

var hauteurs = Array();

function Enlever(Sousmenu) {
  if (sm_actif != Sousmenu) {
     $(Sousmenu).style.visibility="hidden";
  }
}
function Apparait(Sousmenu) {
  if (Sousmenu != sm_actif) {
    sm_actif = Sousmenu;
    
    for (i = 1; i <= nombre_items_menu; i++) {if (("sm_"+i) != sm_actif) Enlever("sm_"+i);}  
    
    if (Sousmenu != "aucun") {

      /* mettre en commentaire pour enlever l'effet déroulant : */
      if ($(Sousmenu).style.visibility != "visible") {
        if (!hauteurs[Sousmenu])
           hauteurs[Sousmenu] = $(Sousmenu).scrollHeight;

        maxy = hauteurs[Sousmenu];
        pompe = 15;
        $(Sousmenu).style.height = pompe+"px";

        // les vitesse sont différentes selon les navigateurs
        // premier chiffre : milisecondes entre les rafraichissements
        // deuxième chiffre : nombre de pixel qu'on agrandit à chaque rafraichissements
         if (IEfader) {
             Deroule(Sousmenu,40,40,maxy-2);
         }
         else {
             Deroule(Sousmenu,40,40,maxy);
             fade_in(Sousmenu,50,95);
         }
         $(Sousmenu).style.visibility="visible";
      }
    	
    }
  }
}
function Deroule(Sousmenu,ms,dy,maxy) {
    Numero = Sousmenu;
    milisec = ms;
    deltay = dy+10;
    max = maxy;
    //if (Sousmenu == sm_actif) {
        if ((pompe + dy) >= maxy)
            $(Sousmenu).style.height = maxy+"px";
        else {
            pompe = pompe+dy;
            $(Sousmenu).style.height = pompe+"px";
            setTimeout("Deroule(Numero,milisec,deltay,max)",milisec);
        }
    //}
}
function Disparait(Sousmenu) {
	sm_actif = "aucun";   
   if (IEfader) {setTimeout("Enlever('"+Sousmenu+"')",1200);}
		else {setTimeout("Enlever('"+Sousmenu+"')",900);}

}

function OverMenu(Sousmenu)	{
    sm_actif = Sousmenu;
}

function OutMenu(Sousmenu) {
	sm_actif = "aucun";
	Numero = Sousmenu;
	if (IEfader) {setTimeout("Enlever(Numero);",900);}
		else {setTimeout("Enlever(Numero);",600);}

}


function AjusteFiltre() {
   if (filtre = $("overlay_filtre")) {
      cl = getClientSize();
      sc = getScrollXY();

      filtre.style.width = (cl[0])+ "px";
      filtre.style.height = (cl[1])+ "px";
      filtre.style.left = (sc[0])+'px';
      filtre.style.top = (sc[1])+'px';

   }
}
window.onresize = function() {
   AjusteFiltre();
}
window.onscroll = function() {
   AjusteFiltre();
}


/* *******************************************************
 *    Fonctions pour AJAX
 *
 * ******************************************************* */
var edition_active = false;

function CheckEdition() {
   if ($("msg_admin"))
     $("msg_admin").innerHTML = "&nbsp;";
   if (edition_active) {
      if (est_admin) {
         alert("Vous devriez finir ce que vous avez commencé !\nEnregistrez ou annulez vos modifications puis ré-essayez.");
         $("msg_admin").innerHTML = "Finissez ou annulez ce que vous êtes en train de faire.";
      }
      else
         alert("Vous êtes déjà en train de changer de page...");
      return false;
   }
   else {
      edition_active = true;
      return true;
   }
}

var ajaxContenu = new Ajax();

var showContenu = function(str) {
  edition_active = false;
  $("contenu_pages").innerHTML = str;
  //if (!est_admin && !cache_pages[section_active][page_active])
  //   cache_pages[section_active][page_active] = str;
  if (!IEfader) {
      fadings['contenu_pages'] = "in"; // stop explicitement le fade-out ! :)
      fade_in('contenu_pages',40,100);
  }
  //fadings['sablier'] = "out";
  //fade_out('sablier',60,0);

  if ($('grille_cal_col')) GetCalCol(0);
  
  if (section_active != 'articles') article_actif = 0;
  else getArchivesArticles();
  if (section_active != 'commerces') entr_actif = 0;
  else getListeEntreprises();

  if ($('album_premiere_page')) {
    if (album_page_back_admin == "") {
      AfficheAlbumThumbs($('album_premiere_page').innerHTML);
      //AfficheAlbumPhoto($('album_premiere_photo').innerHTML);

    }
    else {
      AfficheAlbumThumbs(album_page_back_admin);
 
      if (album_photo_back_admin != "")
         AfficheAlbumPhoto(album_photo_back_admin);
      album_page_back_admin = "";
      album_photo_back_admin = "";
    }
  }

  effacer_photo = false;  
}


function getContenuPatch(s,p) { /* Patch pour l'historique (retour du iframe..) */
   document.title = (est_admin?'ADMIN - ':'')+liste_ts[s][p][0];
   window.scroll(0,0);
   //fade_in("sablier",0,80);

   section_active = s;
   page_active = p;   

   album_page_active = "";
   album_photo_active = "";
   art = ""
   if (article_actif != "") art = "&art="+article_actif;
   if (s == "articles" && art == "") art = "&art=0";
   entr = ""
   if (entr_actif != "") entr = "&entr="+entr_actif;
   if (s == "commerces" && entr == "") entr = "&entr=0";


   ajaxContenu.doGet('zen_sections_contenu.php?s='+s+'&p='+p+art+entr, showContenu);

   if (!IEfader) {
      fade_out("contenu_pages",90,20);
   }


   $('sommaire_cal_ev').style.display = "none";
   if (section_active != 'articles') $('archives_articles').style.display = "none";
   if (section_active != 'commerces') $('liste_entreprises').style.display = "none";
}

var alterne_img = 0;
var histo_iframe = true;


function getContenu(s,p) {
 if (section_active == 'articles' && section_active == s) { section_active = ""; if (!est_admin) article_actif = 0; } //bypass pour ré-afficher la page tout le temps !
 if (section_active == 'commerces' && section_active == s) { section_active = ""; if (!est_admin) entr_actif = 0; } //bypass pour ré-afficher la page tout le temps !

 if (est_admin || (section_active != s || page_active != p)) {
  if (CheckEdition()){
   histo_iframe = false;
   $('iframe_historique').src='zen_historique.php?s='+s+'&p='+p;
   getContenuPatch(s,p);
   if (!est_admin) {
      try { pageTracker._trackPageview(liste_fp[s][p]+'.php');  } catch(err) {}
   }   
  }
 }
}

var article_actif = 0;


var ajaxArticles = new Ajax();
var showArchivesArticles = function(str) {
   $('archives_articles').innerHTML = str;
   //$('archives_articles').style.display = "block";
}
function getArchivesArticles(){  

   if ($('archives_articles').innerHTML == "") {
      // n'est chargé qu'une seule fois !
      ajaxArticles.doGet('zen_archives_articles.php', showArchivesArticles);
   }
   //else
   //   $('archives_articles').style.display = "block";
   if ($('archives_articles').style.display != "block")
      Ouvrir('archives_articles');
  
}

function getArticle(art){
 if (est_admin || art == 0 || art != article_actif) {
  if (CheckEdition()){
   document.title = liste_ts['articles'][0][0];
   
   histo_iframe = false;
   $('iframe_historique').src='zen_historique.php?s=articles&p=0&art='+art;
   article_actif = art;
   getContenuPatch('articles',0);
   if (!est_admin) {
     // try { pageTracker._trackPageview('articles.php?art='+art); } catch(err) {}
   }
  }
 }
}



var entr_actif = 0;
var dernier_q = "_toutes_";

var ajaxEntreprise = new Ajax();
var showListeEntreprises = function(str) {
   $('liste_entreprises').innerHTML = str;
   //$('liste_entreprises').style.display = "block";
   if (!est_admin) $("q_entr").focus();
}
function getListeEntreprises(){
   q = "_toutes_";
   if ($('q_entr')) {
      test = $('q_entr').value;
      if (test != "") q = test;
   }

   if (dernier_q != q || $('liste_entreprises').innerHTML == "") {

      if ($('bouton_q_entr')) {
         $('bouton_q_entr').value='recherche...';
         $('bouton_q_entr').disabled=true;
      }
      q = encodeURIComponent(q);
      // n'est chargé que lorsqu'on en a besoin...
      ajaxEntreprise.doGet('zen_liste_entreprises.php?q='+q, showListeEntreprises);
   }
   //else
   if ($('liste_entreprises').style.display != "block")
      Ouvrir('liste_entreprises');
   dernier_q = q;
}

function getEntreprise(entr){
 if (est_admin || entr == 0 || entr != entr_actif) {
  if (CheckEdition()){
   document.title = liste_ts['commerces'][0][0];

   histo_iframe = false;
   $('iframe_historique').src='zen_historique.php?s=commerces&p=0&entr='+entr;
   entr_actif = entr;
   getContenuPatch('commerces',0);
   if (!est_admin) {
     // try { pageTracker._trackPageview('commerces.php?entr='+entr); } catch(err) {}
   }
  }
 }
}


function ChangeOnglet(id,prefix) {
 if (prefix === undefined) prefix = "";
 if (!edition_active) {
   if ($(prefix+'onglet_actif')) {
      ferme = $(prefix+'onglet_actif').innerHTML;
      $(prefix+'onglet_actif').innerHTML = id;
      if (ferme != id) {

         $(prefix+'onglet_'+ferme).style.display = "none";
         $(prefix+'menu_onglet_'+ferme).className = "";
         $(prefix+'menu_onglet_'+id).className = "onglet_selection";
         Ouvrir(prefix+'onglet_'+id);
      }
   }
 }
}

function ChangeVOnglet(id, prefix) {
 if (prefix === undefined) prefix = "";
 if (!edition_active) {
   if ($(prefix+'vonglet_actif')) {
      ferme = $(prefix+'vonglet_actif').innerHTML;
      $(prefix+'vonglet_actif').innerHTML = id;
      if (ferme != id) {

         $(prefix+'vonglet_'+ferme).style.display = "none";
         $(prefix+'menu_vonglet_'+ferme).className = "";
         $(prefix+'menu_vonglet_'+id).className = "vonglet_selection";
         Ouvrir(prefix+'vonglet_'+id);
      }
   }
 }
}

function ChercheMenu() {
   q = $('cherche_menu_q').value;
   $('cherche_menu_resultats').innerHTML = "";
   if (q != '') {
      question = new RegExp("("+q.replace(/\s/g,").*(")+")","i");

      resultats = "<ul>";
      nb_res = 0;
      for (i in liste_ts)
         for (j in liste_ts[i])
            if (question.test(liste_ts[i][j][1]) || question.test(liste_fp[i][j])) {
               nb_res++;
               if (nb_res%12 == 0) resultats += "</ul><ul>";
               resultats += '<li onmouseover="this.style.backgroundColor=\'#ddffdd\';" onmouseout="this.style.backgroundColor=\'transparent\';" onclick="getContenu(\''+i+'\','+j+');">'+liste_ts[i][j][1]+'</li>';
            }


      // Parcourir aussi les liens externes, avec un mouseover d'une autre couleur ? :)
       for (i in liste_le)
           if (question.test(liste_le[i][0])) {
               nb_res++;
               if (nb_res%12 == 0) resultats += "</ul><ul>";
               resultats += '<li onmouseover="this.style.backgroundColor=\'#ffddcc\';" onmouseout="this.style.backgroundColor=\'transparent\';" onclick="if (!edition_active) window.location.href=\''+liste_le[i][1]+'\'">'+liste_le[i][0]+'</li>';
            }
      
      if (nb_res == 0) resultats += "<h4 style='text-align:center;'>Aucun résultats</h4>";
      resultats += "</ul>";


      $('cherche_menu_resultats').innerHTML += resultats;

      $('cherche_menu_resultats').style.display = "block";
      //if (!IEfader)
         fade_in('cherche_menu_resultats',90,90);
   }
   else $('cherche_menu_resultats').style.display = "none";
}


function FermeChercheMenu() {

   setTimeout("$('cherche_menu_resultats').style.display = 'none';",200);

}
