/**
 * jQuery.mergelabel - Merge label with input (empty on focus; show on blur)
 * Date: 2010/07/26
 *
 * @author Michaël van Oosten
 * @version 1.0
 *
 **/

(function($) {
	$.fn.mergelabel = function(settings) {

		var config = {};
		if (settings) $.extend(config, settings);
		
		this.each(function() {
			
			var thisId = $(this).attr('id');
			var thisValue = $('label[for='+thisId+']').html();
			
			$(this).attr('value', thisValue );		// set label value as input value
			$('label[for='+thisId+']').remove(); 	// remove label
		
			$(this).parent().append('<input type="hidden" id="'+thisId+'_hidden" name="'+thisId+'_hidden" value="'+thisValue+'" />');

			//   create hidden input for all 'merge_with_label' instances with label value
			//   on focus: empty input if same value as hidden input value
			$(this).focus(function() {
				if(
					$('#'+thisId+'_hidden').length > 0						// exists
					&&
					$('#'+thisId).val() == $('#'+thisId+'_hidden').val()	// equals label
				)
					$('#'+thisId).val('');
			});

			//   on blur: fill with hidden input value if empty
			$(this).blur(function() {
				thisId = $(this).attr('id');
				if(
					$('#'+thisId+'_hidden').length > 0						// exists
					&&
					$('#'+thisId).val() == ''								// empty
				)
					$('#'+thisId).val($('#'+thisId+'_hidden').val());
			});

		});
		
		return this;
 
	};
 
 })(jQuery);
