window.onload = function() {
  calvis.ready(main);
}

function main() {
  var calId = 'kentpokersociety.co.uk_28e6nqgvgd4rmpel2hpl3olbns@group.calendar.google.com';

  var calendar = new calvis.Calendar();

  // set the CSS IDs for various visual components for the calendar container
  calendar.setCalendarBody('calendarBodyDiv');
  calendar.setNavControl('navControlDiv');
  calendar.setViewControl('viewControlDiv');
  calendar.setStatusControl('statusControlDiv');
  calendar.setEventCallback('click', displayEvent);

  // set the calenar to pull data from this Google Calendar account
  calendar.setPublicCalendar(calId);  

  calendar.setDefaultView('month');
  // display the calendar
  calendar.render();  

  // global lightbox dialog to display event details
  eventWindow = new Widget.Dialog;


}

function displayEvent(event) {    
  var title = event.getTitle().getText();  
  var date = event.getTimes()[0].getStartTime().getDate();
  var content = event.getContent().getText();  
  var location_ = event.getLocations()[0].getValueString().split('@')[0];

  var eventHtml = [];
  eventHtml.push('<h2>');
  eventHtml.push(title);
  eventHtml.push('</h2>');
  eventHtml.push('<br />');
  eventHtml.push('<br />');
  eventHtml.push('<strong>Date: </strong>');
  eventHtml.push(date.toString());
  eventHtml.push('<br>');
  eventHtml.push('<br>');
  eventHtml.push('<strong>Location: </strong>');
  eventHtml.push(location_);
  eventHtml.push('<br />');
  eventHtml.push('<br />');
  eventHtml.push('<strong>Description:</strong>');
  eventHtml.push('<br />');
  eventHtml.push('<p>');
  eventHtml.push(content); 
  eventHtml.push('</p>');
  eventHtml.push('<br />');
  eventHtml.push('<br />');
  eventHtml.push('<br />');
  
  // after this the eventHtml is in the DOM  tree
  eventWindow.alert(eventHtml.join(''));

  //displayMap(location_);
  //displayVideo(title);
}      


function displayMap(location_) {

  var geocoder = new GClientGeocoder();
  geocoder.getLatLng(
    location_,
    function(point) {
      if (point) {        
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.setCenter(point, 13);
        var marker = new GMarker(point);
        map.addOverlay(marker);
      } else {
        document.getElementById('map').parentNode.removeChild(document.getElementById('map'));
      }
    }
  );
}

function getGeocode(json) {
  var mapData = eval(json);
  console.log(mapData);

  var status = mapData.Status.code;
  console.log(status);
  if (status == '200') {
    var lng = mapData.Placemark[0].Point.coordinates[0];
    var lat = mapData.Placemark[0].Point.coordinates[1];
    console.log(lat + ' ' + lng);

    var point = new GLatLng(lat,lng);
    map.setCenter(point, 13);
    map.addOverlay(new GMarker(point));


  }
}

function displayVideo(title) {

  var keywords = title.replace(/ /g, '+');

  var callbackName = 'processYouTubeFeed';

  var youtubeFeed =
    ['http://gdata.youtube.com/feeds/api/videos?callback=',
    callbackName, '&alt=json-in-script&vq=',
    keywords].join('');

  var script = document.createElement('script');
  script.src = youtubeFeed;

  document.body.appendChild(script);
}

function processYouTubeFeed(feed) {
 
  var data = eval(feed);

  if (data.feed.openSearch$totalResults.$t > 0) {

    var url = data.feed.entry[0].link[0].href;
    var id = url.replace('http://www.youtube.com/watch?v=', '');
    var videoUrl = 'http://www.youtube.com/v/' + id;

    var html = [];

    html.push('<object width="250" height="200">');
    html.push('<param name="movie" value="');
    html.push(videoUrl);
    html.push('"></param>');
    html.push('<param name="wmode" value="transparent"></param>');
    html.push('<embed src="');
    html.push(videoUrl);
    html.push('" type="application/x-shockwave-flash"');
    html.push(' wmode="transparent" width="250" height="200">');
    html.push('</embed></object>');

    document.getElementById('video').innerHTML = html.join('');
  }
}
