

(function( $ ){
    $.fn.fieldLabel = function( options ) {


        /*
         *helper functions starts
         */
        function setSelectionRange(input, selectionStart, selectionEnd) {
            if (input.setSelectionRange) {
                input.focus();
                input.setSelectionRange(selectionStart, selectionEnd);
            }
            else if (input.createTextRange) {
                var range = input.createTextRange();
                range.collapse(true);
                range.moveEnd('character', selectionEnd);
                range.moveStart('character', selectionStart);
                range.select();
            }
        }

        function setCaretToPos (input, pos) {
            setSelectionRange(input, pos, pos);
        }
        /*
         * helper function ends
         */

        this.each(function(){

            var inputObj = $(this);

            if (inputObj.attr('type') == 'password')
            {
                
            }

            //temporary namespace
            var temp = {};
            temp.value = $(this).val();

            //default settings
            var settings = {
                'color' : inputObj.css('color'),
                'focusColor': '#ccc'
            };

            //override default values if values provided
            if ( options ) {
                $.extend( settings, options );
            }

            inputObj.bind('click',function(){
                if (inputObj.val() == temp.value)
                {
                    inputObj.css('color',settings.focusColor);
                    setCaretToPos(this,0);
                }
            });


            inputObj.bind('keydown',function(event){
                if (!(event.which == 9) && !(event.shiftKey))
                    if (inputObj.val() == temp.value)
                    {
                        inputObj.val("");
                        inputObj.css('color',settings.color);
                    }

            });

            inputObj.bind('keyup',function(event){
                var value = inputObj.val();
                valueLength = value.length;
                if (valueLength == 0)
                {
                    inputObj.val(temp.value);
                    setCaretToPos(this,0)
                    inputObj.css('color',settings.focusColor);
                }
            });

            inputObj.bind('blur',function(){
                if (!(inputObj.val() == temp.value))
                    inputObj.css('color',settings.color);
            });

        });



    };
})( jQuery );

