andler());
}

function ajaxErrorHandler() {
  return function(jqXHR, textStatus, errorThrown) {
    alert('Error: ' + jqXHR.responseText || errorThrown || textStatus);
  };
}

function renderCalendar() {
  var $calendar = $('#calendar');
  $calendar.empty();

  var $table = $('<table>').appendTo($calendar);

  // header row
  var $headerRow = $('<tr>').appendTo($table);
  $('<td>')
      .text('<<')
      .addClass('month-switcher')
      .click(function() {
        --g_month;
        if (g_month < 0) {
   