<!--
			/**
			* 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
			*/
			var monthStrings = new Array(12);
			monthStrings[1]="Jan.";
			monthStrings[2]="Feb.";
			monthStrings[3]="Mar.";
			monthStrings[4]="Apr.";
			monthStrings[5]="May";
			monthStrings[6]="Jun.";
			monthStrings[7]="Jul.";
			monthStrings[8]="Aug.";
			monthStrings[9]="Sept.";
			monthStrings[10]="Oct.";
			monthStrings[11]="Nov.";
			monthStrings[12]="Dec.";
			
			function formatGCalTime(gCalTime) { 
			  // text for regex matches
			  var remtxt = gCalTime;
			 
			  function consume(retxt) {
				var match = remtxt.match(new RegExp('^' + retxt));
				if (match) {
				  remtxt = remtxt.substring(match[0].length);
				  return match[0];
				}
				return '';
			  }
			 
			  // minutes of correction between gCalTime and GMT
			  var totalCorrMins = 0;
			 
			  var year = consume('\\d{4}');
			  consume('-?');
			  var month = consume('\\d{2}');
			  consume('-?');
			  var dateMonth = consume('\\d{2}');
			  var timeOrNot = consume('T');
			 
			  // if a DATE-TIME was matched in the regex 
			  if (timeOrNot == 'T') {
				var hours = consume('\\d{2}');
				consume(':?');
				var mins = consume('\\d{2}');
				consume('(:\\d{2})?(\\.\\d{3})?');
				var zuluOrNot = consume('Z');
			 
				// if time from server is not already in GMT, calculate offset
				if (zuluOrNot != 'Z') {
				  var corrPlusMinus = consume('[\\+\\-]');
				  if (corrPlusMinus != '') {
					var corrHours = consume('\\d{2}');
					consume(':?');
					var corrMins = consume('\\d{2}');
					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);
			 
				// 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) 
				dateString = (ld.getMonth() + 1) + '/' + ld.getDate() + ' ' + 
					((ld.getHours()>12)?(ld.getHours()-12):(ld.getHours()===0?12:
				ld.getHours())) + ':' + ((ld.getMinutes()<10)?('0' + 
				ld.getMinutes()):(ld.getMinutes())) + ' ' + 
				((ld.getHours()>=12)?'PM':'AM');
			  } else {				
				dateString =  monthStrings[parseInt(month, 10)] + ' ' + parseInt(dateMonth,10);
			  }
			  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 html = [];
			
				// 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 description = entry.content.$t;
					
					if(description && description.length > 29){
						description = description.substr(0, 25);
						description = description.substring(0, description.lastIndexOf(' ')) + '...';
					}
					
					var start = entry['gd$when'][0].startTime;
					var end = entry['gd$when'][0].endTime;
					
					// 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) + " - " + formatGCalTime(end);
					
					html.push('<div class="event">');
					
					// Title
					html.push('<div class="title">');
					// if we have a link to the event, create an 'a' element
					if (typeof entryLinkHref != 'undefined') {
						html.push('<a href="' + entryLinkHref + '&ctz=America/Chicago">');
					}
					html.push(title);
					if (typeof entryLinkHref != 'undefined') {
						html.push('</a>');
					}
					html.push('</div>'); // title
					
					// Description
					if(description != undefined){
						html.push('<span class="description">' + description + '</span>');
					}
					
					// Date
					html.push('<div class="date">' + dateString + '</div>');
			
					html.push('</div>'); // event
				}
				html.push('<div class="etc"><a href="http://www.acu.edu/homecalendar.html">More Events &gt;&gt;</a></div>');
				document.getElementById(divId).innerHTML = html.join("");
			}
			
			/**
			* 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 insertEvents(root) {
				listEvents(root, 'eventsList');
			}
			//-->
