// ***********************************************************************************************
// Fonctions pour faciliter le developpement JS
// ***********************************************************************************************
// @uteur Jean-Philippe RIVET

// ---------------------------------------------------------
// Récupération d'un élément par son id
function $id(id){
	return document.getElementById(id);
}

// ---------------------------------------------------------
// Récupération d'éléments par leur nom de classe
function $cn(className){
	var listeObjets = Array();
	_Parent = document.body;
	$cnRechercheEnfants(_Parent, className, listeObjets);
	return listeObjets;
}

function $cnRechercheEnfants(_Parent, className, listeObjets){
	
	var listeEnfants = _Parent.childNodes;
	var _Enfant;
	var i;
	
	for(i=0; _Enfant = listeEnfants[i]; i++){
		if(_Enfant.nodeType != 3 && _Enfant.nodeType != 8){
			if(_Enfant.className)		
				if(_Enfant.className.indexOf(className) > -1)
					listeObjets.push(_Enfant);
			if(_Enfant.childNodes.length > 0)
				$cnRechercheEnfants(_Enfant, className, listeObjets);
		}
	}
	
	return true;
}

// ---------------------------------------------------------
// Ajouter une classe
function ajouterUneClasse(_Element, nomClasse){
	if(!trouverUneClasse(_Element, nomClasse)){
		_Element.className += " " + nomClasse;
		return true;
	}else{
		//alert("Attention ! : La classe " + nomClasse + " à ajouter est déjà existante sur " + _Element +  " - Fonction appelée par : [ " + ajouterUneClasse.caller + " ]");
		return false;
	}
}

// ---------------------------------------------------------
// Supprimer une classe
function supprimerUneClasse(_Element, nomClasse){
	var listeClassesActu = _Element.className.split(" ");
	var _Classe;
	var i;
	
	var listeClassesNouv = Array();
	for(i=0; _Classe = listeClassesActu[i]; i++){
		if(_Classe != nomClasse){
			listeClassesNouv.push(_Classe);
		}
	}
	_Element.className = listeClassesNouv.join(" ");
}

// ---------------------------------------------------------
// Trouver une classe
function trouverUneClasse(_Element, nomClasse){
	if(typeof(_Element.className) != "undefined"){
		var listeClassesActu = _Element.className.split(" ");
		var _Classe;
		var i;
		var nbDeFois = 0;
		
		for(i=0; _Classe = listeClassesActu[i]; i++){
			if(_Classe == nomClasse)
				nbDeFois++;
		}
		if(nbDeFois == 1){
			return true;
		}else if(nbDeFois > 1){
			alert("Attention ! : La classe '" + nomClasse + "' a été trouvée " + nbDeFois + " fois sur " + _Element +  " - Fonction appelée par : [ " + ajouterUneClasse.caller + " ]");
			return true;
		}
		return false;
	}else{
		return false;
	}
}

// ---------------------------------------------------------
// Injecter du code HTML

function injecterCodeHTML(_Element, codeHTML){
	_Element.innerHTML = codeHTML;
	return true;
}

// ---------------------------------------------------------
// Désactiver le href d'une balise A

function desactiverHREF(_A){
	if(_A.nodeType == 1){
		_A.setAttribute("href", "javascript: _()");
		_A.removeAttribute("target");
		return true;
	}else{
		return false;
	}
}

function _(){
}

// ---------------------------------------------------------
// Extraire un contenu entre deux balises distinctes
function extraireDuTexte(texte, baliseRepereDebut, baliseRepereDeFin){
	
	var balisePosDebut = texte.search(eval("/" + baliseRepereDebut + "/"));
	if(balisePosDebut < 0)
		return false;
		
	balisePosDebut += baliseRepereDebut.length;
	
	var balisePosFin = texte.search(eval("/" + baliseRepereDeFin + "/"));
	if(balisePosFin < 0)
		return false;
	
	return texte.substring(balisePosDebut,balisePosFin);
}

// ---------------------------------------------------------
// Appliquer un identifiant générique à un objet

varGlobaleIdentifiantBalise = 0;

function appliquerIdGenerique(_Element){	
	if(typeof(_Element) == "string")
		var _Element = $id(_Element);
		
	varGlobaleIdentifiantBalise++;
	_Element.id = "idGenerique" + varGlobaleIdentifiantBalise;
}


// ---------------------------------------------------------
// Savoir si le scroll y est actif
function siScrollY(_Element){
	_Element.scrollTop = 1;
	var retour = (_Element.scrollTop != 0);
	_Element.scrollTop = 0;
	
	return retour;
}

// ---------------------------------------------------------
// Ecrire si le JS est actif
function ecrire(ecrireTexte){
	document.write(ecrireTexte);
}






