jQuery.fn.limitMaxlength = function (options) {
	var settings = jQuery.extend({
		attribute: "rel",
		onLimit: function () { },
		onEdit: function () { }
	}, options);

	// Event handler to limit the textarea
	var onEdit = function () {
		var textarea = jQuery(this);
		var maxlength = parseInt(textarea.attr(settings.attribute));
		if (textarea.val().length > maxlength) {
			textarea.val(textarea.val().substr(0, maxlength));

			// Call the onlimit handler within the scope of the textarea
			jQuery.proxy(settings.onLimit, this)();
		}

		// Call the onEdit handler within the scope of the textarea
		jQuery.proxy(settings.onEdit, this)(maxlength - textarea.val().length);
	}
	this.each(onEdit);

	return this.keyup(onEdit).keydown(onEdit).focus(onEdit).live('input paste', onEdit);
}

// automatically reposition dialog boxes on resize
$.ui.dialog.prototype.options.autoReposition = false;
$(window).resize(function () {
	$(".ui-dialog-content:visible").each(function () {
		var dialog = $(this).data("dialog");
		if (dialog.options.autoReposition) {
			dialog.option("position", dialog.options.position);
		}
	});
});
