Te tengo un par de recomendaciones:
1. No uses '@' para suprimir errores y advertencias, por que esto te puede causar problemas después, es mejor ver los errores y hacer lo mejor para resolverlos que ocultarlos, ya que en futuras modificaciones del código, esto te puede generar un dolor de cabeza
2. Es la primera vez que veo el uso de
$_SERVER['HTTP_X_REQUESTED_WITH']
Como este es un encabezado enviado propiamente por objeto ajax, tienes que buscar el modo que sea reconocido correctamente, aunque mucho desaconsejan el uso de esto, ya que no es un estandard de php, si no un encabezado empleado por el cliente.
Dependiendo de la librería que estes utilizando debes encontrar el modo de hacer algo como
xmlHttpRequestObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
En tu caso creo que puedes leer acá:
http://prototypejs.org/api/ajax/options
3. Por último, lo que puedo deducir leyendo también el tutorial de Ajax.updater de la librería prototype, es que tienes el código php en el mismo archivo que tienes el código html, por lo que estás utilizando, window.location.pathname, y esto causa que se llame a sí mismo por medio del método post, recargando todo el contenido de la página, yo te recomiendo que en lo máximo siempre que uses ajax, y para todo hagas archivos aparte, un archivo aparte para las funciones, otro aparte para el que recibe la petición ajax, y otro aparte para las conexiones y/o peticiones a las bases de datos (que ese si lo ví). Desde el archivo que recibe la petición ajax, cargas con require_once, include, include_once o el que sea de tu preferencia, el archivo con las funciones, tal cual estás haciendo con la conexión... en este caso ya te quedarían otros archivos, mas o menos así
calendario.html <- a este le quitas el código php y lo pones en un archivo aparte
calendario.php <- archivo que tiene lo extraido de calendario.html
funciones.php <- todas las funciones que ese ya lo tienes
conexion.php <-ese también lo tienes por aparte
de este modo al llamar el archivo calendario.php, no se vuelve a cargar todo el código de calendario.html y listo, así es que se usan todas las peticiones ajax, en muy pocos casos se utiliza ajax para llamar al mismo fichero.
Ten en cuenta todo esto y pronto estarás incluso un paso más adelante que todos mis compañeros de curso
Te felicito por el esfuerzo y por estar utilizando prototype y querer aprender por tu cuenta
una pregunta: por que usas prototype? elección personal? te lo exigieron? estás probando? no te gusta jQuery?
Yo en lo personal también andaba buscando alternativas a jQuery, ya que cualquiera que lo usa dice que programa en javascript, cuando en realidad este ya les entrega todo hecho... ese no es el caso de prototype, aunque ayuda mucho, siempre tiene algunas de las complicaciones de programar directamente con javascript
Exitos, respóndeme por favor y me cuentas como te fué
Saludos