﻿jQuery.fn.maxLength = function(max){  
    this.each(function(){  
        //Get the type of the matched element  
        var type = this.tagName.toLowerCase();  
        //If the type property exists, save it in lower case  
        var inputType = this.type? this.type.toLowerCase() : null;  
        //Check if is a input type=text OR type=password  
        if(type == "input" && inputType == "text" || inputType == "password"){  
            //Apply the standard maxLength  
            this.maxLength = max;  
        }  
        //Check if the element is a textarea  
        else if(type == "textarea"){  
            //Add the key press event  
            $(this).keypress( function(e){  
                //Get the event object (for IE)  
                var ob = e || event;  
                //Get the code of key pressed  
                var keyCode = ob.keyCode;  
                //Check if it has a selected text  
                var hasSelection = document.selection? document.selection.createRange().text.length > 0 : this.selectionStart != this.selectionEnd;  
                //return false if can't write more  
                return !(this.value.length >= max && (keyCode > 50 || keyCode == 32 || keyCode == 0 || keyCode == 13) && !ob.ctrlKey && !ob.altKey && !hasSelection);  
            });  
            //Add the key up event  
            $(this).keyup( function(){  
                //If the keypress fail and allow write more text that required, this event will remove it  
                if (this.value.length > max)
                    this.value = this.value.substring(0,max);  
            });
            $(this).change( function() {
                if (this.value.length > max) {
                    alert("O seu texto será truncado porque excedeu o tamanho máximo permitido.");
                    this.value = this.value.substr(0, max);
                }
            });
        }  
    });  
};  
jQuery.fn.writeRemainingCharsFor = function(textbox, max){ 
    this.each(function(){  
        var me = this;
        function write() { me.innerHTML = max - textbox.value.length; };
        $(textbox).keyup(function(){ write(); });
        $(textbox).keypress(function(){ write(); });
        $(textbox).change(function(){ write(); });
    });      
}