//--------------------------------------------------------
//findObj : recherche un objet depuis son ID/name
//--------------------------------------------------------
function findObj(n, d)
{
  var p,i,x;
  if(!n)
    return false;
  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(d.all)
    x=d.all[n];
  if(d.forms)
    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=findObj(n,d.layers[i].document);
  if(!x && d.getElementById)
    x=d.getElementById(n);
  return x;
}

//-----------------------------------------------
//showLayers : affiche une serie de calques
//dont les noms sont passés en arguments
//-----------------------------------------------
function showLayers() // (nomCalque, nomCalque, ...)
{
  var i,args=showLayers.arguments;
  for(i=0; i<args.length ; i++)
    if((x=findObj(args[i]))!=null)
    {
      if(x.style)
        x=x.style;
      x.visibility='visible';
      clear_id_timeout();//annule le timeout des calques à cacher
    }
}

//-----------------------------------------------
//hideLayers : affiche une serie de calques
//dont les noms sont passés en arguments
//-----------------------------------------------
function hideLayers() // (nomCalque, nomCalque, ...)
{
  var i,args=hideLayers.arguments;
  for(i=0; i<args.length ; i++)
  {
    if((x=findObj(args[i]))!=null)
    {
      if(x.style)
        x=x.style;
      x.visibility='hidden';
    }
  }
}
function setDisplayNone() // (nomObj, nomObj, ...)
{
  var i,args=setDisplayNone.arguments;
  for(i=0; i<args.length ; i++)
    setDisplay(args[i],'none');
}
function setDisplay(id_objet, le_display)
{
  if((x=findObj(id_objet))!=null)
  {
    if(x.style)
      x=x.style;
    x.display=le_display;
  }
}
function setClass(obj,nomClasse)
{
  if(typeof(obj)=='string')
    obj=findObj(obj);
  //if(obj && obj.className)
    obj.className=nomClasse;
}
function setDisabled(obj, disabled)
{
  //alert(obj);
  if(obj)
    obj.disabled=disabled;
}
//renvoit un tableau contenant la position et taille d'un objet
function getPos(el)
{
  var x,w,y,h;
  if (document.getBoxObjectFor)
  {
    var bo = document.getBoxObjectFor(el);
    x = bo.x;
    w = bo.width;
    y = bo.y;
    h = bo.height;
  }
  else if (el.getBoundingClientRect)
  {
    var rect = el.getBoundingClientRect();
    x = rect.left;
    w = rect.right - rect.left;
    y = rect.top;
    h = rect.bottom - rect.top;
  }
  else
    return false
  return new Array(x,y,w,h);
}
//*******************************************
//addEvent : ajoute un evenement à un objet
//*******************************************
function myAddEvent(obj, type, fn, useCapture)
{
  if (obj.addEventListener)
  {
    obj.addEventListener(type, fn, useCapture);
    return true;
  }
  else if (obj.attachEvent)
  {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    var r = obj.attachEvent( "on"+type, obj[type+fn] );
  }
  else
  {
    oldAddEvent(obj, evType, fn);
    obj['on'+evType]=function(){ oldFireEvent(obj,evType) };
  }
  return true;
}
function myRemoveEvent( obj, type, fn )
{
  if(obj.removeEventListener)
    return obj.removeEventListener( type, fn, false );
  else
    if(obj.detachEvent)
    {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
    }
  return true;
}
function oldAddEvent(obj, evType, fn)
{
  if (!obj.myEvents)
    obj.myEvents={};
  if (!obj.myEvents[evType])
    obj.myEvents[evType]=[];
  var evts = obj.myEvents[evType];
  evts[evts.length]=fn;
}
function oldFireEvent(obj, evType)
{
  if (!obj || !obj.myEvents || !obj.myEvents[evType])
    return;
  var evts = obj.myEvents[evType];
  for (var i=0,len=evts.length;i<len;i++)
    evts[i]();
}
function findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}
function findPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}
//----------------------------------------------
//swapImgs : echange le fichier source pour une
//ou des images données
//----------------------------------------------
function swapImgs()  // (nom,source,nom,source,...)
{
  var i, obj_img, src_img, args=swapImgs.arguments;
  for(i=0; i<args.length ; i=i+2)
  {
    nom_img=args[i];
    src_img=args[i+1];
    //alert(nom_img+" : "+src_img);
    if((obj_img=findObj(nom_img))!=null)
    {
      if(!obj_img.src_prec)
        obj_img.src_prec=obj_img.src;
      obj_img.src=src_img;
    }
  }
}

