// Devuelve TRUE si el campo es vacio.
function esVacio(campo) {
	return (campo.value == '');
}

// Devuelve TRUE si ambos campos tienen el mismo valor.
function coinciden(campo1, campo2) {
	return (campo1.value == campo2.value);
}

// Devuelve TRUE si es campo es valido para internet.
function esValidoInternet(campo) {
	return (caracteresValidos(campo.value, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_@./:?'));
}

// Devuelve TRUE si es eMail
function esEmail(campo) {
	return !((campo.value.indexOf ('@', 0) == -1) || (campo.value.indexOf ('.', 0) == -1) || (campo.value.length < 5));
}

// Devuelve TRUE si es telefono.
function esTelefono(campo) {
	return (caracteresValidos(campo.value, '+0123456789 -*#'));
}

// Devielve TRUE si todos sus caracteres estan en la cadena dada.
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;
}

// Devuelve TRUE si el check esta activado.
function estaCheckActivado(campo) {
	return campo.checked;
}

// Devuelve TRUE si el NIF es correcto.
function esNifValido(campo) {
	nif = campo.value;
	
	if(nif.length != 9) {
		return false;	
	}
	
	numero = nif.substr(0, nif.length - 1);
	letra_dada = nif.substr(nif.length - 1, 1).toUpperCase();
	
	numero = numero % 23;
	letras = 'TRWAGMYFPDXBNJZSQVHLCKET';
	letra_correcta = letras.substring(numero, numero + 1);

	if(letra_correcta != letra_dada) {
    	return false;
	}
	return true;
}

// Devuelve TRUE si el CIF es correcto.
function esCifValido(campo) {
	cif = campo.value;

	if(cif.length != 9) {
		return false;	
	}
	
	numero = cif.substr(1, cif.length);
	letra_dada = cif.charAt(0);
	
	letras = 'ABCDEFGHKLMNPQS';
	
	if(letras.indexOf(letra_dada.toUpperCase()) == -1) {
		return false;
	}

	suma_pares = 0;
	suma_impares = 0;
	
	for(par = 1; par < 7; par += 2) {
		suma_pares += parseInt(numero.charAt(par));
	}
	for(impar = 0; impar < 8; impar += 2) {
		aux = 2 * parseInt(numero.charAt(impar));

		if(aux > 9) aux = 1 + (aux - 10);

		suma_impares += aux;
	}
	
	parcial = suma_pares + suma_impares;
	control = (10 - (parcial % 10));
	if(control == 10) control = 0;
	
	if(control != numero.charAt(7)) {
		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 es NUMERICO --------------------------------------------------------------------
function esNumerico(campo, nombreCampo) {
	if (!caracteresValidos(campo.value, '0123456789.,')) {
		alert("El campo '" + nombreCampo + "' debe ser numerico.");
		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("Ao 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("Da incorrecto en el campo '" + nombreCampo + "'.");
			campo.focus();
			return false;
		}
	}
	return true;
}