/*
 * jQuery funkyCounter Plugin
 * Requires: jQuery v1.4.2 or later
 * Copyright David Drewette 2010, webcomsystemsuk@yahoo.co.uk
 * http://www.webcomsystems.biz
 * 
 */

(function($){
    $.fn.funkyCounter = function(options, fn) {

        var v_id;
        var random_no;
        var v_message;
        var v_message_id;

        function randomUUID() {
            var s = Math.floor(Math.random()*10000000);
            return s;
        }

        $('.funkyCounter').each(function() {

            random_no = randomUUID();
            v_id = 'fc'+random_no;
            v_message = 'mess'+random_no;
            v_message_id = '#'+v_message;

            $(this).attr('id', v_id)
            v_id = '#'+v_id;

            var v_maxlength = $(v_id).attr('maxlength');
            //insert message area div before textarea
            $('<div id="'+v_message+'"></div>').insertBefore($(this));


            $(this).bind('focus',function(){
                var v_num = $(this).val();
                var v_length = v_num.length;
                var v_width;
            
                if(jQuery.browser.msie) {
                    //IE code!
                    v_width = $(this).width();
                }
                else{
                    v_width = $(this).css('width');
                }

                var v_temp = $(this).attr('id');
                v_message_id = '#mess'+v_temp.substring(2,100);

                $(v_message_id).html(v_length+' - '+v_maxlength);

                $(v_message_id).animate({
                    height: 30,
                    left: v_width,
                    opacity: 0.4
                }, 150, function() {
                    });
            });

            $(this).bind('blur',function(){
                hidecounter();
            });

            $(this).bind('keydown',function(){
                counter(this.id);
            });

            $(this).bind('keyup',function(){
                counter(this.id);
            });

            function hidecounter(){
                var v_width = $(v_id).css('width');

                $(v_message_id).animate({
                    height: 0,
                    left: 0,
                    opacity: 0
                }, 150, function() {
                    $(v_message_id).hide();
                });
                $(v_message_id).html('');
            }

            function counter(v_id){
                var v_num = $('#'+v_id).val();
                var v_length = v_num.length;

                if (v_length > v_maxlength){
                    v_num = v_num.substring(0,v_maxlength);
                    $('#'+v_id).val(v_num);
                    $(v_message_id).html(v_length+' - '+v_maxlength);
                }
                else{
                    $(v_message_id).html(v_length+' - '+v_maxlength);
                }
            }

            if( jQuery.browser.msie) {
                //IE style sheet!
                $(v_message_id).css({
                    'display':'none',
                    'fontSize':'1.6em',
                    'fontWeight':'bold',
                    'fontFamily':'tahoma',
                    'opacity':'0.4',
                    'position':'absolute',
                    'backgroundColor':'#CFCFCF',
                    'textAlign':'center',
                    'padding': '10px',
                    'height':'0px',
                    'marginLeft': '30px',
                    'marginTop': '1px',
                    '-moz-border-radius-topright': '10px',
                    '-moz-border-radius-bottomright': '10px',
                    '-webkit-border-radius-topright': '10px',
                    '-webkit-border-radius-bottomright': '10px'
                });
            }
            else if ( jQuery.browser.webkit)
                $(v_message_id).css({
                    'display':'none',
                    'fontSize':'1.6em',
                    'fontWeight':'bold',
                    'fontFamily':'tahoma',
                    'opacity':'0.4',
                    'position':'absolute',
                    'backgroundColor':'#CFCFCF',
                    'textAlign':'center',
                    'padding': '10px',
                    'height':'0px',
                    'marginLeft': '30px',
                    'marginTop': '1px',
                    '-moz-border-radius-topright': '10px',
                    '-moz-border-radius-bottomright': '10px',
                    '-webkit-border-radius-topright': '10px',
                    '-webkit-border-radius-bottomright': '10px'
                });
            else
            {
                $(v_message_id).css({
                    'display':'none',
                    'fontSize':'1.6em',
                    'fontWeight':'bold',
                    'fontFamily':'tahoma',
                    'opacity':'0.4',
                    'position':'absolute',
                    'backgroundColor':'#CFCFCF',
                    'textAlign':'center',
                    'padding': '10px',
                    'height':'0px',
                    'marginLeft': '30px',
                    'marginTop': '1px',
                    '-moz-border-radius-topright': '10px',
                    '-moz-border-radius-bottomright': '10px',
                    '-webkit-border-radius-topright': '10px',
                    '-webkit-border-radius-bottomright': '10px'
                });
            }

        });
    };

})(jQuery); 
