/* 
 * @kaveen, Jquery plugin to limit the number of chars displayed in textbox with counter display
 *
 * Paramters
 * =========
 * 
 * counter_max: maximum character length
 * counter_Box: this is the HTML element referece where the number of chars left would be displayed (ex: $('.counter-box') )
 */
/**
			 * Binding post submit
			 */


(function($) {
    $.fn.max_chars = function(counter_max_func,counter_box_func){
        input=$(this);
        var KEYS = {
            BACKSPACE : 8,
            TAB : 9,
            RETURN : 13,
            ESC : 27,
            SPACE : 32,
            LEFT : 37,
            UP : 38,
            RIGHT : 39,
            DOWN : 40,
            DELETE : 46
        };
        var counter_max=counter_max_func;
        var counter_box=counter_box_func;
        counter_box.hide();
        
        input.focus(function(){
            $(this).parent().find('.'+counter_box.attr('class')).show();
            update_counter($(this));
        });
        input.blur(function(){
            $(this).parent().find('.'+counter_box.attr('class')).hide();
        });
        input.bind('keyup', function(e) {
        
            var code = (e.keyCode ? e.keyCode : e.which);
        
            update_counter($(this));
        
            switch (code) {
                case KEYS.RETURN:
                    input.val(substr(input.val(), 0, counter_max));
        
                    break;
                case KEYS.ESC:
                    input.blur();
                    break;
            }
        
        });

        /**
			 * Binding counter update
			 */
        input.bind('keydown', function(e) {

            var code = (e.keyCode ? e.keyCode : e.which);
            var permitted_keys = [ KEYS.BACKSPACE, KEYS.RETURN, KEYS.TAB, KEYS.ESC, KEYS.LEFT, KEYS.RIGHT, KEYS.UP, KEYS.DOWN, KEYS.DELETE ];
        
            if(input.val().length >= counter_max ) {
                if($.inArray(code, permitted_keys) == -1 ) {
                    return false;
                }
            }


        });
        function update_counter(current_element) {

            var max = counter_max;
            var len = Math.min(input.val().length, max);
            var left = (max - len);
            
            //var pr = (len / max); // % chars written

            //                var red_diff = count_end_color_red - count_color_red;
            //                var green_diff = count_end_color_green - count_color_green;
            //                var blue_diff = count_end_color_blue - count_color_blue;
            //
            //                var red_delta = Math.min(ceil(pr * red_diff), 255);
            //                var green_delta = Math.min(ceil(pr * green_diff), 255);
            //                var blue_delta = Math.min(ceil(pr * blue_diff), 255);
            //
            //                var red = count_color_red + red_delta;
            //                var green = count_color_green + green_delta;
            //                var blue = count_color_blue + blue_delta;

            //counter_box.css( 'color', ('rgb(' + red + ', ' + green + ', ' + blue + ')' ) );
            current_element.parent().find('.'+counter_box.attr('class')).text(left+ " Characters left");
        }
       
        //To finish, return the element
        return this;
   
    };
})(jQuery);

