/**
* 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 Collapser = function() {
	
	var CONST_BUTTON_TARGET = ".collapsible > .button";
	var CONST_COLLAPISBLE_DIV_TARGET = ".collapsible > .content";
	
	var CONST_EXPAND_CLASS = "expand";
	var CONST_COLLAPSE_CLASS = "collapse";
	
	function onButtonClick(e) {
		var targetButton = $(e.target);
		var targetDiv = $(e.target).parent().find('> .content');
		if (isExpanded(targetDiv)) {
			updateClasses(targetButton, CONST_COLLAPSE_CLASS, CONST_EXPAND_CLASS);
		} else {
			updateClasses(targetButton, CONST_EXPAND_CLASS, CONST_COLLAPSE_CLASS);
		}
		$(targetDiv).slideToggle('fast');
		return false;
	}
	
	function updateClasses(targetButton, classToRemove, classToAdd) {
		$(targetButton).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_BUTTON_TARGET).click(onButtonClick);
		},

		show : function(targetString) {
			var targetDiv = $(targetString + "> div");
			var targetButton = $(targetString + " .p");
			if (!isExpanded(targetDiv)) {
				$(targetButton).trigger('click');
			}
		},
		
		overrideText : function(_expandText, _collapseText) {
			expandText = _expandText;
			collapseText = _collapseText;
		}
	}

}();
