function obj(menu)
{
 return (navigator.appName == "Microsoft Internet Explorer")?this[menu]:document.getElementById(menu);
}
function togglevisible(treepart)
{
 if (this.obj("T"+treepart).style.visibility == "hidden")
 {
  this.obj("T"+treepart).style.position="";
  this.obj("T"+treepart).style.visibility="";
  document["I"+treepart].src="./img/vign/stats_visible.gif";
  document["Idos"+treepart].src="./img/vign/folderopen.gif";
 }
 else
 {
  this.obj("T"+treepart).style.position="absolute";
  this.obj("T"+treepart).style.visibility="hidden";
  document["I"+treepart].src="./img/vign/stats_hidden.gif";
  document["Idos"+treepart].src="./img/vign/folder.gif";
 }
}
// Unification du code de déclaration d'une requete XMLHttpRequest par création d'un constructeur ajouté aux propriétés de window
if (!window.XMLHttpRequest && window.ActiveXObject)
{
	try
	{
		// Tester si les ActiveX sont autorisés
		new ActiveXObject("Microsoft.XMLHTTP");
		// Définir le constructeur
		window.XMLHttpRequest = function() { return new ActiveXObject("Microsoft.XMLHttpRequest"); };
	}
	catch (exc) {}
}

// Extension des objets DOM Element
// On stocke toutes les metholdes dans un objet Element
if(!window.Element)
{
	Element = new Object();
}
/** Obtention de l'offset à gauche de l'élement par rapport au bord gauche de la page */
Element.getLeft = function(element)
{
	var offsetLeft=0;
	// On cumule les offset de tous les elements englobants
	while(element!=null)
	{
		offsetLeft += element.offsetLeft;
		element = element.offsetParent;
	}
	return offsetLeft;
}
/** Obtention de l'offset au dessus de l'élément par rapport au bord haut de la page */
Element.getTop = function(element)
{
	var offsetTop=0;
	// On cumule les offset de tous les elements englobants
	while(element!=null)
	{
		offsetTop += element.offsetTop;
		element = element.offsetParent;
	}
	return offsetTop;
}
/** Application d'un style à un élément */
Element.setStyle = function (element, style)
{
	for (directive in style)
	{
		element.style[directive] = style[directive];
	}
}

/** Renvoie le tableau des elements de type tagName enfants de element
  * Si tagName vaut "*", renvoie tous les elements enfants */
Element.getChildElements = function (element, tagName)
{
	var result = new Array();
	var name = tagName.toLowerCase();
	for ( var i=0 ; i < element.childNodes.length ; i++)
	{
		var child = element.childNodes[i];
		if (child.nodeType == 1)
		{
			// C'est un element
			if(name == "*" || child.nodeName.toLowerCase() == name)
			{
				result.push(child);
			}
		}
	}
	return result;
}
/** Fonction de traitement des logs d'erreur */
Log = {
		error: function (msg)
		{
			alert("Erreur : \n" + msg);
			//throw("Erreur : \n" + msg);
		}
	}
/** Enlève les blocs textes vides */
Element.cleanWhiteSpace = function (element)
{
	for (var i = 0; i < element.childNodes.length; i++)
	{
		var node = element.childNodes[i];
		if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
		{
			element.removeChild(node);
		}
	}
}

/** Simplification des déclarations de requetes XMLHttpRequest */
if (!window.XMLHttpRequest && window.activeXObject)
{
	try
	{
		new ActiveXObject("Microsoft.XMLHTTP");
		window.XMLHttpRequest = function()
		{
			var result = null;
			try
			{
				result = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (exc) {alert ("erreur");}
			try
			{
				result = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (exc) {alert ("erreur");}
			return result;
		}
	}
	catch (exc) {alert ("erreur");}
}
