function debugLog(entry){
	// document.getElementById('debug').innerHTML = document.getElementById('debug').innerHTML + entry + '<br>';
}

var weekday=new Array(7)
weekday[0]="Sunday"
weekday[1]="Monday"
weekday[2]="Tuesday"
weekday[3]="Wednesday"
weekday[4]="Thursday"
weekday[5]="Friday"
weekday[6]="Saturday"

var allmonths=new Array(12)
allmonths[0]="January"
allmonths[1]="February"
allmonths[2]="March"
allmonths[3]="April"
allmonths[4]="May"
allmonths[5]="June"
allmonths[6]="July"
allmonths[7]="August"
allmonths[8]="September"
allmonths[9]="October"
allmonths[10]="November"
allmonths[11]="December"

function gdateHelper(gCalTime) {
	debugLog('<br>gcaltime: ' + gCalTime);

	var regex = /^([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})(T?)([0-9]{2}):?([0-9]{2}):?([0-9]{2})?\.?([0-9]{3})?(Z)?([\+\-])([0-9]{2}):?([0-9]{2})/;
	var results = regex.exec(gCalTime);
	if( null == results )	{
		debugLog('<br>gcaltime failed: ' + gCalTime);
		return new Date(0);
	}

  // minutes of correction between gCalTime and GMT
  var totalCorrMins = 0;

  var year = results[1];
  var month = results[2];
  var dateMonth = results[3];
  var timeOrNot = results[4];

  // if a DATE-TIME was matched in the regex 
  if (timeOrNot == 'T') {
    var hours = results[5];
    var mins = results[6]
    var zuluOrNot = results[9];

    // if time from server is not already in GMT, calculate offset
    if (zuluOrNot != 'Z') {
      var corrPlusMinus = results[10];
      if (corrPlusMinus != '') {
        var corrHours = results[11];
        var corrMins = results[12];
        totalCorrMins = (corrPlusMinus=='-' ? 1 : -1) * 
            (Number(corrHours) * 60 + 
	    (corrMins=='' ? 0 : Number(corrMins)));
      }
    } 

    // get time since epoch and apply correction, if necessary
    // relies upon Date object to convert the GMT time to the local
    // timezone
    var originalDateEpoch = Date.UTC(year, month - 1, dateMonth, hours, mins);
    var gmtDateEpoch = originalDateEpoch + totalCorrMins * 1000 * 60;
    var ld = new Date(gmtDateEpoch);
    return ld;
  }
 }
<!--
/**
 * Converts an xs:date or xs:dateTime formatted string into the local timezone
 * and outputs a human-readable form of this date or date/time.
 *
 * @param {string} gCalTime is the xs:date or xs:dateTime formatted string
 * @return {string} is the human-readable date or date/time string
 */
function formatGCalTime(gCalTime) { 
	var ld = gdateHelper(gCalTime);
	   // date is originally in YYYY-MM-DD format
    // time is originally in a 24-hour format
    // this converts it to MM/DD hh:mm (AM|PM) 

	var hours   = ((ld.getHours()>12) ? (ld.getHours()-12):( ld.getHours()===0 ? 12: ld.getHours() ) );
	var minutes = ((ld.getMinutes()<10) ? ('0' + ld.getMinutes()):(ld.getMinutes()));
	var amorpm  = ((ld.getHours()>=12)?'PM':'AM');

    var dateString = hours + ':' + minutes + ' ' + amorpm;
	return dateString;
}

/**
 * Creates an unordered list of events in a human-readable form
 *
 * @param {json} root is the root JSON-formatted content from GData
 * @param {string} divId is the div in which the events are added
 */ 
function listEvents(root, divId) {
  var feed = root.feed;
  var events = document.getElementById(divId);

  if (events.childNodes.length > 0) {
    events.removeChild(events.childNodes[0]);
  }	  

  // create a new unordered list
  var ul = document.createElement('ul');

  // loop through each event in the feed
  for (var i = 0; i < feed.entry.length; i++) {
    var entry = feed.entry[i];
    
    
	
    
    
	var title = entry.title.$t;
	var start = entry['gd$when'][0].startTime;
	var end = entry['gd$when'][0].endTime;
	var content = entry.content.$t;
	var where = entry['gd$where'][0].valueString;

	var shour = formatGCalTime(start);
	var ehour = formatGCalTime(end);

	var start = gdateHelper(start);
	var day = weekday[start.getDay()];
	var d = start.getDate();
	var month = allmonths[start.getMonth()];
    

	// if(6 == start.getMonth())
	// 	for (i in entry) debugLog(i + ' : ' + entry[i]) ;
		
    document.getElementById('agenda').innerHTML += ( '<p><a href=calendar.php>' + title + '</a> ' + day + ', ' + month + ' ' + d + ' ' + shour + ' - ' + ehour + '</p>');

    // get the URL to link to the event
    for (var linki = 0; linki < entry['link'].length; linki++) {
      if (entry['link'][linki]['type'] == 'text/html' &&
          entry['link'][linki]['rel'] == 'alternate') {
        var entryLinkHref = entry['link'][linki]['href'];
      }
    }

    var dateString = formatGCalTime(start);
 }
}

/**
 * Callback function for the GData json-in-script call
 * Inserts the supplied list of events into a div of a pre-defined name
 * 
 * @param {json} root is the JSON-formatted content from GData
 */ 
function insertAgenda(root) {
  listEvents(root, 'agenda');
}