var jsdebugWatchers=new Array();
var jsdebugEnabled=true;
var jsdebugRefreshTime=1000;
var jsdebugVisible=false;

// Estilos
var jsdebugStyles='\
	<style type="text/css">\
		#jsdebug {position:fixed;right:0;bottom:0;background-color:#ddd;color:#000;border:1px solid #000;padding:5px;font-size:8pt;line-height:12pt;}\
		#jsdebug a {color:#f00 !important;}\
		#jsdebug h4 {margin:0;padding:0;font-size:10pt !important;font-weight:bold !important;}\
		#jsdebug h4.open {margin:0 0 5px 0;padding:0 0 5px 0;border-bottom:1px dotted #000;}\
		#jsdebug .jstoggle {}\
		#jsdebug .jswindow {}\
		#jsdebug .jsexpr {color:#060;}\
		#jsdebug .jsvalue {color:#00f;}\
		#jsdebug .jscontent {}\
		#jsdebug .jsadd {margin:5px 0 0 0;padding:5px 0 0 0;border-top:1px dotted #000;}\
	</style>\
';

function jsdebugWatch(expression) {
	jsdebugWatchers.push(expression);
}
function jsdebugDelWatch(i) {
	jsdebugWatchers.splice(i,1);
}
function jsdebugAddCustomWatch(event) {
	if ((window.event) ? event.which : event.keyCode==13) {
		jsdebugWatch($("#jsdebug input[@name=add]").attr("value"));
		$("#jsdebug input[@name=add]").attr("value","");
		$("#jsdebug input[@name=add]").blur();
	}
}
function jsdebugRefresh() {
	if (!jsdebugEnabled) return false;
	output="";
	for(i=0;i<jsdebugWatchers.length;i++) {
		try {
			value=eval(jsdebugWatchers[i]);
		} catch(err) {
			value="Error ("+err.description+")";
		}
		output+="[<a href='' onclick='jsdebugDelWatch("+i+");return false;'>X</a>] <span class='jsexpr'>"+ jsdebugWatchers[i]+"</span> = <span class='jsvalue'>"+value+"</span><br/>";
	}
	if (jsdebugWatchers.length<1) {
		output+="Sin expresiones a evaluar";
	}
	$("#jsdebug .jscontent").html(output);
	setTimeout("jsdebugRefresh()",jsdebugRefreshTime);
}
function jsdebugInit() {
	if (!jsdebugEnabled) return false;
	// Añadimos el código para el debugging
		$("body").append("<div id='jsdebug'>\
			<h4>Debugger Javascript <small>[<a href='' onclick='jsdebugToggle();return false;' class='jstoggle'></a>]</small></h4>\
			<span class='jswindow'>\
				<div class='jscontent'></div>\
				<div class='jsadd'>Expresión: <input type='text' name='add' size='30' onkeypress='jsdebugAddCustomWatch(event)'/>\
			</span>\
		</div>");
	// Añadimos los estilos
		$("head").append(jsdebugStyles);
	// Lo ocultamos o mostramos en función del valor que tenga por defecto
		jsdebugVisible ? jsdebugShow():jsdebugHide();
	// Iniciamos el auto-refrescado de variables
		setTimeout("jsdebugRefresh()",jsdebugRefreshTime);
}
function jsdebugClose() {
	$("#jsdebug").remove();
	jsdebugWatchers=false;
	jsdebugEnabled=false;
}
function jsdebugToggle() {
	jsdebugVisible ? jsdebugHide() : jsdebugShow();
}
function jsdebugShow() {
	$("#jsdebug .jswindow").show();
	$("#jsdebug .jstoggle").html("Cerrar");
	$("#jsdebug h4").addClass("open");
	jsdebugVisible=true;
}
function jsdebugHide() {
	$("#jsdebug .jswindow").hide();
	$("#jsdebug .jstoggle").html("Abrir");
	$("#jsdebug h4").removeClass("open");
	jsdebugVisible=false;
}
$(document).ready(function () {
	jsdebugInit();
});