// JavaScript Document

function checkEmail(id) {
	var mail = document.getElementById(id);
	// Se asegura de que algo fue escrito y que tiene cierto parecido
	// con una dirección de correo válida
	var error = '';
	if (!mail) {
		return false;
	}
	
	
	var mailstring = mail.value;
	
	if (mailstring.length == 0) {
		error = 'No has escrito una dirección de correo';
		alert(error);
		return false;
	}
	if (mailstring.indexOf('@') == -1) {
		error = 'La dirección de correo no tiene arroba (@)';
		alert(error);
		return false;
	} else if (mailstring.lastIndexOf('@') != mailstring.indexOf('@')) {
		error = 'La dirección de correo sólo puede contener una arroba (@)';
		alert(error);
		return false;
	}
	
	var chunks = mailstring.split('@');
	var n = chunks[0];
	
	if (n.length == 0) {
		error = 'No hay nombre de usuario en la dirección de correo';
		alert(error);
		return false;
	}
	
	if (n.substring(0, 1) == '.' || n.substring(0, 1) == '-' ||
		n.substr(n.length - 1, 1) == '.') {
			error = 'El nombre de usuario en la dirección de correo no puede empezar con punto o guión';
			error += ' y no puede terminar con punto';
			alert(error);
			return false;
	}
	
	if (!checkValidCharacters(n)) {
		error = 'El nombre de usuario en la dirección de correo contiene caracteres inválidos';
		alert(error);
		return false;
	}
	
	n = chunks[1];
	if (n.length == 0) {
		error = 'No hay dominio en la dirección de correo';
		alert(error);
		return false;
	}
	
	if (n.indexOf('.') == -1) {
		error = 'El dominio en la dirección de correo no tiene punto';
		alert(error);
		return false;
	} 
	
	if (n.substring(0, 1) == '.' || n.substring(0, 1) == '-' ||
		n.substr(n.length - 1, 1) == '-' ||
		n.substr(n.length - 1, 1) == '.') {
			error = 'El nombre de dominio en la dirección de correo no puede comenzar con guión o punto';
			alert(error);
			return false;
	}
	
	if (!checkValidCharacters(n)) {
		error = 'El nombre de dominio en la dirección de correo contiene caracteres inválidos';
		alert(error);
		return false;
	}
	return true;
}

function checkValidCharacters(n) {
	for (var i = 0; i < n.length; i++) {
		currentCode = n.charCodeAt(i);
		if (currentCode == 45 || currentCode == 46 ||
			currentCode == 95 ||
			( currentCode > 96 && currentCode < 123) ||
			(currentCode > 47 && currentCode < 58)) {
				continue;
		} else {
			return false;
		}
	}
	return true;
}


function checkName(id) {
	var comment = document.getElementById(id);
	
	return comment.value.length > 0;
}

function validate() {
	if (!checkEmail("email")) {
	    return false;
	}
	
	if (!checkName("name")) {
		alert("Escribe tu nombre, por favor.");
		return false;
	}
	
	
	return true;
}
