//VARIABLES GLOBALES

// estadoCrono dice cuál es el estado del crono.
// 0 = El crono aún no ha empezado a correr.
// 1 = tiempo corriendo.
// 2 = se acabó al tiempo.
var estadoCrono=0; // Los estados del crono son 
	// 0 parado y en 60
	// 1 para en marcha
	// 2 para crono a cero. El botón de inicio se reactiva y al presionar de nuevo se pone a 60 y el estado vuelve a ser 1.
var puntuacion_minima=6;  //puntuacion minima para entrar en el ranking. // 0 para las pruebas.
var sol;
var tiempoRestante; 
var puntos = 0; var puntos_pos = 0; var puntos_neg = 0;
var horaunix0; var horaunix1;
var flag =0;
// Números y operación.
var n1;
var n2;
var operacion;

var recarga = 0; // cuando se le da al botón de "jugar de nuevo" que también sirve para el crono esta variable aumenta una unidad.
// sirve para que no salga la pantalla de "cargando"

function comienzo() {
	// función que  inicia los datos, limpia los campos y activa los botones.
	
	// Elimina la capa de cargado de pagina (solo si esta
	if (recarga == 0) {muestra('cargando');}
	recarga++;
	//inicializamos tiempo y crono
	tiempoRestante=60; 	estadoCrono=0;
	n=3;
	ajustaCrono(tiempoRestante);
	
	// estado de los botones y cajas correcto
	document.getElementById("start").disabled=false; //activa el botón para empezar el juego
	document.getElementById("respuesta").value=''; // limpia el hueco para poner la respuesta

	//inicializamos puntos y marcador
	puntos = 0; 	puntos_pos = 0; puntos_neg = 0;
	ajustaMarcador();

	// iniciar panel de juego
	n1 = '?';
	document.getElementById("cas1").innerHTML=n1;
	document.getElementById("cas2").innerHTML=n1;

	
	//document.getElementById('enviarPuntos').style.display = 'none';
	document.getElementById('botonMuestraEnvio').style.display = 'none';	
	document.getElementById("respuesta").disabled=true; // caja de respuesta deshabilitada

}

var n = 3; // variable para la cuenta atrás peliculera

function ya(e) {

	evento = e;
	// el usuario acaba de hacer click en el botón de "empezar juego"
	if (estadoCrono == 1) {
		devolverFalso(e);
		// No se hace nada. Esto no debería ser necesario porque el botón de empezar juego está desactivado
	}
	
	if (n<0) {
		document.getElementById('mensaje_atras').style.display = 'none';
		document.getElementById('botonMuestraEnvio').style.display = 'none';	
		horaunix0 = horaunix();
		crono(); 
		generar();
	}
	if (n >= 0){	
		document.getElementById('mensaje_atras').style.display = 'block';
		document.getElementById('mensaje_atras').innerHTML=n;
		setTimeout("ya(evento)", 700);
		n--;
		devolverFalso(e);
	}		
}
	


//FIN VARIABLES GLOBALES.

//FUNCIONES AUXILIARES O QUE NO SIENDO AUXILIARES
//OCUPAN MUY POCO.


//
// Esta funcion muestra en pantalla el tiempo de cronometro.
function ajustaCrono(t){
	document.getElementById("segundos").innerHTML=t;
	if (t==0) {document.getElementById("segundos").style.color="#F44";}	//pone el tiempo en rojo.
		else {document.getElementById("segundos").style.color="#000"}; //pone el tiempo en negro

}

	
//
//Lleva el contenido de un elemento HTML en otro, conocidos sus id
function PonerPuntosEn(u){
	document.getElementById(u).value = puntos_pos + '-'  +puntos_neg;
}
		

