google.setOnLoadCallback(function() {
    var today = new Date();
    var current_month = today.getMonth()+1;
    var current_year = today.getFullYear();

    /* get initial calendar for current month */
    doCalendar( current_month, current_year );

    function doCalendar( month, year ){
      $('#calendar').empty();
      $('#calendar').css({'width':'197px','height':'133px'});
      $('#calendar').append( '<tr><th colspan="7">&nbsp;</th></tr>' );
      $.getJSON('/news/calendar-json/?stjs='+month+'&styr='+year, function(data) {
          var current_month = data['month'];
          var current_mn    = parseInt(data['mn']);
          var current_year  = parseInt(data['year']);
          var prev_year     = current_year;
          var next_year     = current_year;
          var prev_month    = current_mn - 1;
          if(prev_month == 0){ prev_month = 12; prev_year = current_year - 1 }
          var next_month    = current_mn + 1;
          if(next_month == 13){ next_month = 1; next_year = current_year + 1 }
          $('#calendar').empty();
          $('#calendar').append( '<tr><th><a href="#" id="prevmonth">&lt;&lt;</a></th><th colspan="5">' + current_month + ' ' + current_year + '</th><th><a href="#" id="nextmonth">&gt;&gt;</a></th></tr>' );
          var day_array = data['day_array'];
          var weekday = 0;
          var row;
          row = '<tr>';
          $.each(day_array, function(entryIndex, entry){
              weekday++;
              if(weekday > 7){
                weekday = 1;
                row += '</tr>';
                $('#calendar').append( row );
                row = '<tr>';
              }
              if(entry['url']){
                row += '<td><a href="' + entry['url'] + '">' + entry['date'] + '</a></td>';
              }
              else {
                row += '<td><span>' + entry['date'] + '</span></td>';
              }
            });
          row += '</tr>';
          $('#calendar').append( row );
          $('#prevmonth').click( doCalendarRef(prev_month,prev_year) );
          $('#nextmonth').click( doCalendarRef(next_month,next_year) );
        });
    }

    function doCalendarRef( month, year ){
      return function (){
        doCalendar( month, year );
      }
    }
});
