	function renderTest(id,percentage,func){
		if(isEmpty(id)){return;}
		function resolveTest(h,op){
			var c = h.data.correct;
			$A(h.$T("DIV")).each(function(elem){
				if(elem.className.match("answer"+c)){$fix(elem).applyAttrib({".color":"green",".fontWeight":"bold"});}
				if(c==op && elem.className.match("answer"+c)){_apiStats.increaseSuccess();return;}
				if(elem.className.match("answer"+op)){$fix(elem).applyAttrib({".color":"red",".fontWeight":"bold"});_apiStats.increaseFailure();return;}
			});
			/* Eliminamos los callbacks */
			$A(h.$T("DIV")).each(function(elem){elem.onclick = function(){};});
			_apiStats.renderStats();
			if(func){func();return;}
		}

		var params = "command=recoverTest&id="+id;
		ajaxPetition("resources/PHP/API_test.php",params,function(ajax){
			var r = eval("("+ajax.responseText+")");if(parseInt(r.errorCode)>0){alert(print_r(r));return;}
			VAR_currentTest = r.data;if(!VAR_testData[r.data.testGroup]){VAR_testData[r.data.testGroup] = {};}
			VAR_testData[r.data.testGroup][r.data.testNum] = r.data;

			var h = $_("testContent",{".minHeight":"0","data":r.data}).empty();
			_apiTest.insertTestHeaderInfo();

			var d = $C("DIV",{},h);
			/* Renderizamos los enlaces */
			var linksHolder = $C("DIV",{className:"testLinks"},d);
			$C("A",{className:"",href:"",innerHTML:"INICIO"},linksHolder);
			$C("IMG",{className:"icon_arrow_right",src:"resources/images/t.gif"},linksHolder);
			$C("A",{className:"testLink",href:"http://www.autoescuelaweb.com/grupo_"+parseInt(r.data.testGroup)+"/",innerHTML:"Test "+parseInt(r.data.testGroup)},linksHolder);
			$C("IMG",{className:"icon_arrow_right",src:"resources/images/t.gif"},linksHolder);
			$C("A",{className:"testLink",href:"http://www.autoescuelaweb.com/grupo_"+parseInt(r.data.testGroup)+"/test_"+parseInt(r.data.testNum)+"/",innerHTML:"Pregunta "+r.data.testNum},linksHolder);

			/* Renderizamos la barra */
			var d = $C("DIV",{className:"testBar"},h);

			var d = $C("DIV",{className:"barWhite"},d);
			var w = $C("DIV",{className:"barWhiteLeft"},d);
			var w = $C("DIV",{className:"barWhiteRight"},w);
			var w = $C("DIV",{className:"barWhiteCenter"},w);
			var o = $C("DIV",{".width":percentage+"%",className:"barOrange"},d);
			var i = $C("IMG",{className:"iconHand icon_control_pause",src:"resources/images/t.gif"},d);
			i.onclick = function(){
				if(i.className.match(/_pause$/)){i.className = "iconHand icon_control_play";}
				else{i.className = "iconHand icon_control_pause";}
			}

			/* Renderizamos la Pregunta */
			$C("H1",{innerHTML:r.data.question+""},h);
			if(r.data.image){var i = $C("IMG",{className:"testImage",src:"http://www.dgt.es/revista/test/"+r.data.image,onload:function(){h.style.minHeight=(i.offsetHeight+25)+"px";}},h);}
			/* Renderizamos las respuestas */
			$A(arrayShuffle(["A","B","C"])).each(function(elem){if(r.data["answer"+elem]){$C("DIV",{className:"answer answer"+elem,innerHTML:"&bull; "+r.data["answer"+elem],onmousedown:function(e){e.preventDefault();},onclick:function(e){resolveTest(h,elem);}},h);}});

			/* Boton de comentarios */
			$C("DIV",{className:"testBar"},h);
			var d = $C("DIV",{className:"testComments"},h);
			$C("IMG",{className:"iconFloatLeft icon_page_white_text",src:"resources/images/t.gif"},d);
			$C("SPAN",{".margin":"0",".padding":"0",innerHTML:"Ver comentarios sobre este test (0)"},d);
		}.bind(this));
	}
	function arrayShuffle(o){for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);return o;}
	function barSetPercentage(p){h = $_("barStatus",{".width":p+"%"});}

	function user_createInfoDialog(e){
		var h = $_("loginHolder");
		//if($_("info_user_dialog")){removeThemeInfo($_("info_user_dialog",e));return;}

		var dist = parseInt(($_("locationBar").offsetWidth - h.parentNode.offsetLeft)-305);
		h.parentNode.appendChild(createThemeInfo("user_dialog",{".left":dist+"px",".width":"300px"}));
		/* dist es la diferencia, h.parentNode.offsetWidth/2 la mitad del ancho del contenedor */
		var ind = $_("info_user_dialog").$T("DIV")[0].style.backgroundPosition = Math.abs(dist-(h.parentNode.offsetWidth/2))+"px top";
	}

	function user_createLoginForm(e){
		user_createInfoDialog(e);
		var w = $_("info_user_dialog_container").empty();
		$C("H1",{innerHTML:"Entra en autoescuelaweb"},w);
		var d = $C("DIV",{innerHTML:"Amplia las posibilidades de autoescuelaweb, inicia sesión si ya eres miembro,"},w);
		var a = $C("A",{innerHTML:" o registrate.",".cursor":"pointer"},d);

		$C("B",{innerHTML:"E-mail"},w);
		$C("INPUT",{id:"userLoginInputName"},$C("DIV",{className:"inputText"},w));
		$C("B",{innerHTML:"Contraseña"},w);
		$C("INPUT",{id:"userLoginInputPass",type:"password"},$C("DIV",{className:"inputText"},w));
		/* botonera */
		var b = $C("DIV",{className:"buttonHolder"},w);
		$C("DIV",{className:"loginButton",innerHTML:"Entrar &raquo;",onclick:function(){user_sendLogin();}},b);
		$C("SPAN",{className:"noButton",innerHTML:"Cancelar",onclick:function(){removeThemeInfo(this);}},b);

		a.onclick = function(){user_createRegisterForm();}
	}

	function user_createRegisterForm(){
		user_createInfoDialog();
		var w = $_("info_user_dialog_container").empty();
		$C("DIV",{className:"registerHeader",innerHTML:"Únete a autoescuelaweb"},w);
		$C("DIV",{className:"registerText",innerHTML:"De esta manera nos permites llevar de una manera más eficaz tus estadisticas sobre los test que realices."},w);
		$C("B",{innerHTML:"Nombre de usuario"},w);
		$C("INPUT",{id:"userRegisterInput_name"},$C("DIV",{className:"inputText"},w));
		$C("B",{innerHTML:"E-mail"},w);
		$C("DIV",{innerHTML:"El e-mail será confirmado, se usará como identificador de usuario."},w);
		$C("INPUT",{id:"userRegisterInput_mail"},$C("DIV",{className:"inputText"},w));
		$C("B",{innerHTML:"Introduce una contraseña"},w);
		$C("INPUT",{id:"userRegisterInput_pass",type:"password"},$C("DIV",{className:"inputText"},w));
		$C("B",{innerHTML:"Repite la contraseña"},w);
		$C("INPUT",{id:"userRegisterInput_rpass",type:"password"},$C("DIV",{className:"inputText"},w));
		var d = $C("DIV",{".marginBottom":"5px"},w);
		$C("INPUT",{id:"userRegisterInput_check",type:"checkbox",className:"checkbox"},d);
		$C("SPAN",{innerHTML:"Acepto las condiciones de uso."},d);
		/* botonera */
		var b = $C("DIV",{className:"buttonHolder"},w);
		$C("DIV",{className:"registerButton",innerHTML:"Confirmar e-mail &raquo;",onclick:function(){user_sendRegister();}},b);
		$C("SPAN",{innerHTML:"&laquo; volver",onclick:function(){user_createLoginForm();}},b);
	}

	function user_sendRegister(){
		var opts = {};
		var h = $_("info_user_dialog_container");
		/* Obtenemos las variables */
		$A(h.$T("INPUT")).each(function(elem){
			if(elem.type == "checkbox"){opts[elem.id.replace("userRegisterInput_","")] = elem.checked;return;}
			opts[elem.id.replace("userRegisterInput_","")] = elem.value;
		});

		if(opts.pass != opts.rpass){alert("las contraseñas no coinciden.");return;}
		if(!opts.check){alert("Debes aceptar las condiciones de uso.");return;}
		//FIXME: deberia comprobar además la longitud de las contraseñas

		/* Si todo está correcto, procedemos */
		var params = "command=userRegister&"+$toUrl(opts);
		ajaxPetition("resources/PHP/generalPG.php",params,function(ajax){
			var r = eval("("+ajax.responseText+")");if(parseInt(r.errorCode)>0){alert(print_r(r));return;}
			h.innerHTML = "El usuario ha sido registrado correctamente.";
			setTimeout(function(){eFadeout($_("info_user_dialog"),function(el){el.parentNode.removeChild(el);});},3000);
		});

	}

	function user_sendLogin(checkCookies){
		var user="";var pass="";
		if(!checkCookies){user = $_('userLoginInputName').value;pass = $_('userLoginInputPass').value;if(user.length==0 || pass.length==0){return;}}

		var params = "command=userLogin&user="+user+"&pass="+pass;
		ajaxPetition("resources/PHP/generalPG.php",params,function(ajax){
			var r = eval("("+ajax.responseText+")");
			if(parseInt(r.errorCode)>0 && !checkCookies){alert(print_r(r));return;}
			if(parseInt(r.errorCode)>0 && checkCookies){return;}
			VAR_loggedUser = r;
			if($_("info_user_dialog_container")){removeThemeInfo($_("info_user_dialog_container"));}
			$_("loginHolder",{innerHTML:"Salir",onclick:function(){user_sendLogout();}})
		});
	}

	function user_sendLogout(){
		var params = "command=userLogout";
		ajaxPetition("resources/PHP/generalPG.php",params,function(ajax){
			var r = eval("("+ajax.responseText+")");if(parseInt(r.errorCode)>0){alert(print_r(r));return;}
			$_("loginHolder",{innerHTML:"Pulsa aqui para entrar",onclick:function(e){user_createInfoDialog(e);}})
		});
	}
