var App = App || {};
App.Presenters = App.Presenters || {};

App.Presenters.MessagePresenter = function(_, jQuery) {

	var options = {
		instant: false
	};

	function showInfo($el, message) {
		return showMessage($el, 'info', message);
	}

	function showError($el, message) {
		return showMessage($el, 'error', message);
	}

	function hideMessages($el) {
		var $messages = $el.children('.message');
		if (options.instant) {
			$messages.each(function() {
				jQuery(this).slideUp('fast', function() {
					jQuery(this).remove();
				});
			});
		} else {
			$messages.remove();
		}
	}

	function showMessage($el, className, message) {
		var $messageDiv = jQuery('<div>');
		$messageDiv.addClass('message');
		$messageDiv.addClass(className);
		$messageDiv.html(message);
		if (!options.instant) {
			$messageDiv.hide();
		}
		$el.append($messageDiv);
		if (!options.instant) {
			$messageDiv.slideDown('fast');
		}
		return $messageDiv;
	}

	return _.extend(options, {
		showInfo: showInfo,
		showError: showError,
		hideMessages: hideMessages,
	});

};

App.DI.register('messagePresenter', ['_', 'jQuery'], App.Presenters.MessagePresenter);