//----------------------------------------------
//restoreImgs : redonne la source d'origine à
//une image
//----------------------------------------------
function restoreImgs() // (nom, nom, ...)
{
  var i, obj_img, nom_img, args=restoreImgs.arguments;
  for(i=0 ; i<args.length ; i++)
  {
    obj_img=findObj(args[i]);
    obj_img.src=obj_img.src_prec;
  }
}
//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);
}
function deleteObj(obj)
{
  if(typeof(obj)!='object')
    obj=findObj(obj);
  if(obj && obj.parentNode)
    obj.parentNode.removeChild(obj);
}
function deleteChildren(obj)
{
  var kids = obj.childNodes;
  for(var i=0; i < kids.length; i++)
    obj.removeChild(kids[i]);
}
function mySet(id_element, valeur)
{
  findObj(id_element).value = valeur;
}

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;
}
function checkUrl(url)
{
  var filter = /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/i;
  if (filter.test(url))
    return true;
  else
    return false;
}
tab_id_timeout=new Array();
//------------------------------
//annule les timeout en cours
//------------------------------
function clear_id_timeout()
{
  for(id in tab_id_timeout)
  {
    if(tab_id_timeout[id]>0)
    {
      clearTimeout(tab_id_timeout[id]);
      tab_id_timeout[id]=0;
    }
  }
  //tab_id_timeout=newArray();
}
//----------------------------------------------
//tmp_menu_off : lance la tempo pour cacher
//le menu
//----------------------------------------------
function tmp_menu_off(obj)
{
  tab_id_timeout.push(setTimeout("hideLayers('"+obj.id+"')",1000));
}
function tmp_calendar_off(obj)
{
  tab_id_timeout.push(setTimeout("setDisplayNone('"+obj.id+"')",1000));
}

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

function hover(obj)
{
  UL = obj.getElementsByTagName('ul');
  if(UL.length > 0)
  {
    sousMenu = UL[0].style;
    if(sousMenu.display == 'none' || sousMenu.display == '')
      sousMenu.display = 'block';
    else
      sousMenu.display = 'none';
  }
}

