var entries = 4;
var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var re = /(-)?(\d{4})-(\d{2})-(\d{2})(T(\d{2}):(\d{2}):(\d{2})(\.\d+)?)?(([\+-])((\d{2}):(\d{2})))?/;
var cal_url =   "http://www.google.com/calendar/feeds/"+
			"mayflowerscout.org_slg49dbs6rt290ihtrq9oo8hm8@group.calendar.google.com/"+
			"public/full?"+
			"alt=json-in-script&"+
			"callback=showEvents&"+
			"orderby=starttime&"+
			"max-results="+entries+"&"+
			"singleevents=true&"+
			"sortorder=ascending&"+
			"futureevents=true";
var events;


function loadJS(url){
	var head = document.getElementsByTagName("head")[0];
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = url;
	head.appendChild(script);
}
function call_on_load(func){
	var temp;
	if(window.onload) temp = window.onload;
	window.onload = function(){
		if(temp) temp();
		func();
	}
}
function parseTime(dateString) {
	var matches = dateString.match(re);
	if(matches[5]) return new Date(dateString.replace(re,'$3/$4/$2 $6:$7:$8 GMT$11$13$14'));
	return new Date(dateString);
}

function formatEventTime(startTime,endTime,parentElement){
		var d = document.createElement("div");
		d.className = "event_date";
		function dateFormatter(time){
			return time.getDate() + " " + months[time.getMonth()];
		}
		start_day = startTime.getDate();
		start_month = startTime.getMonth();
		end_day = endTime.getDate();
		end_month = endTime.getMonth();
		d.innerHTML = dateFormatter(startTime);
		if(start_month==end_month) {
			if((end_day - start_day) > 1) {
				d.innerHTML += " - " + dateFormatter(endTime);
			}
		}
		parentElement.appendChild(d);
}

function showEvents(e){
	evts = e.feed.entry;
	var event_str = "";
	events.removeChild(events.children[0]);
	
	var ev;
	for(var i=0;i<evts.length;i++) {
		ev = evts[i];
		var startTime = parseTime(ev.gd$when[0].startTime);
		var endTime = parseTime(ev.gd$when[0].endTime);
		
		
		var item = document.createElement("div");
		item.className = "event_item";
		
		formatEventTime(startTime,endTime,item);
		
		var info = document.createElement("div");
		info.className = "event_info";
		var t = document.createElement("span");
		t.className = "event_title";
		t.innerHTML = ev.title.$t;
		info.appendChild(t);
		
		var l = document.createElement("span");
		l.className = "event_where";
		var matches = ev.gd$when[0].startTime.match(re);
		if(matches[6]) {
			l.innerHTML += matches[6] + matches[7] + "hrs";
		}
		if(ev.gd$where[0].valueString != "") {
			l.innerHTML += " @ "+ ev.gd$where[0].valueString;
		}
		info.appendChild(l);
		item.appendChild(info);
		events.appendChild(item);
	}
}

(function(){
	call_on_load(function(){
		loadJS(cal_url);
		events = document.getElementById("calendar_events");
	});
})();

