
// -- [ Común ] --

function es_nulo (objeto) {
	
	return ( objeto == null ) || ( objeto == undefined );
	
}

function usuario_valido (usuario) {

	console.log(usuario);
	
	return /^[\wñÑ\-_\.]{4,}$/.test(usuario);
	
}

function contraseña_valida (contraseña) {
	
	return /.{6,}/.test(contraseña);
	
}

function correo_valido (correo) {
	
	return /.+@.+\..+/.test(correo);
	
}



// -- [ Elementos <li class="subitem"> ] --

if ( window.addEventListener ) {

	window.addEventListener("load", contraer_subitems, false);
	
}


function contraer_subitems (e) {

	var lis = document.getElementsByTagName("li");
	
	for (var i = 0; i < lis.length; i++) {
		
		var li = lis.item(i);
		
		if (/subitem/.test(li.className)) {
			
			li.addEventListener("click", alternar_subitem, false);
		
			if (/expandido/.test(li.className)) {
			
				li.className = "subitem contraido";
			
			}
			
		}

	}

	return true;

}


function alternar_subitem (e) {
	
	if (/expandido/.test(this.className)) {
		
		this.className = "subitem contraido";
		
	}
	
	else {
		
		this.className = "subitem expandido";
		
	}
	
	e.stopPropagation();
	
	return true;

}



// -- [ Validación de formularios ] --

if ( window.addEventListener ) {

	window.addEventListener("load", validacion_formularios, false);
	
}


function validacion_formularios (e) {
	
	var form = document.getElementById("privado-entrar");
	
	if (form != null) {
		
		form.addEventListener("submit", privado_entrar_validar, true);
		
	}
	
	
	form = document.getElementById("escribeme");
	
	if (form != null) {
		
		form.addEventListener("submit", escribeme_validar, true);
		
	}
	
	
	form = document.getElementById("trivial-crear");
	
	if (form != null) {
		
		form.addEventListener("submit", trivial_crear_validar, true);
		
	}
	
	
	form = document.getElementById("noticias-comentario");
	
	if (form != null) {
		
		form.addEventListener("submit", noticias_comentario_validar, true);
		
	}
	

	form = document.getElementById("privado-registro");
	
	if (form != null) {
		
		form.addEventListener("submit", privado_registro_validar, true);
		
	}
	
	
	form = document.getElementById("privado-recordar");
	
	if (form != null) {
		
		form.addEventListener("submit", privado_recordar_validar, true);
		
	}
	
	
	return true;
	
}


function privado_entrar_validar (e) {
	
	var error = "";
	
	if ( /^\s*$/.test(e.target.elements['usuario'].value) ) {
		
		error = 'Nombres de usuario normalitos, nada de florituras.\nHa de contener al menos 4 caracteres, no puede empezar por número y sólo puede contener caracteres alfanuméricos y los guiones "-", y "_"';
	
		
	}
	
	else if ( /^\s*$/.test(e.target.elements['contrasena'].value) ) {
		
		error = 'Un mínimo de seguridad, por favor.\nHa de contener al menos 6 caracteres.';
		
	}
	
	if (error != "") {
		
		alert( error );
	
		e.preventDefault();

		e.stopPropagation();
		
	}
	
	return true;

}


function escribeme_validar (e) {

	var error = "";
	
	if ( /^\s*$/.test(e.target.elements['mensaje'].value) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
	
	}
	
	else if ( ! correo_valido( e.target.elements['correo'].value ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	if ( error != "" || ! confirm( "¿Estás seguro de que esta es tu dirección de correo?\r\n" + e.target.elements['correo'].value ) ) {
	
		if ( error != "" ) {
	
			alert( error );
			
		}
	
		e.preventDefault();

		e.stopPropagation();
		
	}
	
	

	
	return true;

}


function trivial_crear_validar (e) {
	
	var error = "";
	
	if ( /^\s*$/.test(e.target.elements['pregunta'].value ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	else if ( /^\s*$/.test(e.target.elements['respuesta'].value ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	else if ( e.target.elements['categoria'].value == "" ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}


	else if ( ( /^\s*$/.test(e.target.elements['falsa[0]'].value ) ) ||
		        ( /^\s*$/.test(e.target.elements['falsa[1]'].value ) ) ||
		        ( /^\s*$/.test(e.target.elements['falsa[2]'].value ) ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	if (error != "") {

		alert(error);
	
		e.preventDefault();

		e.stopPropagation();
		
	}

	
	return error == "";

}


function noticias_comentario_validar (e) {
	
	var error = "";
	
	if ( e.target.elements['usuario'] != null && /^\s*$/.test(e.target.elements['usuario'].value ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	else if ( e.target.elements['correo'] != null && !correo_valido( e.target.elements['correo'].value ) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}
	
	else if ( /^\s*$/.test(e.target.elements['comentario'].value) ) {
		
		error = 'Te has dejado algunos campos obligatorios en blanco o los has rellenado incorrectamente.\nPor favor, arréglalo antes de continuar.';
		
	}

	if (error != "") {

		alert(error);
	
		e.preventDefault();

		e.stopPropagation();
		
	}
	
	return error == "";

}




function privado_registro_validar (e) {
	
	var error = "";
	
	if ( !usuario_valido ( e.target.elements['usuario'].value ) ) {
		
		error = 'Nombres de usuario normalitos, nada de florituras.\nHa de contener al menos 4 caracteres, no puede empezar por número y sólo puede contener caracteres alfanuméricos y los guiones "-", y "_"';
		
	}
	
	else if ( !contraseña_valida ( e.target.elements['contrasena'].value ) ) {
		
		error = 'Un mínimo de seguridad, por favor.\nHa de contener al menos 6 caracteres.';
		
	}
	
	else if ( e.target.elements['contrasena'].value != e.target.elements['contrasena_confirmacion'].value ) {
		
		error = 'Las dos contraseñas que has introducido no coinciden.';
		
	}
	
	else if ( !correo_valido( e.target.elements['correo'].value ) ) {
		
		error = 'La dirección de correo electrónico tiene una forma un poco rara.\nHa de ser de la forma usuario@dominio.';
		
	}

	if (error != "") {

		alert(error);
	
		e.preventDefault();

		e.stopPropagation();
		
	}
	
	return error == "";

}


function privado_recordar_validar (e) {
	
	var error = "";
	
	if ( /^\s*$/.test( e.target.elements['usuario'].value ) && !correo_valido( e.target.elements['correo'].value ) ) {
		
		error = 'Si no me ayudas no podré ayudarte.\nComo mínimo necesito saber cuál es tu nombre de usuario o la dirección de correo electrónico que utilizaste para darte de alta.';
		
	}

	if (error != "") {

		alert(error);
	
		e.preventDefault();

		e.stopPropagation();
		
	}
	
	return error == "";

}
