jQuery.fn.maxLength = function(max){  
    this.each(function(){  


	maxAttr=$(this).attr("maxlength");
	
    if(maxAttr!=""){
		max=maxAttr
	}; 

	//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.onkeypress = 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.onkeyup = 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);  
                }  
            };  
        }  
    });  
};  

