var WallSnippet = {
	event_namespace : 'message-wall',
	Config			: {
		MaxMessagesAsSnippet		: 5,
		MaxNotificationAsSnippet	: 1,
		Type						: MessageWall.Type,
		NotificationsEnabled		: MessageWall.NotificationsEnabled
	},
	EventHandlers	: {},
	DomManipulators	: {},
	Loaders			: {},
	Lists			: {
		message		: null,
		notification: null
	}
};
WallSnippet.EventHandlers = {
	onPostButtonClick : function () {
		if ($('#message-wall-input').val() == '' || $('#message-wall-input').val() == $('#message-wall-input').data('addDefaultValueBehaviour_empty_value') || $('#message-wall-input').val().length > $('#message-wall-input').attr("maxlength")) {
			return false;
		}
		// Post to api - Start
		var parameters = {
			id			: 1,
			api			: 'Comment',
			command		: 'add',
			params		: {
				type			: WallSnippet.Config.Type,
				recordId		: MessageWall.RecordID,
				isNotification	: ($('#message-wall-notification').length > 0 ? $('#message-wall-notification').get(0).checked : false),
				memo			: $('#message-wall-input').val()
			}
		};
		$('#message-wall-posting').show();
		$('#message-wall-post-controls').hide();
		$.postSK({
			data : {data:JSONstring.make(parameters)},
			onsuccess : function (data) {
				if (data['1'].error != null && data['1'].error == 4) {
					$('#message-wall-posting').hide();
					$('#message-wall-post-controls').show();
				} else {
					$('#message-wall-input').val($('#message-wall-input').data('addDefaultValueBehaviour_empty_value'));
					$('#message-wall-input').resetMaxLengthBehaviour();
					$('#message-wall-posting').hide();
					$('#message-wall-post-controls').show();
					if (parameters.params.isNotification == false) {
						WallSnippet.Loaders.loadMessages();
						if ($.isFunction(WallSnippet.OnSuccess)) {
							WallSnippet.OnSuccess();
						}
					} else {
						WallSnippet.Loaders.loadNotification();
					}
				}
			}
		});
		// Post to api - End
	},
	onPostInputKeyUp : function () {
		if ($('#message-wall-input').val().length < 1 || $('#message-wall-input').val() == $('#message-wall-input').data('addDefaultValueBehaviour_empty_value')) {
			$('#message-wall-button-post').addClass('disabled');
		} else {
			$('#message-wall-button-post').removeClass('disabled');
		}
	},
	onRemoveMessageLinkClick : function () {
		var comment_id = $(this).attr('id').replace('message-wall-remove-message-link-', '');
		var parameters = {
			id		: 1,
			api		: 'Comment',
			command	: 'remove',
			params	: {
				type	: WallSnippet.Config.Type,
				recordId: MessageWall.RecordID,
				commentId: comment_id
			}
		};
		$.postSK({
			data : {data:JSONstring.make(parameters)},
			onsuccess : function (data) {
				if (data['1'].error != null && data['1'].error == -2) {
					$(this).removeLoadingBehaviour(true, null);
				} else {
					WallSnippet.Loaders.loadMessages();
					WallSnippet.Loaders.loadNotification();
				}
			}
		});
		return false;
	}
};
WallSnippet.Loaders = {
	loadMessages : function (page, callback) {
		WallSnippet.Lists.message = new marvinList({ 
			div_id:"message-element-container", 
			api:"Comment.list",
			apiParams:{
				type			: WallSnippet.Config.Type,
				recordId		: MessageWall.RecordID,
				isNotification	: false,
				limit			: WallSnippet.Config.MaxMessagesAsSnippet
			},
			template: Templates.Wall.MessageItem,
			templateParameters: {'isOwner': MessageWall.IsOwner},
			show:true,
			pagination:true,
			noEntryMessage: ''
		});		
	},
	loadNotification : function (callback) {
		WallSnippet.Lists.message = new marvinList({ 
			div_id:"message-notification-element-container", 
			api:"Comment.list",
			apiParams:{
				type			: WallSnippet.Config.Type,
				recordId		: MessageWall.RecordID,
				isNotification	: true,
				limit			: 1
			},
			template: Templates.Wall.NotificationItem,
			templateParameters: {'isOwner': MessageWall.IsOwner},
			show:false,
			pagination:false,
			noEntryMessage: ''
		});
		WallSnippet.Lists.message.refresh();
	}
};

// On DOM ready - Start
$(function () {
	$('#message-wall-button-post').bind('click.'+WallSnippet.event_namespace, WallSnippet.EventHandlers.onPostButtonClick).addClass('disabled');
	$('#message-wall-input').bind('keyup.'+WallSnippet.event_namespace, WallSnippet.EventHandlers.onPostInputKeyUp);
	$('.message-wall-remove-message-link').livequery(
		function () {
			$(this).bind('click.'+WallSnippet.event_namespace, WallSnippet.EventHandlers.onRemoveMessageLinkClick);
		},
		function () {
			$(this).unbind('click.'+WallSnippet.event_namespace);
		}
	);
	WallSnippet.Loaders.loadMessages();
	if (WallSnippet.Config.NotificationsEnabled) {
		WallSnippet.Loaders.loadNotification();	
	}
});
// On DOM ready - End
