/**
* Finds a 'related-content' class and adds a collapse/expand button and functionality to it
* Note - JS function set up uses namespacing method from http://www.dustindiaz.com/namespace-your-javascript/
* @author Sunil Jolly
* @version 1
**/
var RelatedContent = function() {
	
	var CONST_RELATED_CONTENT_TARGET = ".collapsible";
	var CONST_BUTTON_TARGET = ".collapsible .button";
	var CONST_COLLAPISBLE_DIV_TARGET = ".collapsible > div";
	
	var CONST_EXPAND_CLASS = "expand";
	var CONST_COLLAPSE_CLASS = "collapse";
	
	var expandText = "Expand";
	var collapseText = "Collapse";
	
	function onButtonClick(e) {
		var targetButton = $(e.target);
		var targetDiv = $(e.target).parent().find('> div');
		if (isExpanded(targetDiv)) {
			updateClasses(targetButton, expandText, CONST_COLLAPSE_CLASS, CONST_EXPAND_CLASS);
		} else {
			updateClasses(targetButton, collapseText, CONST_EXPAND_CLASS, CONST_COLLAPSE_CLASS);
		}
		$(targetDiv).slideToggle('fast');
		return false;
	}
	
	function updateClasses(targetButton, text, classToRemove, classToAdd) {
		$(targetButton).text(text).removeClass(classToRemove).addClass(classToAdd);
	}
	
	function isExpanded(targetDiv) {
		return $(targetDiv).is(":visible");
	}
	
	return {
		//initialiser
		//starts in 'expand' mode
		init : function() {
			
			$(CONST_COLLAPISBLE_DIV_TARGET).hide();
			$(CONST_RELATED_CONTENT_TARGET).prepend("<a href='#collapse-related-content' class='button "+CONST_EXPAND_CLASS+"'>"+expandText+"</a>");
			$(CONST_BUTTON_TARGET).click(onButtonClick);
		},

		show : function(targetString) {
			var targetDiv = $(targetString + "> div");
			var targetButton = $(targetString + " .button");
			if (!isExpanded(targetDiv)) {
				$(targetButton).trigger('click');
			}
		},
		
		overrideText : function(_expandText, _collapseText) {
			expandText = _expandText;
			collapseText = _collapseText;
		}
	}

}();