(function($) {

$.fn.labelValue = function( options )
{
	var defaults = {
		button			: null,
		defaultText		: '',
		callback		: function(){
			alert('submit callback');
		}
	};

	var o = $.extend( defaults, options );

	return this.each(function(){
		
		o.input = $(this);
		set_input_value( o );
		
		o.input.data('working', false);
		
		o.input
		.bind( 'focus blur', function(e){
			set_input_value( o );	    
		})
		.bind( 'keydown', function(e){
			if (e.keyCode == 10 || e.keyCode == 13) 
		        e.preventDefault();		    
		});
		
		o.button.click(function(e){
			
			if ( o.input.data('working') == false )
			{				
				o.input.data('working', true);
				
				if ( o.input.val() != o.defaultText && o.input.val() != '' )
				{
					if (typeof o.callback == 'function')
					{
						o.callback.call( this, o );
					}
					else
					{
						alert('ERROR: Callback is not valid.');
					}
				}
				else
				{
					o.input.data('working', false);
				}
			}
			
			e.preventDefault();
		});
		
	});

};

function set_input_value( o )
{	
	if ( o.input.val() == '' )
	{
		o.input.val( o.defaultText );
	}
	else if ( o.input.val().match(/^[\s]+$/) )
	{
		o.input.val( o.defaultText );
	}
	else if ( o.input.val() == o.defaultText )
	{
		o.input.val('');
	}
}

})(jQuery);
