//=================================
// Détection du type de navigateur
//=================================
var nNS4=false;
if (document.layers) nNS4=true;

//------------------------------------
// Débuggage des attributs d'un objet
//------------------------------------
function DebugAttr(text,elt) {
  for (obj in elt) {
    if (typeof(elt[obj]) == 'function') continue;
    if ((obj.indexOf("inner") == -1) && (obj.indexOf("outer") == -1) && (obj.indexOf("on") != 0)) text+=obj+"="+elt[obj]+"  ";
  }
  alert(text);
} // DebugAttr

//=============================================
// Définition d'un div avec les ajouts pour IE
//=============================================
function DivDefine(nom,style,styleIE,styleNS4) {
  document.write("<div id='"+nom+"' style='"+style);
  if (!nNS4) document.write(";"+styleIE);
  else if (styleNS4) {
    if (style) document.write(";");
    document.write(styleNS4);
  }
  document.writeln("'>");
} // DivDefine

//==========================================
// Centrage d'un div par rapport à un autre
//==========================================
function DivCentre(from,to) {
  if (nNS4) {
    lto=document.layers[to];
    lfrom=document.layers[from];
    lto.left=lfrom.pageX+(lfrom.clip.width-lto.clip.width)/2;
  } else {
    gto=document.getElementById(to);
    gfrom=document.getElementById(from);
    pos=gfrom.offsetLeft+(gfrom.offsetWidth-gto.offsetWidth)/2;
    gto.style.left=pos;
  }
} // DivCentre
 
//===============================
// Acrochage d'un div à un autre
//===============================
function DivAncre(from,to,sous,droite,doc) {
  if (!doc) doc=document;
  if (nNS4) {
    lto=doc.layers[to];
    lfrom=doc.layers[from];
    lto.left=lfrom.pageX;lto.top=lfrom.pageY;
  } else {
    gto=doc.getElementById(to);
    gfrom=doc.getElementById(from);
    var x=0,y=0;
    for (var obj=gfrom;obj;obj=obj.offsetParent) {
      x+=obj.offsetLeft+((obj.clientLeft && obj.tagName != "BODY" && obj.tagName != "TABLE")?obj.clientLeft:0);
      y+=obj.offsetTop+((obj.clientTop && obj.tagName != "BODY" && obj.tagName != "TABLE")?obj.clientTop:0);
    }
    gto.style.left=x+'px';gto.style.top=y+'px'
    if (sous) gto.style.top=y+gfrom.offsetHeight;
    if (droite > 0) {
      gto.style.left=x-gto.offsetWidth+gfrom.offsetWidth+droite;
    }
  }
} // DivAncre

//=======================================
// Fait suivre le div au scroll vertical
//=======================================
function DivScroll(from,reference) {
  gfrom=document.getElementById(from);
  gfrom.style.top=reference+document.body.scrollTop;
} // DivSCroll

function DivWidth(from) {
  ofrom=document.getElementById(from);
  for (var i=0;i < ofrom.childNodes.length;i++) {
    if (ofrom.childNodes[i].childNodes) DivWidth(ofrom.childNodes[i]);
  }
} // DivWidth

//========================
// Fait apparaitre un div
//========================
function DivShow(to,doc) {
  if (!doc) doc=document;
  if (nNS4) {
    lto=doc.layers[to];
    lto.hidden=false;
  } else {
    gto=doc.getElementById(to);
    gto.style.visibility="visible";
  }
} // DivShow

//=========================
// Fait disparaitre un div
//=========================
function DivHide(to,doc) {
  if (!doc) doc=document;
  if (nNS4) {
    lto=doc.layers[to];
    lto.hidden=true;
  } else {
    gto=doc.getElementById(to);
    gto.style.visibility="hidden";
  }
} // DivHide

//===========================================
// Prendre en compte un div dans le document
//===========================================
function DivDisplay(to,value,doc) {
  if (!doc) doc=document;
  if (nNS4) {
    lto=doc.layers[to];
    if (value) lto.hidden=false;
    else lto.hidden=true;
  } else {
    gto=doc.getElementById(to);
    if (value) gto.style.display="inline"
    else gto.style.display="none";
  }
} // DivDisplay

//===============================
// Modifie le texte dans un span
//===============================
function SpanChange(objet,text,doc) {
  if (!doc) doc=document;
  obj=doc.getElementById(objet);
  obj.innerHTML=text;
} // SpanChange

//============================
// Cache les "select" pour ie
//============================
var qui_a_cache_les_select=null;
var les_objets_hidden=new Array();
function HideSelect(qui) {
  for (var i=0;i < document.forms.length;i++)
    for (var j=0;j < document.forms[i].elements.length;j++)
      if (document.forms[i].elements[j].type == "select-one") {
	if (document.forms[i].elements[j].style.visibility == "hidden") 
	  les_objets_hidden[les_objets_hidden.length]=document.forms[i].elements[j].name;
	document.forms[i].elements[j].style.visibility="hidden";
      }
  qui_a_cache_les_select=qui;
} // HideSelect

//=============================
// Montre les "select" pour ie
//=============================
function ShowSelect(qui) {
  if (qui_a_cache_les_select != qui) return;
  for (var i=0;i < document.forms.length;i++)
    for (var j=0;j < document.forms[i].elements.length;j++)
      if (document.forms[i].elements[j].type == "select-one") {
	for (var k=les_objets_hidden.length-1;k >= 0;k--) 
	  if (les_objets_hidden[k] == document.forms[i].elements[j].name) break; 
	if (k == -1) document.forms[i].elements[j].style.visibility="visible";
      }
  les_objets_hidden=new Array();
} // HideSelect
