( function( $ ) {

    // plugin definition
    $.fn.overlabel = function( options ) {

        // build main options before element iteration
        var opts = $.extend( {}, $.fn.overlabel.defaults, options );

        var selection = this.filter( 'label[for]' ).map( function() {

            var label = $( this );
            var id = label.attr( 'for' );
            var field = document.getElementById( id );


            if ( !field ) return;

						if($(field).val() == '') $(field).val(label.text()).addClass('overlabel');

						$(field).click(function() {
							if($(this).val() == label.text() ) {
								$(this).val('').removeClass(opts.label_class);
							}
						});

						$(field).blur(function() {
							if($(this).val() == '' ) {
								$(field).val(label.text()).addClass(opts.label_class);
							}
						});

						label.hide();

            // build element specific options
            //var o = $.meta ? $.extend( {}, opts, label.data() ) : opts;

            return this;

        } );

        return opts.filter ? selection : selection.end();
    };

    // publicly accessible defaults
    $.fn.overlabel.defaults = {
        label_class:   'overlabel'
    };

} )( jQuery );