var predefinedCalendar = 
   { title: "",
     //feed: "http://www.google.com/calendar/feeds/6183i6sm3em3beul3qlbvrq95s%40group.calendar.google.com/public/basic",
     //feed: "http://www.google.com/calendar/feeds/6jjan5pdnlm5av8nbm1l9n96g8%40group.calendar.google.com/public/basic",
     //feedOld: "http://www.google.com/calendar/feeds/lhpraalroc6abqrmuugt0o131k%40group.calendar.google.com/public/basic",
     //feed: "http://www.google.com/calendar/feeds/62jp2qirrnepcaot5ca4u33590@group.calendar.google.com/public/basic",
     feed: "http://www.google.com/calendar/feeds/92c8as15rl6skrg1rss1uqj26b0gh3jv@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 < 25) {
      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;
  }

  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;
  }

  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;  
  }

  var old = loadCalendar;

  window.loadCalendar = function(title, url) {
    $("EntriesCount").options[$("EntriesCount").selectedIndex].value = 14;
    old(title, url);
  }  

}, false);

