(function ($) {
/*
* Auto-growing textareas; technique ripped from Facebook
*/
	$.fn.autogrow = function (options) {
		this.filter('textarea').each(function () {
			var $this = $(this),
				minHeight = $this.height(),
				lineHeight = $this.css('lineHeight');
			var shadow = $('<div></div>').css({
				position: 'absolute',
				top: -10000,
				left: -10000,
				width: $(this).width() - parseInt($this.css('paddingLeft')) - parseInt($this.css('paddingRight')),
				fontSize: $this.css('fontSize'),
				fontFamily: $this.css('fontFamily'),
				lineHeight: $this.css('lineHeight'),
				resize: 'none'
			}).appendTo(document.body);
			var update = function () {
				var times = function (string, number) {
					for (var i = 0, r = ''; i < number; i++) r += string;
					return r;
				};
				var val = this.value.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/&/g, '&amp;').replace(/\n$/, '<br/>&nbsp;').replace(/\n/g, '<br/>').replace(/ {2,}/g, function (space) {
					return times('&nbsp;', space.length - 1) + ' '
				});
				shadow.html(val);
				$(this).css('height', Math.max(shadow.height() + 20, minHeight));
			}
			$(this).change(update).keyup(update).keydown(update);
			update.apply(this);
		});
		return this;
	}
})(jQuery);