Creo que el problema básicamente se encuentra en la función calendar_html(), porque si dicha función no devuelve (usando return) una cadena de HTML entonces no importa cuantos trucos hagas pues jamás devolverá nada.
Aunque bueno, si la función tampoco devuelve nada pero sí imprime código HTML entonces puedes usar buffers para capturar toda la salia que genera y al final devolverla con return:
Código PHP:
Ver originalfunction algo() {
echo 'algo de html';
aqui_invoco_cualquier_funcion_aunque_no_devuelva_nada();
}
¿Será?