This is modified from a jsfiddle that had most of the code complete, but a bunch of minor bugs that needed cleanup.

This probably needs more bug fixing, and absolutely needs cleanup

call the plugin
$("[placeholder]").stickyPlaceholders();

/* CSS
.sticky-placeholder-wrapper > label {
filter:alpha(opacity=50);
  opacity:.5; // to prevent initial dimming in FF, set to the same value as placeholderOpacity (default: .5) 
-webkit-transition: opacity .2s ease-out;
-moz-transition: opacity .2s ease-out;
-ms-transition: opacity .2s ease-out;
transition: opacity .2s ease-out;
cursor: text;
position: absolute;
overflow: hidden;
}
*/