(function($){
 $.fn.sjLimit = function() {
    return this.each(function() {
    	var singleVars;
    	var maxLength;
    	var outputId;
    	var currentLength;
    	var charsLeft;
    	var classes = $(this).attr("class");
    	var eachClass = classes.split(" ");
    	for (var i = 0; i < eachClass.length; i++) {
    		if(eachClass[i].match(/^sjLimit_/) == "sjLimit_") {
    			var rightClass = eachClass[i];
    			break;
    		}
    	}
    	var singleVars = rightClass.split("_");
    	
    	var maxLength 	= singleVars[1];
    	var outputId 	= singleVars[2];
    	var maxId 		= singleVars[3];
    	if(typeof(outputId) == "string") {
    		currentLength = $(this).val().length;
    		charsLeft = maxLength - currentLength;
    		$("#"+outputId).html(charsLeft);
    	}
    	if(typeof(maxId) == "string") {
    		$("#"+maxId).html(maxLength);
    	}
    	currentLength = $(this).val().length;
    	$(this).bind('click focus focusout keydown keypress mouseleave mouseenter', function() {
			currentLength = $(this).val().length;
			if(typeof(outputId) == "string") {
				$("#"+outputId).html(charsLeft);
			}
			charsLeft = maxLength - currentLength;
			if(currentLength >= maxLength) {
				$(this).val($(this).val().substring(0, maxLength));
			}
    	})   	
    });
 };
})(jQuery);

