Estás usando PHP, ¿verdad? Debes saber que la variable
$fecha es de PHP, que PHP se ejecuta en el servidor y que al navegador ya le llegará directamente el contenido de la variable
si es que lo imprimes. La variable no puede estar disponible en cualquier lado... no se "pasa" mágicamente de PHP a javascript y viceversa. Lo que tendrías que hacer es:
Código PHP:
<?php
echo "<a href='calendario.php?mes=$mes&anyo=$anyo' onmouseover=(this.innerHTML='Hoy'); onmouseout=(this.innerHTML='$fecha'); >$fecha</a>";
?>
O bien:
Código HTML:
<a href='calendario.php?mes=$mes&anyo=$anyo' onmouseover=(this.innerHTML='Hoy'); onmouseout=(this.innerHTML='<?php echo $fecha;?>'); ><?php echo $fecha;?></a>
En lugar de
<?php echo $a;?> puedes usar
<?= $a;?>, como un atajo. ¡Suerte!