if (typeof(FIRT) == 'undefined') {
	FIRT = {};
	FIRT.visuals = {};
}
else if(typeof(FIRT.visuals) == 'undefined') {
	FIRT.visuals = {};
}


FIRT.visuals = function () {

	//"private" variables:
	var fadeTriggers = []; //list of elements to fade
	var selected = 0;	//faded area selected
	

	//"private" method:
	var hideSelected = function () {
		$('#'+fadeTriggers[selected-1]).hide(); 
	}
	
	var processFadeIn = function(elem,elemToFade,func){
		if($.inArray($(elem).attr('id'), fadeTriggers)){
			fadeTriggers.push($(elemToFade).attr('id'));
		}
		selected=selected+1;
		hideSelected();
	
	
		$(elem).click(function(event) {
				event.preventDefault();
				hideSelected(); 
	
				$(elemToFade).fadeIn('slow', function() {
						selected=$.inArray($(this).attr('id'), fadeTriggers)+1;
						if ( func !== undefined ) {
							func();
						}
				});
		});	
	}

	return  {
		toString: "Visual effects library",
		featuring: function (parent,child) {
			$(child).animate({height: 'toggle'}, 'fast', function() {
			// Animation complete.}
			});
		},
		fadeIn: function(elem,elemToFade,func){
			processFadeIn(elem,elemToFade,func);

		}
	};

}(); // the parens here cause the anonymous function to execute and return
