﻿
(function($) {
    $.textCounter = {
        all: function(options) {
            var defaults = { ignoreText: '', count: 10, cssclass: 'textcounted' };
            var settings = jQuery.extend({}, defaults, options);
            $('.' + settings.cssclass).textCounter(settings);
        }
    };

    $.fn.textCounter = function(options) {
        var defaults = { label: null, ignoreText: '', count: 1000 };
        var settings = jQuery.extend({}, defaults, options);
        return this.each(function() {
            var input = $(this);
            var label;
            if (settings.label) {
                label = $(settings.label);
            } else {
                label = $("span[labelfor='" + this.id + "']");
            }

            var preKeyCount = -1;
            function count(e) {

                if (input.val().length > settings.count) {
                    input.val(input.val().substr(0, settings.count));
                    label.html('0');
                } else if (input.val() == settings.ignoretext) {
                    label.html(settings.count);
                } else if (preKeyCount != input.val().length) {
                    label.html(settings.count - input.val().length);
                }
            }

            count();

            input.keydown(function() { preKeyCount = input.val().length; });
            input.keyup(count);
            input.blur(count);

        });
    };
})(jQuery);