//
// Funcion cuenta atras (crono)
// La variable estadoCrono es global y es presentada fuera de esta función.
function crono()
{
	// cd = countDown
	if (estadoCrono == 0) {
		estadoCrono = 1;
		setTimeout("", 1000);
		document.getElementById("start").disabled=true;
		}

	// Activada cuentra atrás.
	//tiempoRestante=Math.round(10*tiempoRestante-1)/10;
	tiempoRestante --;
	
	if (estadoCrono == 2) { 
		comienzo();
		return 
		}
			
	if(tiempoRestante < 1){
			// El crono está a cero
			estadoCrono=2;
			finCuentaAtras();
	} else {
			//tV = (Math.floor(tiempoRestante) == tiempoRestante) ? tiempoRestante+'.'+0 : tiempoRestante;
			//tV = (Math.floor(tiempoRestante) == tiempoRestante) ? tiempoRestante+'.'+0 : tiempoRestante;
			tV = tiempoRestante;
			ajustaCrono(tV);
			setTimeout("crono()",1000);
	}

}

function finCuentaAtras(){
	//final
	// Lote de instrucciones cuando acaba la cuenta atrás
	
	ajustaCrono(tiempoRestante);
	document.getElementById("respuesta").disabled=true; //desactiva la caja para escribir la respueta
	document.getElementById("start").disabled=false; // Vuelve a activar el botón de juego
	
	horaunix1 = horaunix();
	//alert (horaunix1 - horaunix0);
	if (horaunix1- horaunix0 > 62){
		alert('Puntuaci\u00F3n invalidada por exceso de tiempo.\r\nSi estas leyendo esto debes saber que el sistema ha detectado un uso irregular del juego y la partida queda invalidada.');
		window.location.reload();
		devolverFalso(evento);
	}
	
	if (puntos > 3*puntuacion_minima ) {
		alert ('Eres una m\u00e1quina.\r\nPuedes inscribir tu nombre entre los mejores');
		muestra("botonMuestraEnvio");
	} else if  (puntos > 2*puntuacion_minima ){
		alert('Enhorabuena, has hecho ' + puntos +' puntos y puedes inscribir tu nombre entre los mejores.');
		muestra("botonMuestraEnvio");
	} else if ( puntos > puntuacion_minima) {
		alert('¡Ya puedes poner tu nombre!.');
		muestra("botonMuestraEnvio");
	} else if (puntos > puntuacion_minima - 2){
		alert('No lo has hecho nada bien. Intentalo de nuevo. \r\nSi consigues hacer m\u00e1s de ' + puntuacion_minima + ' puntos podr\u00e1s poner tu nombre entre los mejores');
	} else{
		alert('Espero que estuvieras distraido. Un mono adiestrado lo habr\u00eda hecho mejor.\r\nSi consigues hacer m\u00e1s de ' + puntuacion_minima + ' puntos podr\u00e1s poner tu nombre entre los mejores');
	}
		
}

