function iFrameHeightX( iFrameId ) {
  var h = 0;
  
  if(navigator.appName == "Netscape"){
    var frame = document.getElementById(iFrameId);
    if(frame){
      h = frame.contentWindow.document.body.scrollHeight;
      frame.style.height = h;
      frame.height = h;
    }
  }else{
    if ( !document.all ) {
      h = document.getElementById(iFrameId).contentDocument.height;
      document.getElementById(iFrameId).style.height = h + 60 + 'px';
      document.getElementById(iFrameId).height = h + 60 + 'px';
    } else if( document.all ) {
      h = document.frames(iFrameId).document.body.scrollHeight;
      document.all[iFrameId].style.height = h + 20 + 'px';
      document.all[iFrameId].height = h + 20 + 'px';
    }
  }
  /* On redimensionne l'iframe parente (si elle existe) */
  if(parent.iFrameHeightX){
    parent.iFrameHeightX('blockrandom0');
  }
}

var selected = new Array(null, null, null, null, null);
var current = null;

/* Sélectionne automatiquement certain menu (ceux possédant l'attribut select à "1") */
function preSelect(){
  var divs = document.getElementsByTagName('div');
  
  for(var i = 0; i < divs.length; i++){
    if(divs[i].getAttribute('select') == '1'){
      if(hasClassName(divs[i], 'niveau1')){
        selected[1] = divs[i];
      } else if(hasClassName(divs[i], 'niveau2')){
        selected[2] = divs[i];
      } else if(hasClassName(divs[i], 'niveau3')){
        selected[3] = divs[i];
      } else if(hasClassName(divs[i], 'niveau4')){
        selected[4] = divs[i];
      }
    }
  }
  
  for(var i = 1; i <= 4; i++){
    if(selected[i] != null){
      var action = true;
      /*if((i < 4 && selected[i + 1] == null) || i == 4){
        action = true;
      }*/
      select(selected[i], action);
    }
  }
}

/* Fonction lorsque l'on clique sur l'un des menu
*
* @param action Est-ce que l'on doit éxécuter l'action ou non ? La valeur est à
*   true par défaut.
* */
function select(title, action){
  if(action == undefined){
    action = true;
  }
  
  /*  Récupération du niveau */
  var niveau;
  if(hasClassName(title, 'niveau1')){
    niveau = 1;
  } else if(hasClassName(title, 'niveau2')){
    niveau = 2;
  } else if(hasClassName(title, 'niveau3')){
    niveau = 3;
  } else if(hasClassName(title, 'niveau4')){
    niveau = 4;
  }
  /* Récupération du sous-niveau */
  var content = title;
  while(content.nextSibling){
    content = content.nextSibling;
    if(hasClassName(content, 'content') || hasClassName(content, 'title')){
      break;
    }
  }
  if(!hasClassName(content, 'content')){
    content = null;
  }
  /* Désélection de tout les menu */
  for(var i = 1; i <= 4; i++){
    if(selected[i] != null){
      removeClassName(selected[i], 'selected');
    }
  }
  /* Sélection de tout les menus parents de celui en cours */
  object = title;
  for(var i = niveau; i >= 1; i--){
    selected[i] = object;
    addClassName(object, 'selected');
    
    if(i > 1){
      object = object.parentNode;
      while(object.previousSibling){
        object = object.previousSibling;
        if(hasClassName(object, 'title')){
          break;
        }
      }
    }
  }
  
  /* Récupération de la croix d'ouverture */
  var object = title.firstChild;
  while(object){
    if(hasClassName(object, 'plus') || hasClassName(object, 'moins')){
      break;
    }
    object = object.nextSibling;
  }
  var croix = null;
  if(object && (hasClassName(object, 'plus') || hasClassName(object, 'moins'))){
    croix = object;
  }
  
  if(content != null){
    if(current == title){
      if(content.style.display == 'block'){
        /* Fermeture du menu */
        content.style.display = 'none';
        if(croix){
          addClassName(croix, 'plus');
          removeClassName(croix, 'moins');
        }
      } else {
        /* Ouverture du menu */
        content.style.display = 'block';
        if(croix){
          addClassName(croix, 'moins');
          removeClassName(croix, 'plus');
        }
      }
    } else {
      /* Ouverture du menu */
      content.style.display = 'block';
      if(croix){
        addClassName(croix, 'moins');
        removeClassName(croix, 'plus');
      }
    }
  }
  /* Execution de l'action correspondant */
  if(action){
    var data = title.getAttribute('data');
    doAction(niveau, data);
  }
  current = title;
}

