google.load("gdata", "1");

var myService;
var feedUrl = "http://www.google.com/calendar/feeds/rqscrdsp54bfr9u8vov4i2jom0%40group.calendar.google.com/private/full";
var eventResults = false;

function logMeIn(){
  scope = "http://www.google.com/calendar/feeds/";
  var token = google.accounts.user.login(scope);
}

function logMeOut() {
  google.accounts.user.logout();
}

function setupMyService() {
  myService = new google.gdata.calendar.CalendarService('GRKY-SimpleCal');
}

function getMyFeed() {
  setupMyService();
  myService.getEventsFeed(feedUrl, handleMyFeed, handleError);
}

function handleMyFeed(result) {
// Obtain the array of CalendarEventEntry
  var entries = result.feed.entry;    
  
  // Print the total number of events
  alert('Total of ' + entries.length + ' event(s)');

  for (var i = 0; i < entries.length; i++ ) {
    var eventEntry = entries[i];
    var eventTitle = eventEntry.getTitle().getText();
    //alert('Event title = ' + eventTitle);
  }    
}

function handleError(e) {
  alert("There was an error!");
  alert(e.cause ? e.cause.statusText : e.message);
}

function isDuplicate(title){
	var searchText = title;
	var query = new google.gdata.calendar.CalendarEventQuery(feedUrl);
	query.setFullTextQuery(searchText);

	var callback = function(result) {
	  var entries = result.feed.entry;
	  if (entries.length > 0) {
		eventResults = true;
	  } else {
		eventResults = false;
	  }
	}

	var handleError = function(error) {
	  alert(error);
	}

	return myService.getEventsFeed(query, callback, handleError);
}

function insertEvent(title,location,start,end){
	if (!end) end = start;
	setupMyService();
	logMeIn();
	isDuplicate(title);
	if (eventResults == false){
		var entry = new google.gdata.calendar.CalendarEventEntry();
		entry.setTitle(google.gdata.Text.create(title));

		var where = new google.gdata.Where();
		where.setValueString(location);
		entry.addLocation(where);
		
		var when = new google.gdata.When();
		var startTime = google.gdata.DateTime.fromIso8601(start);
		var endTime = google.gdata.DateTime.fromIso8601(end);
		when.setStartTime(startTime);
		when.setEndTime(endTime);
		entry.addTime(when);

		// The callback method that will be called after a successful insertion from insertEntry()
		var callback = function(result) {
		  alert('Event created in Google Calendar!');
		}

		// Error handler will be invoked if there is an error from insertEntry()
		var handleError = function(error) {
		  alert(error);
		}

		// Submit the request using the calendar service object
		myService.insertEntry(feedUrl, entry, callback, handleError, google.gdata.calendar.CalendarEventEntry);
	} else {
		alert('This event has already been created. Delete the event through Google Calendar and try again.');
	}
}