function generar(){

	if (estadoCrono==0) {return}
	// genera tres números al azar. El primero y el tercero entre -10 y 10. El otro será 0, 1, 2 o 3 y se corresponderá
	// con la operación suma, resta, multiplicación y división y con el símbolo correspondiente.
	// además se ocupa de mostrar en cada caso los caracteres que toquen.
	
	
	// inicialización de los valores y borrado en pantalla
	document.getElementById('divmensaje').style.display = 'none';
	document.getElementById('divmensaje').style.display = '';
	document.getElementById("mensaje_bien").innerHTML='';
	document.getElementById("mensaje_mal").innerHTML='';
	document.getElementById("solucion").innerHTML='';
	document.getElementById("respuesta").value='0';
	document.getElementById("respuesta").disabled=false;
	
	// Operacion (0, suma; 1 resta; 2 multiplicación; 3 división
	operacion=aleatorio(0,3);
	flag=0;
	
	//calculo del numero de la segunda casilla
	if (operacion == 3){
		// si la operación es la división de que el divisor sea distinto de cero
		n2 = aleatorio(2, 10);
		} else {
		n2 = aleatorio(-10,4, +10,4);
	}
	var n2signo;
	// esta variable es una cadena que incluye el número con el signo delante.
	if (n2>0) {n2signo = '+'+n2;} else {n2signo=n2};
	document.getElementById("cas2").innerHTML=n2signo;
	
	// Calculo del numero de la primera casilla
	if (operacion == 3){
		// Si la operación es la división nos aseguramos de el resultado final
		// sea un número entero.
		n1 = n2*aleatorio(-4,4);
	} else {
		n1 = aleatorio(-10,4, +10,4);
	}
	var n1signo;
	//n1signo es n1 con el signo + o - delante según si es positivo o negativo.
	if (n1>0) {n1signo = '+'+n1;} else {n1signo=n1};
	
	document.getElementById("cas1").innerHTML=n1signo;
	
	
	operaciones = new Array(); 	operaciones[0] ='+'; operaciones[1] ='&ndash;'; operaciones[2] ='&middot;'; operaciones[3] =':';

	document.getElementById("op").innerHTML = operaciones[operacion];
		switch(operacion)
		{	
			case 0:
			sol = n1+n2;
			break;
			case 1:
			sol = n1 - n2;
			break;
			case 2:
			sol = n1*n2;
			break;
			case 3:
			sol = n1/n2;
			break;
		}
		
		// ponemos el cursor en la casilla de respuesta
		document.getElementById('respuesta').select();
}

function ajustaMarcador(){
	document.getElementById("marcador").innerHTML = puntos_pos - puntos_neg;
	document.getElementById("marcador_aciertos").innerHTML = puntos_pos;
	document.getElementById("marcador_errores").innerHTML = puntos_neg;
	//document.getElementById("mlag").innerHTML = flag;
}


function comprobar(e){
// Esta funcion comprueba si el usuario ha efectuado bien la cuenta,
// suma un punto a su puntuación en tal caso 
// y luego vuelve plantea otra cuenta
// siempre que aun esté rulando el crono.

// Si el crono está a cero no ha dado tiempo esta función 
// desactiva un par de elementos y devuelve falso
	if (estadoCrono ==2)
		{
			//El crono ha llegado a cero.
			document.getElementById("respuesta").disabled=true;
			document.getElementById("start").disabled=true;
			devolverFalso(e);
		}
		
	// Si el crono aún está funcionanado...
	if (sol == document.getElementById("respuesta").value) {
		// solucion correcta. Sumar un punto. Mostrar mensaje.
		if (flag ==1) {
			puntos++;
			puntos_pos++;
		} else {
			puntos = puntos -10; 
			//puntos_pos = puntos_pos -10;
			puntos_neg = puntos_neg +1000;
		}
		document.getElementById('divmensaje').style.display = 'block';	
		document.getElementById("mensaje_bien").innerHTML = 'bien';
	} else {
		//Solucion incorrecta.
		document.getElementById('divmensaje').style.display = 'block';	
		document.getElementById("mensaje_mal").innerHTML ='mal';
		puntos=puntos-1;
		puntos_neg++;
		document.getElementById("solucion").innerHTML ='Soluci&oacute;n:&nbsp;'+sol;
	}

	ajustaMarcador();
	//Tras un segundo se genera una nueva cuenta y se evita el envío por parte del formulario.
	setTimeout("generar()", 600);
	devolverFalso(e);
}


function validar(formu, evento){
	nombre = formu.nombre.value;
	longitud = nombre.length
	if (longitud < 3) {
		if (longitud == 0) {
			alert('Es obligatorio poner un nombre')
			} else if (longitud <3) {
			alert('El nombre tiene que tener más de 2 letras')
			}
		devolverFalso(evento);
		}
	}
	
function horaunix(){
	mydate = new Date(); 
	strDate = mydate.getTime()/1000; 
	return Math.ceil(strDate); 
	// sacado de http://agarrate.net/blog/articulos/449
	
}	

