window.alert = function() { /* silence google */ };
google.load("gdata", "1");

function init() { google.gdata.client.init(handleGDError); }
function padNumber(num) { if (num <= 9) { return "0" + num; } return num; }
function loadCalendarByAddress(calendarAddress) { var calendarUrl = 'http://www.google.com/calendar/feeds/' + calendarAddress + '/public/full'; loadCalendar(calendarUrl); }
function loadCalendar(calendarUrl) { var service = new google.gdata.calendar.CalendarService('gdata-js-client-samples-simple'); var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl); query.setOrderBy('starttime'); query.setSortOrder('ascending'); query.setFutureEvents(true); query.setSingleEvents(true); query.setMaxResults(3); service.getEventsFeed(query, listEvents, handleGDError); }
function handleGDError(e) { document.getElementById('jsSourceFinal').setAttribute('style', 'display:none'); if (e instanceof Error) { alert('Error at line ' + e.lineNumber + ' in ' + e.fileName + '\n' + 'Message: ' + e.message); if (e.cause) { var status = e.cause.status; var statusText = e.cause.statusText; alert('Root cause: HTTP error ' + status + ' with status text of: ' + statusText); } } else { alert(e.toString()); } }
function getMonthText(month) { switch (month) { case 0: return 'января'; case 1: return 'февраля'; case 2: return 'марта'; case 3: return 'апреля'; case 4: return 'мая'; case 5: return 'июня'; case 6: return 'июля'; case 7: return 'августа'; case 8: return 'сентября'; case 9: return 'октрябя'; case 10: return 'ноября'; case 11: return 'декабря'; } return ''; }

function listEvents(feedRoot) {
  var entries = feedRoot.feed.getEntries();
  
  /* loop through each event in the feed */
  var len = entries.length;
  for (var i = 0; i < len; i++)
  {
    var entry = entries[i];
    var startJSDate = entry.getTimes()[0].getStartTime().getDate();
    
    $$('#events .links')[0].insert({ before: Builder.node('div', { className: 'event small' }, [
      Builder.node('div', { className: 'date' }, [
        Builder.node('div', { className: 'day' }, startJSDate.getDate()),
        Builder.node('div', { className: 'month' }, getMonthText(startJSDate.getMonth())),
      ]),
      Builder.node('h3', entry.getTitle().getText()),
      Builder.node('p', (startJSDate.getHours() != 0 ? 'В ' + startJSDate.getHours() + ':' + padNumber(startJSDate.getMinutes()) + ' ' : '') + entry.getLocations()[0].getValueString())
    ])});
  }

  $('events-loading').hide();
}

google.setOnLoadCallback(init);

document.observe('dom:loaded', function() {
  loadCalendar('http://www.google.com/calendar/feeds/shinkansen.ru_a63f5t1v62fsqpjm84n3c62tdc@group.calendar.google.com/public/full');
});