// Fichier : dom.js
// Version : 1.0
// Permet de manipuler facilement les objets du DOM.

// Retourne 'true' si le navigateur utilisé supporte le "DHTML", sinon retourne 'false'
function dom_dhtml(){
  if(document.getElementById || (document.all && !window.opera) || (document.layers && !window.opera)){
    return true;
  }else{
	return false;
  }
}

// Retourne 'true' si le navigateur utilisé supporte la syntaxe du "DOM", sinon retourne 'false'
function dom_dom(){
  if(document.getElementById){
    return true;
  }else{
	return false;
  }
}

// Retourne 'true' si le navigateur utilisé est "Opéra", sinon retourne 'false'
function dom_op(){
  if(window.opera){
    return true;
  }else{
	return false;
  }
}

// Retourne 'true' si le navigateur utilisé est "Explorer Internet MS", sinon retourne 'false'
function dom_ms(){
  if(document.all && !window.opera){
    return true;
  }else{
	return false;
  }
}

// Retourne 'true' si le navigateur utilisé est un "Netscape 4.x", sinon retourne 'false'
function dom_ns(){
  if(document.layers && !window.opera){
    return true;
  }else{
	return false;
  }
}

// Retourne l'objet ayant pour identifiant 'id'
function dom_getElementById(id){
  return dom_getElement('id', id, null);
}

// Retourne le 'n'ième objet ayant pour nom 'name'
function dom_getElementByName(name, n){
  return dom_getElement('name', name, n);
}

// Retourne le 'n'ième objet ayant pour balise 'tagName'
function dom_getElementByTagName(tagName, n){
  return dom_getElement('tagname', tagName, n);
}

// Retourne le 'n'ième objet
function dom_getElementByIndex(n){
  return dom_getElement('index', n, null);
}

// Fonction privée pour les fonctions dom_getElementById, dom_getElementByName, dom_getElementByTagName et dom_getElementByIndex
// 'methode' : la méthode à utiliser (id, name, tagname, index)
// 'nom' : le nom de l'objet (l'id, le name, ... selon la méthode)
// 'position', la position de l'élément (seulement pour les méthodes 'name' et 'tagname')
function dom_getElement(methode, nom, position){
  if(dom_dom()){
    switch(methode.toLowerCase()){
	  case("id"):
        if(typeof document.getElementById(nom) == "object"){
          return document.getElementById(nom);
	    }else{
	      return void(0);
	    }
	  break;
	  case("name"):
        if(typeof document.getElementsByName(nom) == "object"){
          return document.getElementsByName(nom)[position];
	    }else{
		  return void(0);
	    }
	  break;
	  case("tagname"):
        if(typeof document.getElementsByTagName(nom) == "object" || (dom_op() && typeof document.getElementsByTagName(nom) == "function")){
          return document.getElementsByTagName(nom)[position];
	    }else{
		  return void(0);
	    }
	  break;
	  default:
	    return void(0);
	  break;
    }
  }else if(dom_ms()){
    switch(methode.toLowerCase()){
	  case("id"):
        if(typeof document.all[nom] == "object"){
          return document.all[nom];
	    }else{
	      return void(0);
	    }
	  break;
	  case("name"):
        if(typeof document[nom] == "object"){
          return document[nom];
	    }else{
		  return void(0);
	    }
	  break;
	  case("tagname"):
        if(typeof document.all.tags(nom) == "object"){
          return document.all.tags(nom)[position];
	    }else{
		  return void(0);
	    }
	  break;
	  default:
	    return void(0);
	  break;
    }
  }else if(dom_ns()){
	switch(methode.toLowerCase()){
	  case("id"):
	  case("name"):
        if(typeof document[nom] == "object"){
          return document[nom];
	    }else{
	      return void(0);
	    }
	  case("index"):
        if(typeof document.layers[nom] == "object"){
          return document.layers[nom];
	    }else{
	      return void(0);
	    }
	  break;
	  default:
	    return void(0);
	  break;
    }
  }
}

// Retourne le contenu xhtml de l'objet 'obj'
function dom_getContent(obj){
  if(dom_dom() && obj){
	return DOMtoString(obj);
  }else if(dom_ms() && obj){
    return obj.innerHTML;
  }else{
	return void(0);
  }
}

