/* Loads the Google data JavaScript client library */
google.load("gdata", "2.x");


/**
 * Adds a leading zero to a single-digit number.  Used for displaying dates.
 */
function padNumber(num) {
  if (num <= 9) {
    return "0" + num;
  }
  return num;
}

  function datumNaarIso8601(datuminms) {
  		var datum = new Date(datuminms);
      dagDatum = datum.getDate();
  		maandDatum = datum.getMonth() + 1;
  		jaarDatum = datum.getFullYear();
  		if (maandDatum < 10) {
  			maanDatumTekst = '0' + maandDatum;
  		}
  		else {
  			maanDatumTekst = maandDatum;
  		}

  		if (dagDatum < 10) {
  			dagDatumTekst = '0' + dagDatum;
  		}
  		else {
  			dagDatumTekst = dagDatum;
  		}
  		if (maandDatum < 10) {
  			maandDatumTekst = '0' + maandDatum;
  		}
  		else {
  			maandDatumTekst = maandDatum;
  		}
  		
		datumString = jaarDatum + '-' + maandDatumTekst + '-' + dagDatumTekst + 'T00:00:00.000+02:00';
	 	return datumString;
  }


/**
 * Uses Google data JS client library to retrieve a calendar feed from the specified
 * URL.  The feed is controlled by several query parameters and a callback 
 * function is called to process the feed results.
 *
 * @param {string} calendarUrl is the URL for a public calendar feed
 */  
function loadCalendar(calendarUrl) {

  var calendarUrl = 'http://www.google.com/calendar/feeds/30bq7jk6r6m3um8puputikfppk%40group.calendar.google.com/public/full';

  var service = new google.gdata.calendar.CalendarService('gdata-js-client-samples-simple');
  var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl);
  
// Create and set the minimum and maximum start time for the date query
  var datumAfgelopenZondag = new Date();
  
datumAfgelopenZondag.setDate(datumAfgelopenZondag.getDate());
datumAfgelopenZondagString = datumNaarIso8601(datumAfgelopenZondag.getTime());
var startMin = google.gdata.DateTime.fromIso8601(datumAfgelopenZondagString);

query.setMinimumStartTime(startMin);
  query.setOrderBy('starttime');
  query.setSortOrder('ascending');
   query.setSingleEvents(true);
   query.setMaxResults(9);
  service.getEventsFeed(query, listEvents, handleGDError);
}


/**
 * Callback function for the Google data JS client library to call when an error
 * occurs during the retrieval of the feed.  Details available depend partly
 * on the web browser, but this shows a few basic examples. In the case of
 * a privileged environment using ClientLogin authentication, there may also
 * be an e.type attribute in some cases.
 *
 * @param {Error} e is an instance of an Error 
 */
function handleGDError(e) {
  document.getElementById('jsSourceFinal').setAttribute('style', 
      'display:none');
  if (e instanceof Error) {
    /* alert with the error line number, file and message */
    alert('Error at line ' + e.lineNumber +
          ' in ' + e.fileName + '\n' +
          'Message: ' + e.message);

    /* if available, output HTTP error code and status text */
    if (e.cause) {
      var status = e.cause.status;
      var statusText = e.cause.statusText;
      alert('Root cause: HTTP error ' + status + ' with status text of: ' + 
            statusText);
    }
  } else {
    alert(e.toString());
  }
}

function datumInNederlands(dag, maand, jaar) {
	var datumJS = new Date();
	datumJS.setFullYear(jaar);
	datumJS.setDate(dag);
	datumJS.setMonth(maand);
	weekdag = datumJS.getDay();
	var dagTekst = new Array(7);
	dagTekst[0] = "zondag";
	dagTekst[1] = "maandag";
	dagTekst[2] = "dinsdag";
	dagTekst[3] = "woensdag";
	dagTekst[4] = "donderdag";
	dagTekst[5] = "vrijdag";
	dagTekst[6] = "zaterdag";
	var maandTekst = new Array(12);
	maandTekst[0] = "januari";
	maandTekst[1] = "februari";
	maandTekst[2] = "maart";
	maandTekst[3] = "april";
	maandTekst[4] = "mei";
	maandTekst[5] = "juni";
	maandTekst[6] = "juli";
	maandTekst[7] = "augustus";
	maandTekst[8] = "september";
	maandTekst[9] = "oktober";
	maandTekst[10] = "november";
	maandTekst[11] = "december";
	return dagTekst[weekdag] + " " + dag + " " + maandTekst[maand] + " " + jaar;
}

//document.getElementById('testOutput').innerHTML = "hier komt ie wel";

/**
 * Callback function for the Google data JS client library to call with a feed 
 * of events retrieved.
 *
 * Creates an unordered list of events in a human-readable form.  This list of
 * events is added into a div called 'events'.  The title for the calendar is
 * placed in a div called 'calendarTitle'
 *
 * @param {json} feedRoot is the root of the feed, containing all entries 
 */ 