/* Exécution de l'action correspondant au clique sur un niveau */
function doAction(niveau, data){
  switch(niveau){
    case 1:
      /* Chargement de la fiche */
      loadFiche(data);
      break;
    case 2:
      break;
    case 3:
      /* Présélection d'une liste */
      break;
    case 4:
      /* Présélection d'une liste */
      break;
  }
}

/* Chargement de la fiche */
function loadFiche(data){
  var data = data.split(';');
  var iframe = document.getElementById('id_recherche');
  if(iframe){
    var url = 'module.php?module=fiche2_noncarto&page=index_recherche&fiche[table]=' + encodeURIComponent(data[0]) + '&fiche[item_id]=' + encodeURIComponent(data[1]);
    if(iframe.contentDocument){
      /* Chargement de l'url, façon Mozilla */
      iframe.contentDocument.location.href = url;
    } else {
      /* Chargement de l'url, façon IE */
      document.frames['id_recherche'].document.location.href = url;
    }
  }
}

/* Fonction de gestion des classes */
function hasClassName(element, className) {
  if(!element.className) return null;
  var elementClassName = element.className;
  return (elementClassName.length > 0 && (elementClassName == className ||
    new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
}
function addClassName(element, className) {
  if(!element.className) return null;
  if (!hasClassName(element, className))
    element.className += (element.className ? ' ' : '') + className;
  return element;
}
function removeClassName(element, className) {
  if(!element.className) return null;
  element.className = element.className.replace(
    new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ');
  return element;
}

function gotoResultat(page){
  var url = window.location.href;
  var regExp = new RegExp('(fiche\\[page\\]=[0-9]+)','gi');
  
  if(regExp.exec(url)){
    url = url.replace(regExp, 'fiche[page]=' + page);
  } else {
    url += '&fiche[page]=' + page;
  }
  var div = document.createElement('div');
  div.innerHTMl = url;
  document.getElementsByTagName('body')[0].appendChild(div);
  window.location.href = url;
  window.parent.location.hash="#ancrerecherche";
  
}

function gotoResultat2(title, limiteur){
  var data=title.getAttribute('data').split(';');
  var limiteur=title.getAttribute('limiteur');
  var iframe = document.getElementById('id_recherche');
  if(iframe){
    var url = 'module.php?module=fiche2_noncarto&page=index_recherche&fiche[table]=' + encodeURIComponent(data[0]) + '&fiche[item_id]=' + encodeURIComponent(data[1]) + '&fiche[limiteur]=' + limiteur;
    if(iframe.contentDocument){
      /* Chargement de l'url, façon Mozilla */
      iframe.contentDocument.location.href = url;
    } else {
      /* Chargement de l'url, façon IE */
      document.frames['id_recherche'].document.location.href = url;
    }
  }
}

function openFiche(table, identifiant){
  var url = 'http://www.observatoire-albigeois.org/albi/actigis_joomla/modules/module.php?module=fiche2_noncarto&page=index_fiche&fiche[table]=' + table + '&valeurs[identifiant]=' + identifiant/* + '&fiche[fiche_action]=modification'*/;
  var params = 'status=no, location=no, width=800, height=100, resizable=yes, scrollbars=yes';
  var name = '';
  
  var win = window.open(url, name, params);
  win.focus();
}
