jQuery.fn.kSubmit = function(myOptions) {
	
	var options = {
		openDialogOnSuccess: false,
		openDialogOnFailure: true,
		onSuccess: function() { },
		onFailure: function() { }		
	};
	
	if(myOptions)
		$.extend(options, myOptions);
	
	return this.each(function() {

				
		
		$(this).submit(function()
		{
			var form = this;
			form.koptions = options;			
			
			$('label', this).removeClass('error');
			$("button", this).attr('disabled', 'disabled');
		
			$.ajax(
			{
				type: "post",
				url: this.action + '/format/json',
				data: $(this).serialize(),
				dataType: 'json',
				success: function(response) {
				
					var message = response.message;
					
					if(message.errorFields) {
						$.each(message.errorFields, function(key, value) {
							$('label[for=' + key + ']', form).addClass('error');
						});
					}
					
					
					var openDialog = (message.type == 0) ? form.koptions.openDialogOnFailure : form.koptions.openDialogOnSuccess; 
		
					if(openDialog) {
						$('#message').html(message.message).dialog('open');
					}
						
					
					$("button", form).attr('disabled', '');
					
					if(message.type == 1)
						form.koptions.onSuccess();
					else
						form.koptions.onFailure();
					
				},
				
				error: function(response)
				{
					$("button", form).attr('disabled', '');
				}
				
			});

			
			
			return false;
		});
	});
};
