/*
 * In-Field Label jQuery Plugin
 * http://fuelyourcoding.com/scripts/infield.html
 *
 * Copyright (c) 2009 Doug Neiner
 * Dual licensed under the MIT and GPL licenses.
 * Uses the same license as jQuery, see:
 * http://docs.jquery.com/License
 *
 * @version 0.1
 */
(function($) { $.InFieldLabels = function(b, c, d) { var f = this; f.$label = $(b); f.label = b; f.$field = $(c); f.field = c; f.$label.data("InFieldLabels", f); f.showing = true; f.init = function() { f.options = $.extend({}, $.InFieldLabels.defaultOptions, d); if (f.$field.val() != "") { f.$label.hide(); f.showing = false } else { f.$label.css({ cursor: "text" }) }; f.$field.focus(function() { f.fadeOnFocus() }).blur(function() { f.checkForEmpty(true) }).bind('keydown.infieldlabel', function(e) { f.hideOnChange(e) }).change(function(e) { f.checkForEmpty() }).bind('onPropertyChange', function() { f.checkForEmpty() }) }; f.fadeOnFocus = function() { if (f.showing) { f.setOpacity(f.options.fadeOpacity) } }; f.setOpacity = function(a) { f.$label.stop().animate({ opacity: a }, f.options.fadeDuration); f.showing = (a > 0.0) }; f.checkForEmpty = function(a) { if (f.$field.val() == "") { f.prepForShow(); f.setOpacity(a ? 1.0 : f.options.fadeOpacity) } else { f.setOpacity(0.0) } }; f.prepForShow = function(e) { if (!f.showing) { f.$label.css({ opacity: 0.0 }).show(); f.$field.bind('keydown.infieldlabel', function(e) { f.hideOnChange(e) }) } }; f.hideOnChange = function(e) { if ((e.keyCode == 16) || (e.keyCode == 9)) return; if (f.showing) { f.$label.hide(); f.showing = false }; f.$field.unbind('keydown.infieldlabel') }; f.init() }; $.InFieldLabels.defaultOptions = { fadeOpacity: 0.5, fadeDuration: 300 }; $.fn.inFieldLabels = function(c) { return this.each(function() { var a = $(this).attr('for'); if (!a) return; var b = $("input#" + a + "[type='text']," + "input#" + a + "[type='password']," + "textarea#" + a); if (b.length == 0) return; (new $.InFieldLabels(this, b[0], c)) }) } })(jQuery);
