Gracias por responder pateketrueke.
Al final lo he solucionado con el sistema que me indicó patriarka, Muchas gracias.
Por si alguien le pasa:
El problema lo tenía en la respuesta de la función calendar_html en el que el texto devuelto contenía tanto comillas simples (') como dobles (") y al hacer eval se confundía y no sacaba nada por pantalla.
Para solucionarlo he cargado en una variable la información de la función, luego he realizado un replace y dicha variable la he añadido al código que se le pasa a eval, os dejo el código:
Código PHP:
Ver original$v_calendario = str_replace("'", "'", calendar_html
()); //echo $v_calendario;
return "echo '<p>
<label>$p_texto <a onclick=\"show_calendar()\" style=\"cursor: pointer;\"><small><img src=\"images/calendario.jpg\" /></small></a><br />
</label>
<input readonly=\"readonly\" class=\"text\" type=\"text\" name=\"$p_campo\" id=\"$p_campo\" value=\"$p_valor\" />
<div id=\"calendario\" class=\"calendario_izquierda\" style=\"display:none;position:relative;background-color: white\">$v_calendario</div>
</p>';";
Como veis el "truco" consiste en escapar las comillas del código que le pasas a eval!!!
Nota: La función show_calendar() no es necesario tocarla ya que es una llamada a javascript
Gracias a todos!!!!