// JavaScript Document

//------------Fonctions de gestion du DOM (solution alternative à innerHTML)
function remplacerContenu(id, texte) {
	var element = document.getElementById(id);
	if (element != null) {
		supprimerContenu(element);
		var nouveauContenu = document.createTextNode(texte);
		element.appendChild(nouveauContenu);
	}
}
function supprimerContenu(element) {
	if (element != null) {
		while(element.firstChild)
			element.removeChild(element.firstChild);
	}
}

//code en UTF8, la valeur d'un élément dont id passé en parametre
function codeContenu(id) { 
	var valeur=document.getElementById(id).value;
	return encodeURIComponent(valeur);
}

function noeudSuivant(node) {
	if (document.all)
		return node.nextSibling;
	else
		return node.nextSibling.nextSibling;
}


//Permet d'aficher ou pas l'objet dont l'id est passé en paramettre			
function displayToggle(idelement) {
	var actual=document.getElementById(idelement).style.display;
	if (actual=='none') {
		document.getElementById(idelement).style.display='';
	} else {
		document.getElementById(idelement).style.display='none';
	}
} 

function getElementsByClassName(tag_,class_) {
  var i, k;
  var T_Result = new Array(); // tableau des Objets en retour
  //-- Recup le tableau d'objets correspondant au tag
  var O_Tab = document.getElementsByTagName(tag_);
  //-- Pour chacun on test la class
  for (i=0, k=0; i < O_Tab.length; i++) {
		var classes = O_Tab[i].className.split(" ");
    if (in_array(class_, classes)!=-1) {
      T_Result[k++] = O_Tab[i]; // stock l'objet
    }
  }
  return T_Result; // on retourne le tableau d'objet
}

function highlight(classname) {
  var elems = getElementsByClassName('div',classname);
	
	// pour chaque element a highlighter
	for (i=0; i<elems.length; i++) {
		var copie_interieur = elems[i].cloneNode(true);
		copie_interieur.setAttribute('class',classname+"_original");
		supprimerContenu(elems[i]);
		// on ajoute un top
		var div_top = document.createElement('div');
		div_top.setAttribute('class',classname+"_top");
		elems[i].appendChild(div_top);
		// on ajoute un milieu
		var div_inn = document.createElement('div');
		div_inn.setAttribute('class',classname+"_inner");
		div_inn.appendChild(copie_interieur);
		elems[i].appendChild(div_inn);
		// on ajoute un bottom
		var div_bot = document.createElement('div');
		div_bot.setAttribute('class',classname+"_bottom");
		elems[i].appendChild(div_bot);
	}
}

function attrValue (obj,attr) {
	for ( var x = 0; x < obj.attributes.length; x++ ) {
		if ( obj.attributes[x].nodeName.toLowerCase() == attr.toLowerCase() ) {
			return obj.attributes[x].nodeValue;
		}
	}
	return 'undefined';
}


