// JavaScript Document

function checkEmail(id) {
	var mail = document.getElementById(id);
	// Make sure that something was entered and that it looks like a valid email address
	var error = '';
	if (!mail) {
		return false;
	}
	
	
	var mailstring = mail.value;
	
	if (mailstring.length == 0) {
		error = 'No has escrito una dirección de correo electrónico';
		alert(error);
		return false;
	}
	if (mailstring.indexOf('@') == -1) {
		error = 'La dirección de correo electrónico no tiene arroba (@)';
		alert(error);
		return false;
	} else if (mailstring.lastIndexOf('@') != mailstring.indexOf('@')) {
		error = 'Una dirección de correo electrónico 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 electrónico';
		alert(error);
		return false;
	}
	
	if (n.substring(0, 1) == '.' || n.substring(0, 1) == '-' ||
		n.substr(n.length - 1, 1) == '.') {
			error = 'El usuario no puede empezar con un punto o guión';
			error += ' y no puede terminar con un punto';
			alert(error);
			return false;
	}
	
	if (!checkValidCharacters(n)) {
		error = 'La dirección de correo electrónico 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 electrónico';
		alert(error);
		return false;
	}
	
	if (n.indexOf('.') == -1) {
		error = 'El dominio en la dirección de correo electrónico 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 dominio en la dirección de correo electrónico no puede empezar o terminar en punto o guión';
			alert(error);
			return false;
	}
	
	if (!checkValidCharacters(n)) {
		error = 'El dominio en la dirección de correo electrónico 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 checkComments(id) {
	var comment = document.getElementById(id);
	
	return comment.value.length > 0;
}

function validate() {
	if (!checkEmail("email")) {
		return false;
	}
	
	if (!checkComments("message")) {
		alert("Escribe un comentario.");
		return false;
	}
	
	
	return true;
}
