function controladorSubmitRegistro(){
	$("#formRegistro").submit(function(){
		return registrar();
	});
}
var camposObligatorios, aceptarCondiciones, emailNoValido, aliasLength, telefonoFormat, passDistintas, passLength;
function definirMensajesRegistro(){
	// Mensajes de respuesta al registrar
	camposObligatorios = {
			objeto: {"dom": $("#registro input:not(input:submit)"), "iluminar": "emptyOnly"},
			texto: GEN_todosLosDatosObligatorios.texto,
			tiempo: GEN_todosLosDatosObligatorios.tiempo,
			procedencia: "modulos_form"
		};
	aceptarCondiciones = {
			objeto: {"dom": $("#registro input:checkbox"), "iluminar": true},
			texto: GEN_aceptarLegales.texto,
			tiempo: GEN_aceptarLegales.tiempo,
			procedencia: "modulos_form"
		};
	emailNoValido = {
			objeto: {"dom": $("#registro #email"), "iluminar": true},
			texto: GEN_notValidEmail.texto,
			tiempo: GEN_notValidEmail.tiempo,
			procedencia: "modulos_form"
		};
	aliasLength = {
			objeto: {"dom": $("#registro #nick"), "iluminar": true},
			texto: GEN_aliasMinLength.texto,
			tiempo: GEN_aliasMinLength.tiempo,
			procedencia: "modulos_form"
		};
	telefonoFormat = {
			objeto: {"dom": $("#registro #tel"), "iluminar": true},
			texto: GEN_formatoTelefonoIncorrecto.texto,
			tiempo: GEN_formatoTelefonoIncorrecto.tiempo,
			procedencia: "modulos_form"
		};
	passDistintas = {
			objeto: {"dom": $("#registro input:password"), "iluminar": true},
			texto: GEN_passwordsNoIguales.texto,
			tiempo: GEN_passwordsNoIguales.tiempo,
			procedencia: "modulos_form"
		};
	passLength = {
			objeto: {"dom": $("#registro input:password"), "iluminar": true},
			texto: GEN_passwordMinLength.texto,
			tiempo: GEN_passwordMinLength.tiempo,
			procedencia: "modulos_form"
		};
}

function registrar(){
	var mensaje;
	// recuperamos todas las variables
	var nombre 	= $("#registro #name").val();
	var ape1	= $("#registro #ape1").val();
	var ape2 	= $("#registro #ape2").val();
	var email	= $("#registro #email").val();
	var nick	= $("#registro #nick").val();
	var pass	= $("#registro #pass").val();
	var pass2	= $("#registro #pass2").val();
	var tel		= $("#registro #telefono").val();
	var condLeg	= $("#registro #condLegales");
	// controlamos que los datos a enviar sean correctos
	if (nombre == "" || ape1 == "" || ape2 == "" || email == "" || nick == "" || pass == "" || pass2 == "" || tel == "") {
		mensaje = camposObligatorios;
		aviso(mensaje);
	} else if (!condLeg[0].checked) {
		mensaje = aceptarCondiciones;
		aviso(mensaje);
	} else if (!isEmail(email)) {
		mensaje = emailNoValido;
		aviso(mensaje);
	} else if (nick.length < MIN_LENGTH_ALIAS || nick.length > MAX_LENGTH_ALIAS ) {
		mensaje = aliasLength;
		aviso(mensaje);
	} else if (!esTelefono(tel)) {
		mensaje = telefonoFormat;
		aviso(mensaje);
	} else if (pass != pass2) {
		mensaje = passDistintas;
		aviso(mensaje);
	} else if (pass.length < MIN_LENGTH_PASSWORD || pass.length > MAX_LENGTH_PASSWORD ) {
		mensaje = passLength;
		aviso(mensaje);
	}else{
		// cargamos el modulo para encriptar en md5
		$.getScript("js/md5.js", function(){
			pass = hex_md5(pass);	// codificamos la password para enviarla codificada
			var datosEnviados = {nombre: nombre, ape1: ape1, ape2: ape2, email: email, nick: nick, pass: pass, tel: tel};
			mostrarCargador($("#registro"));
			$.get("php/controlador.php?accion=registro", datosEnviados, 
				function(datos){
					switch(datos.resultado){
						case "faltanVars":
							mensaje = camposObligatorios;
							aviso(mensaje);
						break;
						case "errorReg":
							googleAnalitycs("/html/registroForm_error");
							mensaje = {objeto: null, texto: GEN_errorNoControlado.texto, tiempo: GEN_errorNoControlado.tiempo, procedencia: "modulos_form"};
							aviso(mensaje);
						break;
						case "lengthNick":
							googleAnalitycs("/html/registroForm_lengthNick");
							mensaje = aliasLength;
							aviso(mensaje);
							datosEnviados.nick = "";
						break;
						case "notValidEmail":
							mensaje = emailNoValido;
							aviso(mensaje);
							datosEnviados.email = "";
						break;
						case "emailExists":
							googleAnalitycs("/html/registroForm_emailExists");
							mensaje = {objeto: {"dom": $("#registro #email"), "iluminar": true}, texto: REG_emailExists.texto, tiempo: REG_emailExists.tiempo, procedencia: "modulos_form"};
							aviso(mensaje);
							datosEnviados.email = "";
						break;
						case "nickExists":
							googleAnalitycs("/html/registroForm_nickExists");
							mensaje = {objeto: {"dom": $("#registro #nick"), "iluminar": true}, texto: REG_nickExists.texto, tiempo: REG_nickExists.tiempo, procedencia: "modulos_form"};
							aviso(mensaje);
							datosEnviados.nick = "";
						break;
						case true:
							googleAnalitycs("/html/registroForm_send");
							mensaje = null;
							// el usuario se ha guardado correctamente
							$("#registro").slideToggle("slow", function(){
								getRegistro(null);
								getLogin();
							});
						break;
					}
					if (mensaje != null){
						getRegistro(datosEnviados);
					}
		   		}, "json");
		});
		
	}
	return false;
}

function getRegistro(datos){
	$.get("php/controlador.php?accion=getRegistro", function(data){
		$("#registro").html(data);
		controladorSubmitRegistro();
		definirMensajesRegistro();
		ponerValoresCampos(datos);
	}, "html");
}

function ponerValoresCampos(datos){
	if(datos!=null){
		$("#registro #name").val(datos.nombre);
		$("#registro #ape1").val(datos.ape1);
		$("#registro #ape2").val(datos.ape2);
		$("#registro #email").val(datos.email);
		$("#registro #nick").val(datos.nick);
		$("#registro #pass").val("");
		$("#registro #pass2").val("");
		$("#registro #telefono").val(datos.tel);
	}
}
