Por usar el mismo nombre para el textbox y para el parámetro de la función no significa que por arte de mágia se vaya a pasar un valor automáticamente al llamar a la función, ya que no le estás pasando ningún valor.
Ya te han resuelto la duda y te han epxlicado la razón, pero bueno, de todas formas te muestro este ejemplo para que trates de indentar el código (por el amor de dios), y de paso evaluar si el texto es numérico (Integer) para habilitar el botón:
<html>
<head>
<script type='text/javascript'>
function IsEven(value) {
if (value%2==0) {
alert("El numero introducido es par");
} else {
alert("El numero introducido es impar");
}
}
function IsInteger(str) {
bt_calculate.disabled = !(/^[0-9]{1,10}$/.test(str) && str <= Number.MAX_SAFE_INTEGER);
}
</script>
</head>
<body>
NUMBER:
<input type="text"
name="tb_number"
id ="tb_number"
onkeyup="IsInteger(tb_number.value)">
<input type="button"
name="bt_calculate"
id ="bt_calculate"
value="CALCULAR"
disabled="disabled"
onclick="IsEven(tb_number.value)">
</body>
</html>
(etiqueta js para que la sintaxis se resalte mejor)
Saludos!