/**
 * A jQuery plugin to hide labels
 * v. 0.1 2010-03-06
 * v. 0.2 2010-05-15 - minnor bugfixes
 * @author Òscar Casajuana a.k.a. elboletaire <elboletaire {at} underave {dot} net> 
 * 
 * Usage:
 * 
 * jQuery('#form label').innerlabel();
 * 
 * Options you can set:
 * 
 * jQuery('#form label').innerlabel({
 * 		defaultClass:	"inner-label", // Default class to be applied to labels
 *		extraClass:	false, // Extra class for labels
 * });
 * 
 */
(function($){
	$.fn.innerlabel = function(options){
		
		$.fn.innerlabel.defaults = {
			defaultClass: "inner-label",
			extraClass: false
		}
		
		var opts = $.extend({}, $.fn.innerlabel.defaults, options);
		
		return this.each(function(){
			var l = jQuery(this);
			if ( l.next().is("input, textarea") ) var q = l.next();
			else var q = l.prev();
			
			l.add(q).wrapAll('<div></div>');
			l.parent().css( { position: "relative", overflow: "hidden" } );
			if (!l.hasClass(opts.defaultClass)) {
				l.addClass(opts.defaultClass);
				if (opts.extraClass != false)
				{
					l.addClass(opts.extraClass);
				}
			}
			q.focus(function(){
					l.hide();
			}).blur(function(){
				if ( q.val() == "" )
				{
					l.show();
				}
			});
			
			l.click(function(){
				q.focus();
			});
			
			if (q.val() != '')
			{
				l.hide();
			}
			else
			{
				q.blur();
			}
		});

	}
})(jQuery);
