if (!RedactorPlugins) var RedactorPlugins = {};

(function ($) {
    RedactorPlugins.limiter = function () {
        return {
            init: function () {
                if (!this.opts.limiter) return;

                this.$editor.on('keydown.redactor-limiter', $.proxy(function (e) {
                    var key = e.which;
                    var ctrl = e.ctrlKey || e.metaKey;

                    if (key == this.keyCode.BACKSPACE
                        || key == this.keyCode.DELETE
                        || key == this.keyCode.ESC
                        || key == this.keyCode.SHIFT
                        || (ctrl && key == 65)
                        || (ctrl && key == 82)
                        || (ctrl && key == 116)
                    ) {
                        return;
                    }

                    var count = this.$editor.text().length;
                    if (count >= this.opts.limiter) {
                        return false;
                    }


                }, this));

            }
        };
    };
})(jQuery);