(function($) {
	$.widget('ui.DpSendMessage', {
		recipientId: 0,
		options: {
			config: {}
		},
		_init: function() {
			this.config = this.options.config;
			this.recipientId = this.element.attr("id").replace("message_","");
			var that = this;
			this.element.click(function(){
				that.renderLightbox();
			});
		},
		send: function(message) {
			this.renderLoadingLightbox();
			$.ajax({
				url: '/ajax/own/sendMessage/',
				data: {
					id: this.recipientId,
					txt: message
				},
				type: 'POST',
				dataType: 'json',
				success: function(data) {
					var result;
					if(typeof data.error == 'undefined') {
						result = data.result;
					} else {
						result = data.error;
					}
					$('.ui-DpDialogBody .sendMessage .content').html(result);
				}
			});
		},
		renderLightbox: function() {
			var that = this;
			// build dialog content element
			var contentEl = $(	'<div class="sendMessage">' +
								'<div class="content"><textarea class="message" /></div>' +
								'<div class="buttons"></div>' +
								'<div class="clr"></div>' +
								'</div>'
								);
			//// create dialog buttons
			var buttons = contentEl.find('.buttons').first();
			
			////// back
			var buttonBack = $('<div class="buttonBack">'+that.config.cancelButtonText+'</div>');
			buttonBack.click(function(){
				// close dialog
				$.DpDialog.close();
				// don't execute the elements native click behaviour by returning false
				return false;
			});
			buttons.append(buttonBack);
			
			var buttonContinue = $('<div class="buttonContinue">'+that.config.sendButtonText+'</div>');
			buttonContinue.click(function(){
				// close dialog
				var msg = $('.sendMessage .content textarea.message').val();
				
				if(msg.trim().length > 0) {
					that.send(msg);
				} else {
					$('.ui-DpDialogBody .sendMessage .content p').remove();
					$('.ui-DpDialogBody .sendMessage .content').append("<p>"+that.config.emptyBoxNotice+"</p>");
				}
				
				// don't execute the elements native click behaviour by returning false
				return false;
			});
			buttons.append(buttonContinue);
			
			$.DpDialog.open(that.config.messageBoxTitle, contentEl);
		},
		renderLoadingLightbox: function() {
			var loading = '<div class="ajaxLoading"></div>';
			$('.ui-DpDialogBody .sendMessage .content').html(loading);
			
			var buttonBack = $('<div class="okayButton">'+this.config.okayButtonText+'</div>');
			buttonBack.click(function(){
				// close dialog
				$.DpDialog.close();
				// don't execute the elements native click behaviour by returning false
				return false;
			});
			$('.ui-DpDialogBody .sendMessage .buttons').html(buttonBack);
		}
	});

	$(function() {
		//legacy
		$('a[name=gallerySendMessage]').DpSendMessage({
			config: gDpsendMessageConf
		});
	});
})(jQuery);