function listEvents(feedRoot) {
  var entries = feedRoot.feed.getEntries();
  var eventDiv = document.getElementById('agenda_content');
  if (eventDiv.childNodes.length > 0) {
    eventDiv.removeChild(eventDiv.childNodes[0]);
  }	  

  var agendaTekst = document.createElement('div');
  agendaTekst.setAttribute("id", "agenda_item")

  /* set the chttp://www.linuxmint.com/start/isadora/alendarTitle div with the name of the calendar */
//  document.getElementById('calendarTitle').innerHTML = 
//    "Calendar: " + feedRoot.feed.title.$t;
  /* loop through each event in the feed */
  var len = entries.length;
  if (len > 7) {
    len=7;
  }

  for (var i = 0; i < len; i++) {
    var entry = entries[i];
    var title = entry.getTitle().getText();
    var eventDescription = entry.getContent().getText();
    var startDateTime = null;
    var startJSDate = null;
    var times = entry.getTimes();
    if (times.length > 0) {
      startDateTime = times[0].getStartTime();
      startJSDate = startDateTime.getDate();
    }
    var entryLinkHref = null;
    if (entry.getHtmlLink() != null) {
      entryLinkHref = entry.getHtmlLink().getHref();
    }

		if (eventDescription.indexOf("http://") == 0) {
			entryLinkHref = eventDescription;				
		}

    var dateString = datumInNederlands(startJSDate.getDate(),(startJSDate.getMonth()), startJSDate.getFullYear());
//    var dateString = datumInNederlands(startJSDate);
    if (!startDateTime.isDateOnly()) {
      timeString = " " + startJSDate.getHours() + ":" + 
          padNumber(startJSDate.getMinutes());
    }

    var plekje = entry.getLocations()[0].getValueString();
	 var ingangGebouw = "";
	 
    if (plekje.indexOf("310") > -1) {
    	ingangGebouw = "ingang 310";
    }
    else if (plekje.indexOf("324") > -1) {
    	ingangGebouw = "ingang 324";
    }
    else if (plekje.indexOf("326") > -1) {
    	ingangGebouw = "ingang 326";
    }
    else {
    	ingangGebouw = "";
    }

    var occurHaakjeOpen = plekje.indexOf("(");
    var occurHaakjeDicht = plekje.indexOf(")");
    var eceOfNiet = plekje.indexOf("Evangelisch Centrum Europoort");
    if ((occurHaakjeOpen > -1) && (occurHaakjeDicht > -1) && (eceOfNiet > -1)) {
    	var deelPlekje = plekje.substr((occurHaakjeOpen + 1), (occurHaakjeDicht - 1 - occurHaakjeOpen));
    	var deelPlekjeSplit = deelPlekje.split(", ");
    	plekje = deelPlekjeSplit[1] + " " + deelPlekjeSplit[0]+ " " + ingangGebouw;
    	plekje = plekje.replace("Evangelisch Centrum Europoort", "ECEuropoort");
    } 
    //plekje = occurHaakjeOpen + " " + occurHaakjeDicht;
//		if (plekje = "") {
//			plekje = " ";
//		}


    /* if we have a link to the event, create an 'a' element */
    if (entryLinkHref != null) {
  		var agendaBullet = document.createElement('div');
  		agendaBullet.setAttribute("id", "agenda_bullet");
  		agendaBullet.appendChild(document.createTextNode("::"));
      var entryLink = document.createElement('a');
      entryLink.setAttribute('href', entryLinkHref);
  		entryLink.setAttribute("class", "agenda_item_title");
  		entryLink.setAttribute("target", "_blank");
      entryLink.appendChild(document.createTextNode(title.toUpperCase()));
      var divLink = document.createElement('div');
  		divLink.setAttribute("class", "agenda_item_title");
  		divLink.appendChild(entryLink);
  		agendaTekst.appendChild(agendaBullet);
      agendaTekst.appendChild(divLink);
      var dataLink = document.createElement('div');
  		dataLink.setAttribute("class", "agenda_item_content");
      dataLink.appendChild(document.createTextNode(dateString.toUpperCase() + ', VANAF ' + timeString.toUpperCase()));
      
      var noTranslate = document.createElement('span');
	    noTranslate.setAttribute("class", "notranslate");

			if (plekje == "") {
				plekje = "...";
	      noTranslate.appendChild(document.createElement('br'));
	      noTranslate.appendChild(document.createTextNode(plekje));
			}
			else {
				      noTranslate.appendChild(document.createElement('br'));
              noTranslate.appendChild(document.createTextNode(plekje.toUpperCase()));
			}
			dataLink.appendChild(noTranslate);
  		agendaTekst.appendChild(dataLink);
    } else {
      agendaTekst.appendChild(document.createTextNode(title + ' - ' + dateString));
    }	    
	agendaTekst.appendChild(document.createElement('br'));

  }
  eventDiv.appendChild(agendaTekst);
}

