// JavaScript Document
var Registro = function(){
	var dirImg = 'img/'

	var idRegistro = 0;
	var contenedor = obt("contFormUser");
	var contenedorLogin = obt('contFormLogin');
	var nombre = obt("nombreUser");
	var apellido = obt("apellidoUser");	
	var nick = obt('nickUser');
	var errorNick = obt('nickUserError');	
	var email = obt("emailUser");
	var errorEmail = obt('emailUserError');
	var sitio = obt("sitioUser");
	var contrasenia = obt('contraseniaUser');
	var confirmarContrasenia = obt('confirmacionContraseniaUser');
	var enviando = obt("enviandoRegistroUser");
	var exito = obt("exitoRegistroUser");
	var fallo = obt("falloRegistroUser");
	var divError = obt("errorRegistroUser");
	var enCurso = false;

	var totalErrores = 0;
	
	var crearError = function(campo,mensaje,expresion){
		campo.expresion = expresion;
		campo.mensaje = mensaje;
		campo.onblur = function(){
			if(campo.id == 'emailUser'){
				if(campo.repetido == campo.value){
					errorEmail.innerHTML = 'Esta cuenta de email ya se encuentra registrada';
					mostrarError(campo);
				}
				else if(!campo.expresion.test(campo.value.toLowerCase())){
					errorEmail.innerHTML = 'Email incorrecto';
					mostrarError(campo);
				}
				else ocultarError(campo);
			}
			else if(campo.id == 'nickUser'){
				if(campo.repetido == campo.value){
					errorNick.innerHTML = 'Este nick ya se encuentra registrado';
					mostrarError(campo);
				}
				else if(!campo.expresion.test(campo.value.toLowerCase())){
					errorEmail.innerHTML = 'Debe ingresar un nick';
					mostrarError(campo);
				}
				else ocultarError(campo);
			}
			else if((!campo.expresion.test(campo.value.toLowerCase()) && !campo.opcional) || (!campo.expresion.test(campo.value.toLowerCase()) && campo.opcional && campo.value != '' && campo.value != 'http://')){
				mostrarError(campo);
			}
			else ocultarError(campo);
		}
	}
	this.analizarEnter = function(e){
		if(e.keyCode == 13)this.enviar();
	}
	var crearErrores = function(){
		crearError(nombre,'',ER_STR);
		crearError(apellido,'',ER_STR);
		crearError(nick,'',ER_STR);		
		crearError(contrasenia,'',ER_STR);
		sitio.opcional = true;
		crearError(sitio,'',ER_STR);		
		crearError(email,'',ER_EMAIL);
	}
	var mostrarError = function(campo){
		totalErrores++;
		campo.className = "inputError";
		var err = obt(campo.id+'Error');		
		if(err)err.style.display = 'block';
	}
	var ocultarError = function(campo){
		campo.className = '';
		var err = obt(campo.id+'Error');		
		if(err)err.style.display = 'none';
	}
	
	this.mostrarFormRegistro = function(e){
		if(WINLOAD){
			OcultarContenido(contenedorLogin);
			mostrarBlockeador(true);
			document.body.appendChild(contenedor);
			MostrarContenido(contenedor);
			limpiarCampos();
		}
		if(e)StopEvent(e);
	}
	this.enviar = function(e){
		if(!enCurso){
			enCurso = true;
			totalErrores = 0;
			FireEvent(nombre,'blur');
			FireEvent(apellido,'blur');
			FireEvent(nick,'blur');			
			FireEvent(email,'blur');
			FireEvent(sitio,'blur');
			FireEvent(contrasenia,'blur');
			FireEvent(confirmarContrasenia,'blur');		
			if(totalErrores == 0){
				blockearCampos(true);
				MostrarContenido(enviando);
				var v = 'nombre|=|'+nombre.value+'|&|apellido|=|'+apellido.value+'|&|nick|=|'+nick.value+'|&|email|=|'+email.value+'|&|sitio|=|'+sitio.value+'|&|contrasenia|=|'+contrasenia.value+'|&|';
				req.pedir(DIR_ROOT+'requests/register.php',v);
			}
			else enCurso = false;
		}
		if(e)StopEvent(e);
	}.closure(this);
	this.cerrarCuadro = function(e){
		MostrarContenido(contenedorLogin);		
		OcultarContenido(contenedor);
		if(e)StopEvent(e);
	}
	var blockearCampos = function(blockeo){
		nombre.disabled = blockeo;
		apellido.disabled = blockeo;		
		email.disabled = blockeo;
		sitio.disabled = blockeo;
		contrasenia.disabled = blockeo;
		confirmarContrasenia.disabled = blockeo;
	}
	AddEvent(exito,'click',function(){
		limpiarCampos();
		blockearCampos(false);
		OcultarContenido(exito);
		mostrarBlockeador();

   });
	AddEvent(fallo,'click',function(){
		blockearCampos(false);
		OcultarContenido(fallo);
	});
	
	AddEvent(confirmarContrasenia,'blur',function(){
		if(confirmarContrasenia.value != contrasenia.value){
			mostrarError(confirmarContrasenia);	
		}
		else ocultarError(confirmarContrasenia);
	 });

	
	var limpiarCampos = function(){
		nombre.value = "";
		apellido.value = '';
		nick.value = '';
		nick.repetido = null;
		email.value = "";
		email.repetido = null;
		
		sitio.value = "";
		contrasenia.value = "";
		confirmarContrasenia.value = "";
		ocultarError(nombre);
		ocultarError(apellido);
		ocultarError(nick);		
		ocultarError(email);
		ocultarError(sitio);
		ocultarError(contrasenia);		
	}
	
	var onRequestLoad = function(){
		var nodo = req.respuestaXML;
		OcultarContenido(enviando);	
		
		if(!nodo){
			MostrarContenido(fallo);			
			return false;
		}
		enCurso = false;

		if(nodo.getAttribute("exito") == 1){
			MostrarContenido(exito);
			OcultarContenido(contenedor);
			limpiarCampos();
							  
		}
		else{
			if(nodo.getAttribute("exito") == 'usuarioRepetido' || nodo.getAttribute("exito") == 'ambosRepetidos'){
				email.repetido = email.value;
				errorEmail.innerHTML = 'Esta cuenta de email ya se encuentra registrada';
				mostrarError(email);
			}
			if(nodo.getAttribute("exito") == 'nickRepetido'  || nodo.getAttribute("exito") == 'ambosRepetidos'){
				nick.repetido = nick.value;
				errorNick.innerHTML = 'Este nick ya se encuentra registrado';
				mostrarError(nick);
			}
		}
		


		blockearCampos(false);

	}
	var req = new Request(onRequestLoad);
	crearErrores();
}

