/**
 * YOU ARE FREE TO USE THIS CODE IF YOU HOLD THE REFERENCE TO THE AUTHOR
 * Plugin for jQuery that delimites the maximum of characteres in inputs and textareas
 * @author: Iván Guardado Castro
 * @email: dev.ivangc@gmail.com
 * @website: http://yensdesign.com/
 */
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.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 keyup click blur focus change paste events
            $(this).bind('keyup click blur focus change paste', function() {
                //If the keypress fail and allow write more text that required, this event will remove it
                if (this.value.length) {
                    if (this.value.length > max) {
                        this.value = this.value.substring(0, max);
                    }
                }
            });
        }
    });
};

$().ready(function() {
	$("[maxlength]").each(function(){ 
		$(this).maxLength($(this).attr("maxlength"))
	});
});
