salmon.namespace.addNamespace("boots.ShowMoreLess");
boots.ShowMoreLess = {
	selector: "div.showMoreLessText",
	characterClass: "char",
	togglerMoreText:"show more...",
	togglerLessText:"...show less",
	init: function() {
		var showMoreLessComponents = $(boots.ShowMoreLess.selector);
		for(var i = showMoreLessComponents.length-1; i>=0;i--) {
			boots.ShowMoreLess.instance = new boots.ShowMoreLess.ShowMoreLessComponent(showMoreLessComponents[i],boots.ShowMoreLess.getCharacterLimit(showMoreLessComponents[i]));
		}
	},
	getCharacterLimit: function(container) {
		var characterLimit = 0;
		if(container == null) {
			return;
		}
		var classes = container.className.split(" ");
		for(var i = classes.length-1; i>=0;i-- ) {
			if(classes[i].indexOf(boots.ShowMoreLess.characterClass) != -1) {
				characterLimit = classes[i].split(boots.ShowMoreLess.characterClass)[1];
				break;
			}
		}
		return characterLimit;
	},
	ShowMoreLessComponent: function(container, characterLimit) {
		var fullText = "" + container.innerHTML + " ";
		var reducedText = "";
		var toggler = null;
		var showingMinimisedText = false;
		var init = (function() {
			setReducedText();
			if(reducedText == "") {
				return;
			}
			prepareToggler();
			toggleText();
		})();
		
		function setReducedText() {
			if(fullText.length < characterLimit) {
				return;
			}
			for(var i = 0; i<characterLimit; i++) {
				reducedText += fullText.charAt(i);
			}
			reducedText += " ";
		}		
		
		function prepareToggler() {
			toggler = document.createElement("a");
			toggler.href="#togglemore";
			toggler.innerHTML = "hello";
			toggler.onclick = toggleText;
			container.appendChild(toggler);
		}
		
		function toggleText() {
			if(showingMinimisedText) {
				$(container).text(fullText);
				toggler.innerHTML = boots.ShowMoreLess.togglerLessText;
				container.appendChild(toggler);
				showingMinimisedText = false;
			}
			else {
				$(container).text(reducedText);
				toggler.innerHTML = boots.ShowMoreLess.togglerMoreText;
				container.appendChild(toggler);
				showingMinimisedText = true;
			}
			return false;
		}
		
	}
}


$(document).ready(function(){ boots.ShowMoreLess.init(); });
