// TRUE si es VACIO -----------------------------------------------------------------------
function esVacio(campo, nombreCampo) {
	if (campo.value == "") {
		alert("El campo '" + nombreCampo + "' no puede ser vacío.");
		campo.focus();
		return true;
	}
	return false;
}

// TRUE si COINCIDEN ----------------------------------------------------------------------
function coinciden(campo1, campo2, nombreCampo1, nombreCampo2, campoFoco) {
	if (campo1.value != campo2.value) {
		alert("El campo '" + nombreCampo1 + "' y el '" + nombreCampo2 + "' deben coincidir.");
		campoFoco.focus();
		return false;
	}
	return true;
}

// TRUE si esta SELECCIONADO ------------------------------------------------------------
function estaSeleccionadoRadio(campo, nombreCampo) {
	var radioSeleccionado = false;

	for (k = 0; k < campo.length; k++) {
		if (campo[k].checked) {
			radioSeleccionado = true;
		}
	}
	
	if(!radioSeleccionado) {
		alert("Tiene que elegir una opcion en el campo '" + nombreCampo + "'.");
		return false;
	}
	return true;
}

// TRUE si esta SELECCIONADO ------------------------------------------------------------
function estaSeleccionadoSelect(campo, nombreCampo) {
	if(campo.selectedIndex < 0) {
		alert("Tiene que elegir una opcion en el campo '" + nombreCampo + "'.");
		return false;
	}
	return true;
}

// TRUE si todos sus caracteres estan en la cadena CARACTERES ----------------------------
function caracteresValidos(texto, caracteres) {
	for (i = 0; i < texto.length; i++) {
		ch = texto.charAt(i);
		for (j = 0; j < caracteres.length; j++)
			if (ch == caracteres.charAt(j))
				break;
				
		if (j == caracteres.length) {
			return false;
		}
	} 
	return true;
}

// TRUE si es NUMERICO --------------------------------------------------------------------
function esNumerico(campo, nombreCampo) {
	if (!caracteresValidos(campo.value, '0123456789.,')) {
		alert("El campo '" + nombreCampo + "' debe ser numérico.");
		campo.focus();
		return false;
	}
	return true;
}

// TRUE si es TELEFONO --------------------------------------------------------------------
function esTelefono(campo, nombreCampo) {
	if (!caracteresValidos(campo.value, '+0123456789 -*#')) {
		alert("El campo '" + nombreCampo + "' debe ser un número de teléfono válido.");
		campo.focus();
		return false;
	}
	return true;
}

// TRUE si es FECHA VALIDA ---------------------------------------------------------------
function esFecha(campo, nombreCampo, separador) {
	var fecha = campo.value;

	if (fecha.length < 10) {
		alert("El campo '" + nombreCampo + "' debe tener una fecha correcta.");
		campo.focus();
		return false;
	}

	var ano = new String(fecha.substring(fecha.lastIndexOf(separador) + 1, fecha.length));
	var mes = new String(fecha.substring(fecha.indexOf(separador)+1, fecha.lastIndexOf(separador)));
	var dia = new String(fecha.substring(0, fecha.indexOf(separador)));

	// Validacion del año
	if (isNaN(ano) || ano.length < 4 || parseFloat(ano) < 1900) {
		alert("Año incorrecto en el campo '" + nombreCampo + "'.");
		campo.focus();
		return false;
	}
	// Validacion del mes
	if (isNaN(mes) || parseFloat(mes) < 1 || parseFloat(mes) > 12) {
		alert("Mes incorrecto en el campo '" + nombreCampo + "'.");
		campo.focus();
		return false;
	}
	// Validacion del dia
	if (isNaN(dia) || parseInt(dia, 10) < 1 || parseInt(dia, 10) > 31) {
		alert("Día incorrecto en el campo '" + nombreCampo + "'.");
		campo.focus();
		return false;
	}
	if (mes == 4 || mes == 6 || mes == 9 || mes == 11 || mes == 2) {
		if (mes == 2 && dia > 28 || dia > 30) {
			alert("Día incorrecto en el campo '" + nombreCampo + "'.");
			campo.focus();
			return false;
		}
	}
	return true;
}

// TRUE si es VALIDO PARA INTERNET (Usuarios, CONTRASEÑAS...) ----------------------------
function esValidoInternet(campo, nombreCampo) {
	if (!caracteresValidos(campo.value, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_')) {
		alert("El campo '" + nombreCampo + "' debe contener unicamente 'a-z', 'A-Z', '0-9', '-' o '_'.");
		campo.focus();
		return false;
	}
	return true;
}

// TRUE si es EMAIL -----------------------------------------------------------------------
function esEmail(campo, nombreCampo) {
	if ((campo.value.indexOf ('@', 0) == -1) || (campo.value.indexOf ('.', 0) == -1) || (campo.value.length < 5)) {
		alert("El campo '" + nombreCampo + "' debe ser una dirección de correo válida.");
		campo.focus();
		return false;
	}
	return true;
}
