﻿$(document).ready(function() {
    $('textarea[textmaxlength]').keyup(function(ev) {
        var item = $(this);
        var max = parseInt(item.attr('textmaxlength'));
        if (!isNaN(max) && max > 0) {
            if (item.val().length > max) {
                var range = item.caret();
                var rangeLength = range.end - range.start;
                var scrollTop = this.scrollTop;
                if (range.end > max) {
                    range.start = max - rangeLength;
                    range.end = max;
                }
                item.val(item.val().substr(0, max)).caret(range.start, range.end);
                this.scrollTop = scrollTop;
            }

            item.next().html((max - item.val().length));
        }
    }).each(function(index) {
        var item = $(this);
        var max = parseInt(item.attr('textmaxlength'));
        if (!isNaN(max) && max > 0) {
            item.next().html((max - item.val().length));
        }
    });
});