//--------------------------------------------------------
//findObj : encapsulation de la fonction de Dreamweaver
//--------------------------------------------------------
function findObj(n, d)
{
  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 trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function checkEmail(email)
{
  var filter=/^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/i;
  if (filter.test(email))
    return true;
  else
    return false;
}

//createElement : wrapp sur la fonction document.createElement
function createElement(element)
{
  if (typeof document.createElementNS != 'undefined')
    return document.createElementNS('http://www.w3.org/1999/xhtml', element);
  if (typeof document.createElement != 'undefined')
    return document.createElement(element);
  return false;
}
function createTextNode(text)
{
  return document.createTextNode(text);
}

//------------------------------------------------------
// menu() : affiche ou cache le bloc de
// sous-menu
//------------------------------------------------------
function menu(lien_menu_parent)
{
  // On vérifie le type d'argument
  if(typeof(lien_menu_parent)!='object')
    lien_menu_parent=findObj(lien_menu_parent);

  nb_child = lien_menu_parent.parentNode.childNodes.length;
  for(var i=0; i < nb_child; i++)
  {
    var tag = (new String(lien_menu_parent.parentNode.childNodes.item(i).tagName)).toLowerCase()
    if(tag=='ul')
      cache_ou_affiche(lien_menu_parent.parentNode.childNodes.item(i),lien_menu_parent.id);
  }
  return false;
}

function cache_ou_affiche(objet,id)
{
  var nb=id.split('_')[1];
  if(objet.style)
    style = objet.style;
  else
    style = objet;
  if(style.display=='block')
    style.display='none';
  else
    style.display='block';
}

//------------------------------------------------------
// blank(obj) : ouvre le lien dans une nouvelle fenêtre
//------------------------------------------------------
function blank(lien)
{
  window.open(lien.href);
  return false;
}

//------------------------------------------------------
// goTo(obj) : redirection depuis un select
//------------------------------------------------------
function goTo(obj)
{
  window.location=obj.options[obj.selectedIndex].value;
}

//------------------------------------------------------
// supprimer_rubrique() : supprime une rubrique
// après confirmation
//------------------------------------------------------
function supprimer_rubrique(nom_rubrique,id_rubrique)
{
  if(confirm('Etes-vous sûr de vouloir supprimer la rubrique \''+nom_rubrique+'\' ainsi que son contenu ?\nAttention : cette action est irréversible !'))
    window.location='edit.php?action=delete&id_rubrique='+id_rubrique;
}

//------------------------------------------------------
// check_children() : coche les cases à cocher enfants
// du case à cocher
//------------------------------------------------------
function check_children(checkbox)
{
  var li_parent, enfants_li;
  var ul_parent, enfants_ul;
  var input;

  li_parent = checkbox.parentNode;
  enfants_li = li_parent.childNodes;

  for (var i = 0; i < enfants_li.length; i++)
  {
    if (enfants_li[i].nodeName == 'UL')
    {
      ul_parent = enfants_li[i];
      enfants_ul = ul_parent.childNodes;
      for (var j = 0; j < enfants_ul.length; j++)
      {
        if (enfants_ul[j].nodeName == 'LI')
        {
          input = enfants_ul[j].firstChild;
          if (input.checked)
            input.checked = false;
          else
            input.checked = true;

          check_children(input)
        }
      }
      break;
    }
  }
}

//------------------------------------------------------
// checkAll() : coche toutes les cases à
// cocher d'un formulaire
//------------------------------------------------------
function checkAll(theForm)
{
  var i = 0;
  for (i = 0; i < theForm.length; i++)
  {
    if (theForm[i].type == 'checkbox')
      theForm[i].checked = true;
  }
}

//------------------------------------------------------
// unCheckAll() : décoche toutes les cases à
// cocher d'un formulaire
//------------------------------------------------------
function unCheckAll(theForm)
{
  var i = 0;
  for (i = 0; i < theForm.length; i++)
  {
    if (theForm[i].type == 'checkbox')
      theForm[i].checked = false;
  }
}

//------------------------------------------------------
// checkFormUser() : vérification du formulaire de
// gestion des utilisateurs (BO)
//------------------------------------------------------
function checkFormUser(action, theForm)
{
  // vérif des champs oblig
  var nom = findObj('nom');
  var user = findObj('user');
  var pwd = findObj('pwd');
  var pwd_confirm = findObj('pwd_confirm');
  if (action=='update' && (trim(nom.value)=='' || trim(user.value)==''))
  {
    alert("Les champs marqués d'une étoile (*) sont obligatoires");
    return false;
  }
  if (action!='update' && (trim(nom.value)=='' || trim(user.value)=='' ||
      trim(pwd.value)=='' || trim(pwd_confirm.value)==''))
  {
      alert("Les champs marqués d'une étoile (*) sont obligatoires");
      return false;
  }
  // fin vérif des champs oblig

  // vérif mdp + confirm
  if (pwd.value != pwd_confirm.value)
  {
    alert("Erreur dans la saisie de votre mot de passe");
    return false;
  }
  // fin vérif mdp + vérif

  // vérification de la sélection des accès aux rubriques
  var i = 0;
  var nbCheckboxes = 0;
  var nbUnChecked = 0;
  for (i = 0; i < theForm.length; i++)
  {
    if (theForm[i].type == 'checkbox')
    {
      nbCheckboxes++;
      if (theForm[i].checked == false)
        nbUnChecked++;
    }
  }
  if ((nbCheckboxes > 0 && nbUnChecked > 0) &&
      (nbCheckboxes == nbUnChecked))
    return confirm("L'utilisateur n'aura accès à aucune rubrique,\n êtes-vous sûr de votre choix ?");
  // fin vérif accès rubriques

  return true;
}

//------------------------------------------------------
// checkFormNewsletter() : vérification du formulaire
// d'inscription à la newsletter (FO)
//------------------------------------------------------
function checkFormNewsletter()
{
  // récupération des champs
  var nom = trim(findObj('nom').value);
  var prenom = trim(findObj('prenom').value);
  var email = trim(findObj('email').value);

  // vérif des champs obligatoires
  if (nom == '' || prenom == '' || email == '')
  {
    alert("Les champs marqués d'une étoile (*) sont obligatoires");
    return false;
  }

  // vérification de l'email
  if (!checkEmail(email))
  {
    alert("Veuillez préciser une adresse email valide");
    return false;
  }

  return true;
}

//------------------------------------------------------
// fonctions pour XMLHttpRequest
//------------------------------------------------------
var http = new Array();
var nullVar;

function createRequestObject()
{
  if(navigator.appName == "Microsoft Internet Explorer")
  {
    try{xhr = new ActiveXObject("Msxml2.XMLHTTP");}
    catch (e){
      try {xhr = new ActiveXObject("Microsoft.XMLHTTP");}
      catch (E) {xhr = false;}}
  }
  else
  {
    try{xhr = new XMLHttpRequest();}
    catch (e){
      xhr = false;
      alert("Ce site nécessite un navigateur plus récent pour fonctionner correctement. Merci de mettre à jour votre navigateur (http://www.mozilla-europe.org)");
    }
  }
  return xhr;
}
function sndReq(id_http, action, fonction)
{
  if(http[id_http] != nullVar)
    http[id_http].abort();
  http[id_http].open('get', '/intranet/rpc/xml.php?action='+action, true);
  http[id_http].onreadystatechange = function()
  {
    if(http[id_http].readyState == 4)
    {
      try
      {
        if (http[id_http].status == 200)
        {
          fonction.call();
          http[id_http] = nullVar;
        }
        else
          alert('Erreur : réponse XML du serveur incorrecte.');

      }
      catch(e){}
    }
  };
  http[id_http].send(null);
}

function setEtatRubrique(id_rubrique)
{
  http['etat'] = createRequestObject();
  sndReq('etat', 'setEtatRubrique_'+id_rubrique, function(){affiche_etat('etat', id_rubrique);});
}

function affiche_etat(id_http, id_rubrique)
{
  var a = findObj('puce_'+id_rubrique);
  var couleur = http[id_http].responseXML.getElementsByTagName('couleur')[0].firstChild.data;
  var statut = http[id_http].responseXML.getElementsByTagName('statut')[0].firstChild.data;
  a.setAttribute("class", couleur + " bold");
  a.setAttribute("title", "Changer l'état de la rubrique (" + statut + ")");
}

function swapSubmit(event, id, value)
{
  if(!filtreEntree(event))
    return false;

  var obj = findObj(id);
  obj.removeAttribute('value');
  obj.setAttribute('value', value);
}

function checkFormSendNL()
{
  var oEditor = FCKeditorAPI.GetInstance('contenu') ;
  oEditor.UpdateLinkedField();
  // récupération des champs
  var sujet   = trim(findObj('sujet').value);
  var contenu = trim(findObj('contenu').value);
  // vérif des champs obligatoires
  if (sujet == '' || contenu == '')
  {
    alert("Le sujet et le corps doivent être renseignés");
    return false;
  }
  return true;
}
function filtreEntree(DnEvents) //renvoie false si c'est la touche entrée qu'on tape
{
  var netscape = "";
  var ver = navigator.appVersion; len = ver.length;
  for(iln = 0; iln < len; iln++) if (ver.charAt(iln) == "(") break;
  netscape = (ver.charAt(iln+1).toUpperCase() != "C");
  if(netscape)
  {
    if (netscape) document.captureEvents(Event.KEYDOWN);
    k = DnEvents.which;
  }
  else
    k = window.event.keyCode;
  if (k == 13)
  {
    return true;
  }
  else
    return false;
}
function buttonOver(li)
{
  li.style.backgroundPosition = '0 -26px';
  li.firstChild.style.color = '#E46B00';
}
function buttonOut(li)
{
  li.style.backgroundPosition = 'left top';
  li.firstChild.style.color = '#acacac';
}
