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

var myService;
var calendarrequest;
// var feedUrl = "http://www.google.com/calendar/feeds/gomvc.com_ubeen7amvot3l2odi6r53ko888%40group.calendar.google.com/public/full/";
var feedUrl = "http://www.google.com/calendar/feeds/jl2df1n8kqom8n32lq3t383p0s@group.calendar.google.com/public/full/";
var eventdata = 'eventdata=';
var x = 1;
var possible = false;
var events = [];
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

window.addEvent('domready', function(){

	function setupMyService() {
		myService = new google.gdata.calendar.CalendarService('exampleCo-exampleApp-1');
	}

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

	function handleMyFeed(myResultsFeedRoot) {

 		// $('log').set('html', "This feed's title is: " + myResultsFeedRoot.feed.getTitle().getText() + '<br/>');

		var entries = myResultsFeedRoot.feed.entry;
		// var entries = myResultsFeedRoot.feed.getEntries();
		// console.log(entries);

			
	
		// build query string
		entries.each(function(entry){
			// console.log(entry.getTimes());
			var entrydate = new Date (entry.getTimes().getLast().getStartTime().getDate());
			// console.log(entrydate.getMonth() + ' - ' + entrydate.getDay() + ' - ' + entrydate.getDate());

		 	var dirtyyear = entrydate.getYear();
			// console.log(entry);
			// console.log(entry.link[0].href);
			
			if ((dirtyyear > 100) && (dirtyyear < 2000)) {
				cleanyear = dirtyyear.toString().substr(1,2);
			} else {
				cleanyear = dirtyyear.toString().substr(2,2);
			};

			events[events.length] = {
				"date":		entry.getTimes().getLast().getStartTime().getDate(),
				"UTC":		parseInt(Date.UTC(entrydate.getUTCFullYear(),entrydate.getUTCMonth(),entrydate.getUTCDate(),entrydate.getUTCHours(),entrydate.getUTCMinutes(),entrydate.getUTCSeconds(),entrydate.getUTCMilliseconds())/1000),
				"title":	entry.getTitle().getText(),
				"url":		(entry.link[0].href + '&amp;ctz=America/Los_Angeles')			
			}

			eventdata = eventdata + (cleanyear) + '|' + (entrydate.getMonth() + 1) + '|'  + entrydate.getDate() + '|' + entry.getTitle().getText() + '|' + entry.link[0].href;
			if (x < entries.length) {
				eventdata = eventdata + '^'; 
			};

			x++;

		});

		var today = new Date();
		var todayepoch = parseInt(Date.UTC(today.getUTCFullYear(),today.getUTCMonth(),today.getUTCDate(),today.getUTCHours(),today.getUTCMinutes(),today.getUTCSeconds(),today.getUTCMilliseconds())/1000);

		events.sort(sortbyEpoch);

		var befores = [];
		var afters = [];
		events.each(function(event, index){
			if (event.UTC < todayepoch) {
				befores[befores.length] = event;
			} else {
				afters[afters.length] = event;
			};
		});

		calendarrequest.send(eventdata);

		if (afters[0]) {
			var first = new Element('li', {
				'html': (weekdays[afters[0].date.getDay()] + ", " + months[afters[0].date.getMonth()] + ' ' + afters[0].date.getDate() + ': <a href="' + afters[0].url + '" target="_blank">' + afters[0].title + '</a>') 
			});
			first.inject($('nextevent'));
		};

		if (afters[1]) {	
			var second = new Element('li', {
				'html': (weekdays[afters[1].date.getDay()] + ", " + months[afters[1].date.getMonth()] + ' ' + afters[1].date.getDate() + ': <a href="' + afters[1].url + '" target="_blank">' + afters[1].title + '</a>') 
			});
		second.inject($('nextevent'));
		};

		if (afters[2]) {
			var third = new Element('li', {
				'html': (weekdays[afters[2].date.getDay()] + ", " + months[afters[2].date.getMonth()] + ' ' + afters[2].date.getDate() + ': <a href="' + afters[2].url + '" target="_blank">' + afters[2].title + '</a>') 
			});
			third.inject($('nextevent'));
		};
		


	}

	function sortbyEpoch(a, b) {
		var x = a.UTC;
		var y = b.UTC;
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));		
	};

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

	function buildaccordion() {

		var calAccordion = new Accordion($$('#calendar-master h2'), $$('div.calendarentry'), {
			onActive: function(toggler, element) {
				toggler.addClass('selected');
				element.addClass('selected');
				possible = false;
			},
			onBackground: function(toggler, element) {
				toggler.removeClass('selected');
				element.removeClass('selected');
			},
			onComplete: function(toggler, element) {
				positiontips();
				possible = true;
			},
			display: 0
		});

	};

	function attachtips() {

		eventanchors.each(function(anchor, index){

			anchor.addEvent('mouseenter', function(ne){

				eventtips.each(function(tip, index){
					tip.setStyle('visibility', 'hidden');
				});

				if (possible) {
					eventtips[index].setStyle('visibility', 'visible');
				};
			});

		});

	};

	function positiontips() {

		eventanchors.each(function(anchor, index){

			// console.log(anchor.getCoordinates('master'));
			var logdim = $('log').getCoordinates();
			eventtips[index].setStyles({top: logdim.top, left: logdim.left});			
		});
	};

	var eventanchors = [];
	var eventtips = [];

	var calendarrequest = new Request ({
		url: '/plugin/det_calendar.php',
		method: 'post',			
		onComplete: function(response) {
			$('calendar-master').set('html', response);
			$('calendar-master').setStyle('visibility', 'visible');
			eventanchors = $$('td.event');
			eventtips = $$('div.caltip');
			attachtips();
			buildaccordion();
		}
	});

	getMyFeed();
	
});


