(function ($) {
	// plugin definition
	$.fn.formlabels = function (options) {
				
				var opts = $.extend({}, $.fn.formlabels.defaults, options);
	 	
								return this.each(function () {
		
			var label = $(this).prev();
			var input = $(this);
			
			// set default css styling on li and label tags
			// adds position relative to the li			
			label.parent().css("position", "relative");
			
			var labelCss = {
				'position' : 'absolute',
				'top' : '0',
				'left' : '0',
				'display' : 'inline-block'
			}
			
			label.css(labelCss);
			
	   	
	   	var o = $.meta ? $.extend({}, opts, input.data()) : opts;
			
			input.focus(function (){
					$.fn.formlabels.fade(input, o.time, o.max_opacity, o.min_opacity);				
			}).keyup(function (){
					$.fn.formlabels.fade(input, o.time, o.max_opacity, o.min_opacity);
			}).blur(function (){
					$.fn.formlabels.fade(input, o.time, o.min_opacity, o.max_opacity);
			});
		});
	};
	
	// plugin defaults
	$.fn.formlabels.defaults = {
		time: '500',
		min_opacity: '0.5',
		max_opacity: '1'
	};
	
	$.fn.formlabels.fade = function (obj, time, max_opacity, min_opacity){
			 	if(obj.val() === ""){						
			 	obj.prev().fadeTo(time, min_opacity);
			 	}else{
			 	obj.prev().fadeTo(time, 0);
			 	}
	  	 	return obj;
		};
	
})(jQuery);

