addToOnload('expandCollapse.init()');

var expandCollapse = {
	init : function() {
		$$('div.expand-collapse').each(function(e){
			expandCollapse.addEvent(e);
		});

		// ensures that anchors within the expand collapse area do not trigger the expand collapse
		$$('div.expand-collapse a').addEvents('click', function(e){
			e.stopPropagation();
		});
	},
	toggle : function(e) {
		if(e.hasClass('expand') || e.getStyle('background-image').search('collapse') === -1) {
			// if wants to be expanded on load or is current collapsed
			e.addClass('expand-collapse');
			expandCollapse.expand(e);
		} else {
			// default collapse on load and / or is currently expanded
			e.addClass('expand-collapse');
			expandCollapse.collapse(e);
		}
	},
	expand : function(e) {
		e.setStyle('background-image', 'url(/css/images/content-collapse.gif)');
		expandCollapse.toggleChildren(e, 'show');
	},
	collapse : function(e) {
		e.setStyle('background-image', 'url(/css/images/content-expand.gif)');
		expandCollapse.toggleChildren(e, 'hide');
	},

	toggleChildren: function (e, action) {
		e.getChildren(':heading').each(function(ele){
			ele.getAllNext().each(function(element){
				if (!element.match('script')) {
					if (action == 'show') {
						element.removeClass('hidden');
					} else if (action == 'hide') {
						element.addClass('hidden');
					}
				}
			});
		});
	},
	addEvent : function(e) {
		e.setStyle('cursor', 'pointer');
		e.addEvent('click', function(event){
			expandCollapse.toggle(e);
		});


	},
	inlineToggle : function(id) {
		var id = $(id);
		expandCollapse.toggle(id);
	}
}
