/*
Programmer: Darryl Ballard
Date created: 2008-12-16
Last updated: 2008-12-17

Requires:
	Prototype 1.6
*/

var calendar = {
	class_to_activate:"gst_calendar",
	
	activate:function() {
		var calendars = $$("." + calendar.class_to_activate);
		
		for (var i = 0; i < calendars.length; i++) {
			// Mark this calendar as javascript-enhanced
			calendars[i].addClassName("scripted");
			
			// Activate morelinks in this calendar
			var popups = calendars[i].select("a.morelink");
			for (var j = 0; j < popups.length; j++) {
				popups[j].observe("click", calendar.popup_link_click);
			}
			
			// Activate the close buttons
			var close_buttons = calendars[i].select("div.events .close_button");
			for (var k = 0; k < close_buttons.length; k++) {
				close_buttons[k].observe("click", calendar.close_button_click);
			}
		}
	},
	
	close_button_click:function(e) {
		// Remove the "show" class from the div I'm in. (in which I am?)
		$(this).up(".events").removeClassName("show");
	},
	
	popup_link_click:function(e) {
		// Cancel default link behavior event bubbling
		e.stop();
		
		// Get the full event list element
		var event_containers = $(this.parentNode).select(".events");
		if (event_containers.length > 0) {
			// Show the event list popup
			event_containers[0].addClassName("show");
			
			// Position the popup
			var offset = event_containers[0].parentNode.cumulativeOffset();
			event_containers[0].style.left = (offset[0] + event_containers[0].parentNode.getWidth()/2 - event_containers[0].getWidth()/2) + "px";
			event_containers[0].style.top = offset[1] + "px";
		}
	}
};

// Require that Prototype is available
if (typeof Prototype == "undefined") {
	alert("The calendar requires the Prototype javascript framework.\n\nPlease check that it is included.");
} else {
	document.observe("dom:loaded", calendar.activate);
}
