/*
	jsMonitor v1.3
*/
function jsMonitor(p)
{
	if(!p)p = {};
	var div = document.createElement("div");
	var controlDiv = document.createElement("div");
	div.style.background = "#FFF";
	div.style.padding = "3px";
	div.style.display = "none";
	
	this.counter = 0;
	if(p.inNode)
	{
		if(p.width)div.style.width = p.width;
		document.getElementById(p.inNode).appendChild(div);
	}
	else
	{
		div.style.border = "1px solid #000";
		div.style.width = (p.width)		? p.width	: "1000px";
		div.style.height = (p.height)	? p.height	: "350px";
		div.style.overflow = "auto";
		div.style.position = "fixed";
		div.style.bottom = "10px";
		div.style.right = "10px";
		document.body.appendChild(div);
	}
	this.monitor = div;
	/*
		Detecta internet explorer
	*/
	this.IE = (window.attachEvent && navigator.userAgent.indexOf('Opera') === -1);
	/*
		Imprime un separador
	*/
	this.printHr = function()
	{
		var hr = document.createElement("hr");
		this.monitor.appendChild(hr);
	}
	/*
		Vacia el monitor de todas las entradas
	*/
	this.clear = function()
	{
		while(this.monitor.hasChildNodes())this.monitor.removeChild(this.monitor.firstChild);
		this.monitor.style.display = "none";
		this.counter = 0;
	}
	/*
		devuelve un numero para indicar el objeto
	*/
	this.number = function()
	{
		var numberSpan = document.createElement("span");
		var number = document.createTextNode(this.counter++ + "  ");
		numberSpan.style.fontSize = "11px";
		numberSpan.style.color = "#C00";
		numberSpan.appendChild(number);
		return numberSpan;
	}
	/*
		Muestra un mensaje en el monitor pasado como primer parametro
		Si es segundo parametro es true eliminara todo el contenido previo
	*/
	this.printMessage = function(m,con)
	{
		if(con)this.clear()
		var div = document.createElement("div");
		var m = document.createTextNode(m);
		div.appendChild(m);
		if(this.monitor.hasChildNodes())this.printHr();
		this.monitor.appendChild(div);
		this.monitor.style.display = "";
	}
	this.printObject = function(o,title)
	{
		if(this.monitor.hasChildNodes())this.printHr();
		var rootDiv  = document.createElement("div");
		var oDiv = document.createElement("div");
		var tDiv = document.createElement("div");
		var bTitle = document.createElement("b");
		var subTitleSpan = document.createElement("span");
		var title = title ? document.createTextNode(title):document.createTextNode('Object');
		var subTitle = document.createTextNode("  "+o);
		subTitleSpan.style.fontSize = "11px";
		oDiv.style.background = "#FC6";
		oDiv.style.padding = "3px";
		tDiv.style.fontSize = "16px";
		tDiv.style.padding = "5px";
		bTitle.style.cursor = "pointer";
		oDiv.style.display = "none";
		subTitleSpan.appendChild(subTitle);
		bTitle.appendChild(title);
		tDiv.appendChild(this.number());
		tDiv.appendChild(bTitle);
		tDiv.appendChild(subTitleSpan);
		rootDiv.appendChild(tDiv);
		rootDiv.appendChild(oDiv);
		for(var p in o)
		{
			var div = document.createElement("div");
			var b = document.createElement("b");
			var valor = document.createTextNode(eval('o.'+p));
			var prop = document.createTextNode(p+' -> ');
			b.appendChild(prop);
			div.appendChild(b);
			div.appendChild(valor);
			oDiv.appendChild(div);
		}
		
		var showObjectProperties = function()
		{
			if(oDiv.style.display == "none")
				oDiv.style.display = "";
			else
				oDiv.style.display = "none";
		}
		
		/*
			Aņadimos el evento que muestra las propiedades del objeto
			al hacer clic sobre su nombre
		*/
		if(this.IE)
			bTitle.attachEvent("onclick",showObjectProperties);
		else
			bTitle.addEventListener("click",showObjectProperties,false);
		
		this.monitor.appendChild(rootDiv);
		this.monitor.style.display = "";
	}
}

