
var ShowMore = {
	upcomingList : null,
	upcomingListItems : null,
	upcomingListExtras : [],
	upcomingListAllShown : false,
	
	
	init : function() {
		YAHOO.util.Event.onDOMReady(ShowMore.setup);
	},
	
	setup : function() {
		var $ = ShowMore;
		
		$.upcomingList = document.getElementById("upcoming-dates-times");
		if ($.upcomingList === null) { return; }
		
		$.upcomingListItems = $.upcomingList.getElementsByTagName("dd");
		if ($.upcomingListItems === null) { return; }
		
		$.removeExcessListItems();		
	},
	
	removeExcessListItems : function() {
		var $ = ShowMore, cls = null;
		
		if ($.upcomingListItems.length > 5) {
			while ($.upcomingListItems.length > 5) {
				if (cls === null) {
					if ($.upcomingListItems[5].className.indexOf("odd") > -1) {
						cls = " odd";
					} else {
						cls = "";
					}
				}
				$.upcomingListExtras.push($.upcomingList.removeChild($.upcomingListItems[5]));
			}
		}

		var dd = $.util_CreateFormElement(null, "dd", [], "last" + cls, "");
		var link = $.util_CreateFormElement(dd, "a", [{name:"href",value:"javascript:void(0);"}], "", "View more upcoming dates");
		YAHOO.util.Event.addListener(link, "click", $.event_UpcomingListToggle, dd);
		
		$.upcomingList.appendChild(dd);
	},
	
	event_UpcomingListToggle : function(sender, param, args) {
		var $ = ShowMore;
		
		if (param === null) { return; }
		
		$.upcomingList.removeChild(param);
		
		for (var i = 0; i < $.upcomingListExtras.length; i++) {
			$.upcomingList.appendChild($.upcomingListExtras[i]);
		}
	},
	
	util_CreateFormElement : function(parent, elementType, attributes, className, value) {
		var $ = ShowMore, element;
		
		if (typeof elementType === "undefined" || elementType === null || elementType === "")
		{
			element = document.createTextNode(value);
		}
		else
		{
			element = document.createElement(elementType);
			
			for (var i = 0; i < attributes.length; i++)
			{
				if (attributes[i].name !== "style")
				{
					element.setAttribute(attributes[i].name, attributes[i].value);
				}
				else
				{
					$.util_SetElementStyle(element, attributes[i].value);
				}
			}
			if (className !== "")
			{
				element.className = className;
			}
			if (value !== "")
			{
				if (elementType !== "input")
				{
					var newNode = document.createTextNode(value);
					element.appendChild(newNode);
				}
				else
				{
					element.value = value;					
				}
			}
		}
		
		if (parent !== null && parent !== "")
		{
			parent.appendChild(element);
		}				

		return element;
	},
	
	util_SetElementStyle : function(element, style) {
		if (element.style)
		{
			element.style.cssText = style;
		}
		else
		{
			element.cssText = style;
		}	
	}
};

ShowMore.init();
