// Loads the Google data JavaScript client library
google.load("gdata", "1");

function init() 
{
	google.gdata.client.init(function (message) {});    
}

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);
  var thisSociety = location.href.split('&s=',2);
  
  query.setOrderBy('starttime');
  query.setSortOrder('ascending');
  query.setFutureEvents(true);
  query.setSingleEvents(true);
  query.setMaxResults(10);

  query.setFullTextQuery(thisSociety[1]);

  service.getEventsFeed(query, listEvents, handleGDError);
}

function handleGDError(e) 
{
  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('cause');}*/
  } 

  else {
    /*alert(e.toString());*/}
}

function expand(thistag, tag) 
{
   styleObj=document.getElementById(thistag).style;
   
   if (styleObj.display=='none') {
		styleObj.display='';
		tag.innerHTML = '<img src="img/site/collapse.gif" class="expandBtn">';}
		
   else {
		styleObj.display='none';
		tag.innerHTML = '<img src="img/site/expand.gif" class="expandBtn">';}
}

function trim(string) 
{
	return string.split(' ').join('');
}


function listEvents(feedRoot) 
{
  var entries = feedRoot.feed.getEntries();
  var eventDiv = document.getElementById('events');
  var monthNames = new Array('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');

  if (eventDiv.childNodes.length > 0) {
    eventDiv.removeChild(eventDiv.childNodes[0]);
	eventDiv.id = 'events-list';}	  
  
  /* loop through each event in the feed */
  var len = entries.length;
  
  for (var i = 0; i < len; i++) 
  {
    var entry = entries[i];

	// format the event's title by removing the society indicator (ex: "SCS -" is gone)
    var title = entry.getTitle().getText();
	var goodItemTitle = title.split(" -",2);
	title = goodItemTitle[1];
	
	// expand, collapse button
	var expandBtnHolder = document.createElement('div');
	var expandButton = document.createElement('img');
	var expandID = trim(title);
	var expandThis = "expand('" + expandID + "',this)";

	expandButton.setAttribute('src', 'img/site/expand.gif');
	expandButton.className = 'expandBtn';
	expandButton.setAttribute('onclick', expandThis);
	expandBtnHolder.appendChild(expandButton); // attach the expand button

	// get the event's details
	var details = entry.getContent().getText();
	var spanText = document.createElement('div');
	spanText.className = 'event-text';
	spanText.id = expandID;
	//spanText.style.display = 'none';
	spanText.setAttribute('style', 'display:none;');
	
	if(details == null) {
		details = '';}
		
   	spanText.appendChild(document.createTextNode(details)); // attach the event's description to its holder

	// get the event's date and time
    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();}

	// get the date of the event
    var dateString = '(' + monthNames[(startJSDate.getMonth() + 1)] + " " + startJSDate.getDate() + ") ";

	// get the starting time of the event
    if (!startDateTime.isDateOnly()) 
    {  
	  var timeString = startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes());}
  
	  var spanTitle = document.createElement('div');
	  spanTitle.className = 'event-title';


	  if(details != '') {
		  spanTitle.appendChild(expandBtnHolder);}

	  spanTitle.appendChild(document.createTextNode(dateString + title));
	   
	  /* append the list item onto the unordered list */
	  eventDiv.appendChild(spanTitle);
	  eventDiv.appendChild(spanText);
   }
}

google.setOnLoadCallback(init);