var feedUri = 'http://www.google.com/calendar/feeds/hcji3qnqombvmm49lvdp5f2rp0@group.calendar.google.com/public/full';

/**
* Adds a leading zero to a single-digit number.  Used for displaying dates.
*/
function padNumber(num) {
    if (num <= 9) {
  	return "0" + num;
    }
    return num;
}

var calendarService;
	
function handleError(e) {
    document.getElementById('jsSourceFinal').setAttribute('style','display:none');
    if (e instanceof Error) {
    /* alert with the error line number, file and message */
    // alert('Error at line ' + e.lineNumber + ' in ' + e.fileName + '\n' + 'Message: ' + e.message);
    /* if available, output HTTP error code and status text */
    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 setupMyService() {
    calendarService = new google.gdata.calendar.CalendarService('Town-of-Hyde-Park');
}

function getQuery(URI) {
   var query = new google.gdata.calendar.CalendarEventQuery(URI);

   var now = new Date();
   now.setHours(0);
   now.setMinutes(0);
   now.setSeconds(0);
   var today = new google.gdata.DateTime(now);
   query.setMinimumStartTime(today);

   var then = new Date();
   then.setHours(23);
   then.setMinutes(59);
   then.setSeconds(59);
   var tomorrow = new google.gdata.DateTime(then);
   query.setMaximumStartTime(tomorrow);

   query.setOrderBy('starttime');
   query.setSortOrder('ascending');
   query.setSingleEvents(true);
   query.setMaxResults(10);
   return query;
 }
    
function displayCalendars(result) {
  // Obtain the array of CalendarEntry
        var now = new Date();
	var start_of_today = new Date();
	now.setHours(0);
	now.setMinutes(0);
	now.setSeconds(0);
	var end_of_today = new Date();
	end_of_today.setHours(23);
	end_of_today.setMinutes(59);
	end_of_today.setSeconds(59);
	var lines=new Array();
	var links=new Array();
	var entries = result.feed.entry;
	var eventDiv = document.getElementById('events');
	var keep=1;
	if(eventDiv) {
	/*
	var ul = document.createElement('ul');
	*/
	var span = document.createElement('span');
	for (var i = 0; i < entries.length; i++) {
	    var calendarEntry = entries[i];
	    var calendarTitle = calendarEntry.getTitle().getText();
	    var times = calendarEntry.getTimes();
	    var time = "";
	    var dt = "";
	    var line;
	    var starts_at = new Date();
	    var ends_at;
	    keep=1;
	    if(times.length > 0) {
		dt = "";
	        starts_at = times[0].getStartTime().getDate();
		var s_hours = starts_at.getHours();
		var s_suffix = "am";
		if(s_hours>12) {
		   s_hours -=12;
		   s_suffix="pm";
	        }
		var s_mins=padNumber(starts_at.getMinutes());
	        var ends_at = times[0].getEndTime().getDate();
		var e_hours = ends_at.getHours();
		var e_mins=padNumber(ends_at.getMinutes());
	        if((s_hours!=0)||(s_mins!=0)||(e_hours!=0)||(e_mins!=0)) {
		  time = s_hours +":"+s_mins+s_suffix+" ";
	        }
		else {
		  // Events without times are all day events
		  // Besides all-day events for today, we also get 
		  // all-day events that span today and tomorrow's
		  // all-day events (because they are maintained
		  // with UTC and appear to start at 7pm today)
		  // We only want to display events that start on
		  // or before today and end on or after today
		  // Compare the miliseconds of the date when the
		  // event starts to the miliseconds of the end of today
		  if((starts_at.getTime()>end_of_today.getTime())||
		     (ends_at.getTime()<start_of_today.getTime())) {
		    keep = 0;
		  }
		}
	    }
	    if(keep==1) {
	      span.appendChild(document.createTextNode( time+calendarTitle));
		span.appendChild(document.createElement('br'));
	    }
	}
	eventDiv.appendChild(span);
	}
	else {
	  // alert(result.feed.getFeedLink().getHref() + " not found ");
	}

}

function getCalendars() {
	setupMyService();
	  eventDiv = document.getElementById('events');
	  if (eventDiv && (eventDiv.childNodes.length > 0)) {
	    eventDiv.removeChild(eventDiv.childNodes[0]);
	  }
	for(var i in feedUri) {
	  // alert(calendars[i] + " - " + feedUri[calendars[i]]);
	  var query = getQuery(feedUri[i]);
	  calendarService.getEventsFeed(query, displayCalendars, handleError);
	}	
}

