var predefinedCalendar = 
   { title: "Football",
     //feed: "http://www.google.com/calendar/feeds/fq3gesqotaq5t6cs2t8pu21rgg%40group.calendar.google.com/public/basic",
     //feed: "http://www.google.com/calendar/feeds/fq3gesqotaq5t6cs2t8pu21rgg%40group.calendar.google.com/public/basic",
     //feed: "http://www.google.com/calendar/feeds/sp7ddr8ta7hs7or8lbe8qpjktn31ipt0@import.calendar.google.com/public/basic",
     feed: "http://www.google.com/calendar/feeds/u6elmju38qmkkh0g5ihaja6klg@group.calendar.google.com/public/basic",
     //feed: "http://www.google.com/calendar/feeds/3qmm4fqe7359gs1mrcd95dehbned56q6@import.calendar.google.com/public/basic",
     logo: "apple-touch-icon.png"
   };

window.addEventListener("DOMContentLoaded", function() {
  
if (GoogleCalendar.version) {
  return;
}  
  
GoogleCalendar.parseCalendarJson = function(root) {
  var result = new Object();
  var feed = root.feed;          
  result.type = feed.title.$t;
  var entries = feed.entry;
  if (!entries || entries.length == 0) {
    result.time = null;
    result.title = "No Events";
    return result;
  }
  result.time = new Array();
  result.title = new Array();//"No future Events";
  result.url = new Array();
  result.icon = new Array();
  var now = new Date();
  var nextEntry = getNextEntry(entries, now);
  while (nextEntry && result.time.length < 20) {
    result.time.push(nextEntry.time);
    result.title.push(nextEntry.title.$t);
    var links = nextEntry.link;
    for (var i = 0; i < links.length; i++) {
      var link = links[i];
      if (link.rel == "alternate") {
        result.url.push(link.href);     
      }
      if (link.rel == "http://schemas.google.com/gCal/2005/webContent") {
        result.icon.push(link.href);
      }
    }
    now = nextEntry.time;
    nextEntry = getNextEntry(entries, now, nextEntry);
    //console.log(now);
  }
  if (result.time.length == 0) {
    result.time = null;
    result.title = "No future Events";
    result.url = null;
    result.icon = null;
  }
  return result;
}

GoogleCalendar.parseDate = function(date) {
  var time = new Date();
  time.setUTCFullYear(parseInt(date.substring(0, 4), 10));
  time.setUTCMonth(parseInt(date.substring(5, 7), 10) - 1);
  time.setUTCDate(parseInt(date.substring(8, 10), 10));
  if (date.length > 11) {
    time.setUTCHours(parseInt(date.substring(11, 13), 10))
    time.setUTCMinutes(parseInt(date.substring(14, 16), 10));
  }
  else {
    time.setUTCHours(0);
    time.setUTCMinutes(0);            
  }          
  time.setUTCSeconds(0);
  time.setUTCMilliseconds(0);
  if (date.length > 24) {
    var zone = parseInt(date.substring(23, 26), 10);
    time.setUTCHours(time.getUTCHours() - zone);
  }
  else {
    //time.setUTCMinutes(time.getUTCMinutes() + time.getTimezoneOffset());
  }
  return time;  
}

function getNextEntry(entries, now, lastEntry) {
  var index = 0;
  var nextEntry = null;
  do {
    var entry = entries[index];
    var when = entry.gd$when[0];
    var date = when.startTime;
    var time = GoogleCalendar.parseDate(date);
    //alert(date + " " + time);
    if ((time >= now) && (!nextEntry || nextEntry.time > time) && (!entry.done)) {
      nextEntry = entry;
      nextEntry.time = time;
    }
    index++;
  }
  while (index < entries.length);
  if (nextEntry != null) {
    nextEntry.done = true;
  }  
  return nextEntry;
}

var old = loadCalendar;

window.loadCalendar = function(title, url) {
  $("EntriesCount").options[$("EntriesCount").selectedIndex].value = 16;
  old(title, url);
}  

}, false);