function setHover()
{
  if(document.all)
  {
    LI = findObj('menu').getElementsByTagName('li');
    nLI = LI.length;
    for(i=0; i < nLI; i++)
    {
      LI[i].onmouseover = function(){hover(this);};
      LI[i].onmouseout = function(){hover(this);};
    }
  }
}
function random(limit)
{
  return Math.round(Math.random()*limit);
}
function getRandomID()
{
  var dt = new Date();
  id = random(1000)+'_'+dt.getHours()+'_'+dt.getMinutes()+'_'+dt.getSeconds();
  //alert(id);
  return id;
}
function keyMeansClick(DnEvents)//, which_key, id_src, id_target)
{
  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");
  k = (netscape) ? DnEvents.which : window.event.keyCode;
  src= (netscape) ? DnEvents.target : window.event.srcElement;
  nb_event = document.eventArray.length;
  //alert(nb_event);
  for(i=0; i<nb_event; i++)
  {
    tab = document.eventArray[i];
    //alert(tab);
    which_key = tab[0];
    id_src = tab[1];
    id_target = tab[2];
    if (k == which_key)
    {
      //alert('champ cherché :'+id_src+"\n"+'champ activé:' + src.id);// + "\ncible :" +
      if(src.id==id_src)
      {
        findObj(id_target).onclick();
        return false;
      }
    }
    else
      return true;
  }
  return true;
}
document.eventArray=new Array();
document.pf=true;
function bindKeyToClick(key_no, src_elem, target_elem)
{
  document.eventArray.push(new Array(key_no, src_elem, target_elem));
  if(!document.onkeydown)
  {
    var netscape = "";
    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) document.captureEvents(Event.KEYDOWN);
    document.onkeydown = function(DnEvents)
    {

      must_return=false;

      if(netscape)
      {
        if(document.pf)
        {
          must_return=true;
          //document.pf=false;
        }
        else
        {
          //alert('echappe');
          document.pf=true;
        }
      }
      else
        must_return = true;
      if(must_return)
        return keyMeansClick(DnEvents);
      else
        return false;
    }
  }
}
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");
  k = (netscape) ? DnEvents.which : window.event.keyCode;
  if (k == 13)
  {
    return false;
  }
  else
    return true;
}
function disableLists(obj, id_tab) // désactive les menus déroulants
{
  var table, tbody, i, tr, j, td;
  table = findObj(id_tab);
  tbody = table.lastChild;
  for (i = 0; i < tbody.childNodes.length; i++)
    if (tbody.childNodes[i].nodeName == 'TR')
    {
      tr = tbody.childNodes[i];
      for (j = 0; j < tr.childNodes.length; j++)
        if (tr.childNodes[j].nodeName == 'TD')
        {
          td = tr.childNodes[j];
          if (td.firstChild.nodeName == 'SELECT')
            if (obj.checked == true)
              td.firstChild.setAttribute('disabled', 'disabled');
            else
              td.firstChild.removeAttribute('disabled', 'disabled');
        }
    }
}
function hello()
{
  alert('hello');
}

function testCourriel(id)
{
  var email = prompt('Votre email de test : ');
  if (checkEmail(email))
  {
    findObj('envoiCourriel').src = 'courriel_envoi.nogzip.php?id=' + id + '&email=' + email;
    Dialog.info("Initialisation de l'envoi",
    {
      windowParameters: {className: "alphacube", width:200, height:50},
      showProgress: true
    });
    Dialog.setInfoMessage("Initialisation de l'envoi");
  }
  else if (email == null)
    return false;
  else
  {
    alert('Email invalide');
    return false;
  }
}
function envoiCourriel(id)
{
  findObj('envoiCourriel').src = 'courriel_envoi.nogzip.php?id=' + id;
  Dialog.info("Initialisation de l'envoi",
  {
    windowParameters: {className: "alphacube", width:200, height:50},
    showProgress: true
  });
  Dialog.setInfoMessage("Initialisation de l'envoi");
}
function finEnvoiCourriel()
{
  Dialog.setInfoMessage("Envoi du courriel effectué");
  findObj('envoiCourriel').src = '';
  Dialog.closeInfo();
}
function updateMessageEnvoiCourriel(msg)
{
  Dialog.setInfoMessage(msg);
}

function viewHide(obj)
{
  var name = obj.name.split('_');
  if (obj.checked)
  {
    try
    {
//       var id_obj = 'rubrique';
//       if (name[1] == 'annonce')
//         id_obj = id_obj + '_annonce';
//       var options = findObj(id_obj).childNodes;
//       for (var i = 0; i < options.length; i++)
//       {
//         if (options[i].nodeName == 'OPTION')
//           options[i].selected = true;
//       }
      setDisplay('tr_' + name[1], 'table-row');
    }
    catch (e) { setDisplay('tr_' + name[1], 'block'); }
  }
  else
  {
    setDisplayNone('tr_' + name[1]);
    var id_obj = 'rubrique';
    if (name[1] == 'annonce')
      id_obj = id_obj + '_annonce';
    var options = findObj(id_obj).childNodes;
    for (var i = 0; i < options.length; i++)
    {
      if (options[i].nodeName == 'OPTION' && options[i].selected == true)
        options[i].selected = false;
    }

  }
}

