function ordi(n){
var s='th';
if(n===1 || n==21 || n==31) s='st';
if(n===2 || n==22) s='nd';
if(n===3 || n==23) s='rd';
return n+s;
}
function padMins(mins){
  if (mins <10) return "0"+mins;
  else return mins;
}
function AMPM(hours){
  if (hours>12 && hours!=24) return "PM";
  else return "AM";
}
function civTime(hours){
if (hours>12) return hours-12;
else return hours;
}
var daysOfWeek = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var monthsOfTheYear = ['January','February','March','April','May',
'June','July','August','September','October','November','December'];
function _run() {
/*
* Retrieve events with a date query
*/

// Obtain a reference to the 'content' div
var content = document.getElementById('feed');

// Create the calendar service object
var calendarService =
    new google.gdata.calendar.CalendarService('com.appspot.interactivesampler');

// The "public/full" feed is used to retrieve events from the named public
// calendar with full projection.
var feedUri = 'http://www.google.com/calendar/feeds/westvillesd.com_7caphoolplc6j145i6jcplhhfs%40group.calendar.google.com/public/full';

// Create a CalendarEventQuery, and specify that this query is
// applied toward the "private/full" feed
var query = new google.gdata.calendar.CalendarEventQuery(feedUri);

// Create and set the minimum and maximum start time for the date query
var startDate = new Date();
//var startMin = google.gdata.DateTime.fromIso8601('2010-03-21T00:00:00.000-08:00');
var startMin = new google.gdata.DateTime(startDate);
var endDate = new Date();
endDate.setMonth(startDate.getMonth()+2);
var startMax = new google.gdata.DateTime(endDate);
//var startMax = google.gdata.DateTime.setDate(myDate.setDate(myDate.getDate()+60));
query.setMinimumStartTime(startMin);
query.setMaximumStartTime(startMax);
query.setSortOrder('ascending'); 
query.setOrderBy('starttime');
query.setMaxResults(50);
// The callback that will be called when getEventsFeed() returns feed data
var callback = function(root) {

  // Obtain the array of matched CalendarEventEntry
  var eventEntries = root.feed.getEntries();

  // Print the query parameters
  var fromDate = google.gdata.DateTime.toIso8601(startMin);
  var toDate = google.gdata.DateTime.toIso8601(startMax);
  var html  = '';
  var thisMonth = '';
  // If there is matches for the date query
  if (eventEntries.length > 0) {
    for (var i = 0; i < eventEntries.length; i++) {
      var event = eventEntries[i];
      var eDate  = event.getTimes()[0].getStartTime().getDate();
      var eEnd = event.getTimes()[0].getEndTime().getDate();
      var eMonth = eDate.getMonth();
      var eEndMonth = eEnd.getMonth();
      //alert (eMonth + " " + thisMonth);
      if (eMonth !== thisMonth ){
          if (thisMonth < eMonth || eMonth == 0) html += '<\/ul>'; //Added OR CLAUSE 2011-11-04 to fix month indent issue between dec and jan.
          //~ if (eMonth == 0 && thisMonth ==''){
            //~ html += '<span class="newsheading"><span class="newsarrow" >&#x25BA;<\/span>' + monthsOfTheYear[eMonth]+ '<\/span>';
            //~ alert("hi");
          //~ }

          //html+='<\/ul>'; //|| eMonth == 1
          html += '<ul class="newsindex">';
          html += '<span class="newsheading"><span class="newsarrow" >&#x25BA;<\/span>' + monthsOfTheYear[eMonth]+ '<\/span>';
          } else ;//html += '<span class="newsheading"><span class="newsarrow" >&#x25BA;<\/span>' + monthsOfTheYear[eMonth]+ '<\/span>';

      thisMonth=eMonth;
      //alert(thisMonth);
      var eWeekDay   = eDate.getDay();
      var eEndWeekDay = eEnd.getDay();
      var eDay = eDate.getDate();
      var eEndDay = eEnd.getDate();
      var longEvent = "";
      if ((eDay+1)!=eEndDay && eEndDay!=1){
            //alert("Long event:" + event.getTitle().getText());
          	//console.log(event.getTitle().getText() + eEnd.getDate() + "..." + eDate + "...|||..." + eEnd);
          	var eEndHour = eEnd.getHours();
          	var eEndMins = eEnd.getMinutes();
          	//alert("Long event:" + event.getTitle().getText() + ": " + eEndHour + ":" + eEndMins);
      		if (eEndDay && !eEndHour){
          		longEvent = " - " + daysOfWeek[eEndWeekDay-1] + ' ' + ordi(eEndDay-1);
          	}else{
              	longEvent = "";
            }
      }
      var eStartHour = eDate.getHours();
      //alert(eStartHour);
      var eStartMins = eDate.getMinutes();
      if(eStartHour==0 ){
        var etimes = ""
          }else{
        var etimes = ', ' + civTime(eStartHour)+ ':' + padMins(eStartMins) + AMPM(eStartHour) ;
      };
      if (longEvent==""){
      html += '<li class="newsitem">' + daysOfWeek[eWeekDay] + ' ' + ordi(eDay) + ": " + event.getTitle().getText() + etimes + '<\/li>';
      }else{
          html += '<li class="newsitem"><b>' + daysOfWeek[eWeekDay] + ' ' + ordi(eDay) + longEvent + ": " + event.getTitle().getText() + etimes + '<\/b><\/li>';
      }
    }
    html += '<\/ul>';
    //<span style="margin-left:40px; font-size:10px;"> Subscribe to this calendar with: <a href="http://www.google.com/calendar/render?cid=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fwestvillesd.com_7caphoolplc6j145i6jcplhhfs%2540group.calendar.google.com%2Fpublic%2Fbasic" target="_blank"><img src="http://www.google.com/calendar/images/ext/gc_button1.gif" border=0 ><\/a><\/span>
  } else {
    // No match is found for the date query
    html += '<ul class=\"newsindex\"><li class=\"newsitem\">No upcoming events.<\/ul>';
  }

  // Output HTML and clear 'Loading...' text
  content.innerHTML = html;
};

// Error handler to be invoked when getEventsFeed() produces an error
var handleError = function(error) {
  content.innerHTML = '<pre>' + error + '<\/pre>';
};

// Submit the request using the calendar service object. Notice the CalendarEventQuery
// object is passed in place of the feed URI
calendarService.getEventsFeed(query, callback, handleError);

}
google.setOnLoadCallback(_run);
