﻿function fixNewLines(val) {
    if (val.indexOf('\r\n') != -1)
        return val;
    else if (val.indexOf('\r') != -1)
        return val.replace(/\r/g, '\r\n');
    else if (val.indexOf('\n') != -1)
        return val.replace(/\n/g, '\r\n');
    return val;
}

function limitTextbox(sender, event, length) {
    var key = event.which == null ? event.keyCode : event.which;
    if (fixNewLines(sender.value).length >= length && (key >= 48 && key <= 222 || key == 13 || key == 32) && !(event.ctrlKey || event.altKey || event.shiftKey))
        return true;
}

$(function () {
    $('textarea').keyup(function () {
        var maxlength = parseInt($(this).attr("maxlength"));
        if (maxlength > 0 && this.value.length >= maxlength)
            this.value = this.value.substring(0, maxlength);
    }).keydown(function (ev) {
        var maxlength = parseInt($(this).attr("maxlength")) - 1;
        if (maxlength > 0 && limitTextbox(this, ev, maxlength))
            return false;
    });
    $("form").submit(function () { $("textarea").each(function () { this.value = fixNewLines(this.value); }); });
});

