jQuery.fn.limitMaxlength = function(options){
  var settings = jQuery.extend({
    attribute: "maxlength",
    onLimit: function(){},
    onEdit: function(){}
  }, options);
  
  // Event handler to limit the textarea
  var onEdit = function(){
    var textarea = jQuery(this);
    var maxlength = parseInt(textarea.attr(settings.attribute));

    if(textarea.val().length > maxlength){
      textarea.val(textarea.val().substr(0, maxlength));
      jQuery.proxy(settings.onLimit, this)();
    }
    jQuery.proxy(settings.onEdit, this)(maxlength - textarea.val().length);
  }

  this.each(onEdit);

  return this.keyup(onEdit)
        .keydown(onEdit)
        .focus(onEdit);
}

jQuery(document).ready(function(){

  var onEditCallback = function(remaining){
    jQuery('#DZRemain').text(remaining);
    
    if(remaining > 0){
      jQuery('#DZRemain').css('color', '#555');
    }else {
      jQuery('#DZRemain').css('color', '#900');
    }
  }
  
  var onLimitCallback = function(){
    jQuery('#DZRemain').css('color', '#900');
  }
  
  jQuery('textarea[maxlength]').limitMaxlength({
    onEdit: onEditCallback,
    onLimit: onLimitCallback,
  });
});
