/************************** DEBUG *********************************/

/*
	Name : getStyleInfo
	Param : obj, style
	Return : la valeur de la propriété style
	genre getStyleInfo(obj, "padding") me retournera 25px par exemple
*/
function getStyleInfo(obj, style) {
	//Ie connait obj.currentStyle. Mozzy document.defaultView.getComputedStyle
	var ret =" ";
	//Pour IE
	if (obj.currentStyle) ret = obj.currentStyle[style];
	//Pour le DOM
	if (document.defaultView && document.defaultView.getComputedStyle) {
		//Safari Mac ne peut pas acceder aux objets qui sont en display:none.
		//On considere donc que si c'est ce qui est demande et qu'il n'y a pas de réponse, c'est que c'est du "none"
		if (!document.defaultView.getComputedStyle(obj, "") && style=="display") ret = "none";
		//Sinon on prends le résultat
		else ret = document.defaultView.getComputedStyle(obj, "")[style];
	}

	//Safari Mac retourne les couleurs en rgba et rgba(0,0,0,0) => transparent
	if (style=="backgroundColor" && ret=="rgba(0, 0, 0, 0)") ret = "transparent";
	
	return ret;
}




/*
	Name : vd (initiales de var_dump() issue du PHP)
	Param : var
	Affiche le type et les informations d'une variable passée en parametre
*/
function vd(my_var) {
	var body, tmp, debug;
	//On va ajouter un espace de texte tout en bas de la page dans lequel on va afficher un texte
	
	//On choppe déjà le corps de la page (body)
	body = getElementByTagName("body");
	
	//Si j'ai pas créé d'espace de debug je l'ajoute
	if (!(document.getElementById("Tim_debug"))) {
		//Je crée un espace où afficher mes infos, que j'ajoute à la fin de la page
		var debug = document.createElement("div");
		debug.setAttribute("id", "Tim_debug");
		debug.innerHTML = "";
		debug.style.position = "absolute";
		debug.style.top = "0px";
		debug.style.marginLeft = "0px";
		debug.style.padding = "20px";
		debug.style.borderWidth = "1px";
		debug.style.borderColor = "#000000";
		debug.style.borderStyle = "solid";
		
		
		debug.style.backgroundColor = "#FFFFFF";
		debug.style.textAlign = "left";
		debug.ondblclick = function() { this.style.display = "none" }
		body.appendChild(debug);
	}
	//J'ajoute mon texte dedans maintenant
	debug = document.getElementById("Tim_debug");
	tmp = debug.innerHTML;
	debug.innerHTML = "";
	debug.innerHTML = tmp+getVarInfo(my_var);
}

/*
	Name : getVarInfo
	Param : my_var
	Return : Une chaine de caractere formattée html avec le type et le contenu de la variable
*/
function getVarInfo(my_var) {
	var tmp, type, i;
	if (my_var==null) return "XXX NO VAR XXX";;
	type = typeof(my_var);
	//tmp = "###Var_dump()###";
	//tmp+= "<br>[Type] : " + type;
	//String
	if (type=="string" || type=="number" || type=="boolean") {
		tmp+= "<br>[Value] : " + my_var ;
	}
	
	//tableau
	if (my_var.length && type=="object") {
		var size = my_var.length;
		tmp+= "<br>[Size] : " + size;
		//On affiche tout le contenu
		for (var i in my_var) {
			if (typeof(my_var[i])!="function") tmp+= "<br>array["+i+"] : " + my_var[i];			
		}

	}
	return tmp+"<br>";
}


function vd_node(node) {
	var tmp;
	
	if (node.nodeName) tmp+= "<br>Node name : "+node.nodeName;
	if (node.getAttribute("id")) tmp+= "<br>Node id : "+node.getAttribute("id");
	//text.innerHTML+= "<br>Attributes : "+node.attributes;
	//text.innerHTML+= "<br>nbr Attributes : "+node.attributes.length;
	//vd_attr(node.attributes);
	if (node.nodeValue) tmp+= "<br>Node value : "+node.nodeValue;
	if (node.nodeType) tmp+= "<br>Node type : "+node.nodeType;
	//text.innerHTML+= "<br>Parent node : "+node.parentNode;
	var nbr = node.childNodes.length;
	tmp+= "<br>Node type : "+nbr;
	for (var i=0; i!=nbr; i++) tmp+= "<br>&nbsp;&nbsp;&nbsp;"+node.childNodes[i].nodeName+ " => "+node.childNodes[i].nodeValue;
	
	//text.innerHTML+= "<br>fisrt child : "+node.firstChild;
	//text.innerHTML+= "<br>last child : "+node.lastChild;
	//text.innerHTML+= "<br>previous sibling : "+node.previousSibling;
	//text.innerHTML+= "<br>next sibling : "+node.nextSibling;
	
	tmp+= "<br><br>Node value "+node.firstChild;
	vd(tmp);
	
	
}
function vd_attr(attribute_node) {
	var nbr = attribute_node.length;
	var tmp;
	for (var i=0; i!=nbr; i++) tmp+= "<br>&nbsp;&nbsp;&nbsp;"+attribute_node[i].nodeName+ " => "+attribute_node[i].nodeValue;
	vd(tmp);
}


	
