(function($){
	
	$.fn.modalEditor = function(options){
		 var options = $.extend({
			container: "#modalEditor"
		},options);
		
		bindSubmit = function(obj) {
			$(options.container).find("form").each(function(){
				$(this).submit(function(){
					$.ajax({
						type: "POST",
						url: $(this).attr('action'),
						data: $(this).serialize(),
						dataType: "json",
						success: function(data, textStatus){
							$.metadata.setType("attr", "rel");
							$.each($(obj).metadata(), function(k, v){
								$(k).html(data[v]);
								$("a.modal", $(k)).modalEditor();
							});
							$.modal.close();
						},
						error: function(XMLHttpRequest, textStatus, errorThrown) {
							$(options.container).empty().append(XMLHttpRequest.responseText);
							bindSubmit(obj);
						}
					});
					return false;
				});
			});
		};
		
		init = function(obj) {
			$(options.container).remove();
			$("<div></div>").attr("id", options.container.replace('#', '')).appendTo("body");
			
			$.get($(obj).attr("href"), function(data, textStatus){
				$(options.container).append(data).modal({
					persist: true,
					onShow: function(dialog) {
						$('.forum object').css('visibility', 'hidden');
					},
					onClose: function(dialog) {
						$('.forum object').css('visibility', 'visible');
						$.modal.close();
					}
				});
				bindSubmit(obj);
			});
		
		};
		
		return this.each(function(){
			
			$(this).click(function (e) {
				e.preventDefault();
				init(this);
			});
		});
	};
})(jQuery)