(function($) {
	$.fn.unsticky = function() {
		return this.unbind(".sticky");
	};

	$.fn.sticky = function() {
		var self = this;
		var stuckToBottom = true;

		self
			.on("scroll.sticky", function(e) {
				stuckToBottom = self.isScrollBottom();
			})
			.on("msg.sticky", function() {
				if (stuckToBottom) {
					self.scrollBottom();
				}
			})
			.scrollBottom();

		return self;
	};

	$.fn.scrollBottom = function() {
		var el = this[0];
		this.scrollTop(el.scrollHeight);
		return this;
	};

	$.fn.isScrollBottom = function() {
		var el = this[0];
		return el.scrollHeight - el.scrollTop - el.offsetHeight <= 30;
	};
})(jQuery);