// Affecte le contenu xhtml 'xhtml' à l'objet 'obj'
function dom_setContent(obj, xhtml){
  if(dom_ms() && obj){
	obj.innerHTML = xhtml;
  }else if(dom_dom() && obj){
	/*while(obj.firstChild){
	  obj.removeChild(obj.firstChild);
	}
	obj_contenu = stringToDOM(xhtml);
	obj.appendChild(obj_contenu);*/
	obj.innerHTML = xhtml;
  }else if(dom_ns() && obj){
	obj.document.open();
	obj.document.write(xhtml);
	obj.document.close();
  }else{
	return void(0);
  }
}

// Permet de récupérer la valeur de l'attribut 'attribut' de l'objet DOM 'obj'
function dom_get_attribut(obj, attribut){
  attribut = attribut.toLowerCase();
  if((dom_dom() || dom_ms()) && obj){
    switch(attribut){
	  case('class'):
	    if(obj.getAttribute("class")){
		  return obj.getAttribute("class");
	    }else{
		  return obj.getAttribute("className");
	    }
	  break;
	  case('style'):
	    if(document.all){
		  return obj.style.getAttribute("cssText");
	    }else{
		  return obj.getAttribute(attribut);
	    }
	  break;
	  default:
	    return obj.getAttribute(attribut);
	  break;
	}
  }else{
	return void(0);
  }
}

// Permet de modifier l'attribut 'attribut' de l'objet DOM 'obj', avec la valeur 'valeur'
function dom_set_attribut(obj, attribut, valeur){
  attribut = attribut.toLowerCase();
  if((dom_dom() || dom_ms()) && obj){
    switch(attribut){
	  case('class'):
	    obj.setAttribute("class", valeur);
	    obj.setAttribute("className", valeur);
	  break;
	  case('onclick'):
	    obj.setAttribute(attribut, valeur);
	    obj.onclick = function(){eval(valeur)};
	  break;
	  case('onmouseout'):
	    obj.setAttribute(attribut, valeur);
	    obj.onmouseout = function(){eval(valeur)};
	  break;
	  case('onmouseover'):
	    obj.setAttribute(attribut, valeur);
	    obj.onmouseover = function(){eval(valeur)};
	  break;
	  case('onload'):
	    obj.setAttribute(attribut, valeur);
	    obj.onload = function(){eval(valeur)};
	  break;
	  case('onunload'):
	    obj.setAttribute(attribut, valeur);
	    obj.onunload = function(){eval(valeur)};
	  break;
	  case('onblur'):
	    obj.setAttribute(attribut, valeur);
	    obj.onblur = function(){eval(valeur)};
	  break;
	  case('onfocus'):
	    obj.setAttribute(attribut, valeur);
	    obj.onfocus = function(){eval(valeur)};
	  break;
	  case('onchange'):
	    obj.setAttribute(attribut, valeur);
	    obj.onchange = function(){eval(valeur)};
	  break;
	  case('onsubmit'):
	    obj.setAttribute(attribut, valeur);
	    obj.onsubmit = function(){eval(valeur)};
	  break;
	  case('onselect'):
	    obj.setAttribute(attribut, valeur);
	    obj.onselect = function(){eval(valeur)};
	  break;
	  case('style'):
	    if(document.all){
		  obj.style.setAttribute("cssText", valeur);
	    }else{
		  obj.setAttribute(attribut, valeur);
	    }
	  break;
	  default:
	    obj.setAttribute(attribut, valeur);
	  break;
	}
  }else{
	return void(0);
  }
}

// Permet de récupèrer l'attribut du style 'style' de l'objet DOM 'obj'
function dom_get_style_attribut(obj, style){
  if(obj.style){
    return eval("obj.style." + style);
  }else{
	return void(0);
  }
}

// Permet de modifier l'attribut du style 'style' de l'objet DOM 'obj', avec la valeur 'valeur'
function dom_set_style_attribut(obj, style, valeur){
  if(obj.style){
    eval("obj.style." + style + " = \"" + valeur + "\"");
  }else{
	return void(0);
  }
}

function dom_array_supp(tab,id){
	var obj = $(id);
	var nb = obj.rowIndex;
	var tableau = $(tab);
	tableau.deleteRow(Number(nb));
	return false;
}
