$.fn.overlabel = function( options) {
// pb avec la verif de form, si erreur ne pas réafficher l'overlabel
    var o = $.extend( {
        label_class: 'overlabel-defaut'
    }, options );

    return this.each(function(){
        var label = $(this),
			id = this.htmlFor || label.attr('for'),
			sId = id.replace(/\:/, '\\:');

		function overFocus( oL) {
			 oL.hide();
		}
		function overBlur(jqO) {
			if( jqO.val() == '') {
				label.css({ position: 'absolute'}).show();
			}
		}
		function overRefresh( jqO) {
			jqO.everyTime(500, 'checkEmpty', function() {
				if( this.value == '') {
					overBlur( $(this));
				} else {
					overFocus( label);
				}
			});
		}

		// si title on change le label
		if( $('#' + sId).attr('title') != '') {
			label.text( $('#' + sId).attr('title'));
		}
		label.addClass(o.label_class);

		$('#' + sId)
			.focus( function() {
				overFocus( label);
				$(this).stopTime( 'checkEmpty');
			})
			.blur( function() {
				overBlur( $(this));
				overRefresh( $(this));
			});

		// init
		overFocus( label);
		overBlur( $('#' + sId));
		overRefresh( $('#' + sId));
	});
};