/*
 * Retrieve all events
 */

// Create the calendar service object
var calendarService;

// The default "private/full" feed is used to retrieve events from 
// the primary private calendar with full projection 
var feedUri = "http://www.google.com/calendar/feeds/oneidacountyhabitat@gmail.com/public/full";
var divID;
var type;

// The callback method that will be called when getEventsFeed() returns feed data
var callback = function(result) {       

  // Obtain the array of CalendarEventEntry
//  var entries = result.feed.entry;    
  if(type == "LIST")
	listEvents(result);
  else if(type == "COMBO")
	comboEvents(result);
}

function listEvents(feedRoot) {
  var entries = feedRoot.feed.getEntries();
  var eventDiv = document.getElementById(divID);
  if (eventDiv.childNodes.length > 0) {
    eventDiv.removeChild(eventDiv.childNodes[0]);
  }	  
  /* create a new unordered list */
  var ul = document.createElement('ul');
  ul.setAttribute('style', 'margin-left:10px;padding-left:10px;');
  /* set the calendarTitle div with the name of the calendar */
  document.getElementById('calendarTitle').innerHTML = "Events:"; // "Calendar: " + feedRoot.feed.title.$t;
  /* loop through each event in the feed */
  var len = entries.length;
  for (var i = 0; i < len; i++) {
    var entry = entries[i];
    var title = entry.getTitle().getText();
    var startDateTime = null;
    var startJSDate = null;
    var times = entry.getTimes();
    if (times.length > 0) {
      startDateTime = times[0].getStartTime();
      startJSDate = startDateTime.getDate();
    }
    var entryLinkHref = null;
    if (entry.getHtmlLink() != null) {
      entryLinkHref = entry.getHtmlLink().getHref();
    }
    var dateString = (startJSDate.getMonth() + 1) + "/" + startJSDate.getDate();
    if (!startDateTime.isDateOnly()) {
      dateString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes());
    }
    var li = document.createElement('li');
	li.setAttribute('id', 'event-list');

    /* if we have a link to the event, create an 'a' element */
    /*if (entryLinkHref != null) {
      entryLink = document.createElement('a');
      entryLink.setAttribute('href', entryLinkHref);
      entryLink.appendChild(document.createTextNode(title));
      li.appendChild(entryLink);
      li.appendChild(document.createTextNode(' - ' + dateString));
    } else { */
      li.appendChild(document.createTextNode(title + ' - ' + dateString));
//    }	    

    /* append the list item onto the unordered list */
    ul.appendChild(li);
  }
  eventDiv.appendChild(ul);
}

function comboEvents(feedRoot) {
  var entries = feedRoot.feed.getEntries();
  var eventDiv = document.getElementById(divID);
  if (eventDiv.childNodes.length > 0) {
    eventDiv.removeChild(eventDiv.childNodes[0]);
  }	  
  /* create a new unordered list */
  var select = eventDiv; //document.createElement('select');
  //select.setAttribute('style', 'margin-left:10px;padding-left:10px;');
  /* set the calendarTitle div with the name of the calendar */
  //document.getElementById('calendarTitle').innerHTML = "Events:"; // "Calendar: " + feedRoot.feed.title.$t;
  /* loop through each event in the feed */
  var len = entries.length;
  for (var i = 0; i < len; i++) {
    var entry = entries[i];
    var title = entry.getTitle().getText();
    var startDateTime = null;
    var startJSDate = null;
    var times = entry.getTimes();
    if (times.length > 0) {
      startDateTime = times[0].getStartTime();
      startJSDate = startDateTime.getDate();
    }
    var entryLinkHref = null;
    if (entry.getHtmlLink() != null) {
      entryLinkHref = entry.getHtmlLink().getHref();
    }
    var dateString = (startJSDate.getMonth() + 1) + "/" + startJSDate.getDate();
    if (!startDateTime.isDateOnly()) {
      dateString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes());
    }
    var option = document.createElement('option');
    option.setAttribute('value', dateString);
    //option.setText(title);

    /* if we have a link to the event, create an 'a' element */
    /*if (entryLinkHref != null) {
      entryLink = document.createElement('a');
      entryLink.setAttribute('href', entryLinkHref);
      entryLink.appendChild(document.createTextNode(title));
      li.appendChild(entryLink);
      li.appendChild(document.createTextNode(' - ' + dateString));
    } else { */
      option.appendChild(document.createTextNode(title + ' - ' + dateString));
//    }	    

    /* append the list item onto the unordered list */
    //select.appendChild(option);
    eventDiv.appendChild(option);
  }
  //eventDiv.appendChild(select);
}

function padNumber(num) {
  if (num <= 9) {
    return "0" + num;
  }
  return num;
}

// Error handler to be invoked when getEventsFeed() produces an error
var handleError = function(error) {
//alert("Error  " + error); 
  //PRINT(error);
}

// Submit the request using the calendar service object
function init(aGoogle)
{
	aGoogle.gdata.client.init(handleError);
	calendarService = new aGoogle.gdata.calendar.CalendarService('hab-cal');
}

function createEventsList(aGoogle, divID)
{
	init(aGoogle);

	var query = new google.gdata.calendar.CalendarEventQuery(feedUri);
	query.setOrderBy('starttime');
	query.setSortOrder('ascending');
	query.setFutureEvents(true);
	query.setSingleEvents(true);
	query.setMaxResults(6);
	
	this.divID = divID;
	this.type = "LIST";
	calendarService.getEventsFeed(query, callback, handleError);
}

function createEventsCombo(aGoogle, divID)
{
	init(aGoogle);

	var query = new google.gdata.calendar.CalendarEventQuery(feedUri);
	query.setOrderBy('starttime');
	query.setSortOrder('ascending');
	query.setFutureEvents(false);
	query.setSingleEvents(true);
	query.setMaxResults(10);
	query.setParam('q', 'construction');
	
	this.divID = divID;
	this.type = "COMBO";
	calendarService.getEventsFeed(query, callback, handleError);
}


