/**
* Handles default field text
*/

;(function($)
{
	$.fn.lineDefaultFieldText = function(options)
	{
		var defaults = {
            textSrc: 'legend', //forces field to take text from fieldset legend rather than title attribute or specified text
            text: false,
            defaultClass: 'default'
        };

        var options = $.extend({}, defaults, options);

        return this.each(function()
        {
			var _this = $(this);

			switch(options.textSrc)
			{
				case 'legend':
					var el = _this.parentsUntil('form').last();
					var text = el.find('legend').text();
					el.find('legend').hide();
					break;

				case 'label':

					var _l = $('label[for=' + _this.attr('id') + ']');

					/* check for a match on for attribute first */
					if(_l.length)
					{
						var text = _l.text();
						_l.hide();
					}
					else // check against parent element
					{
						var el = _this.parent().is('label')
							? _this.parent()
							: _this.parent().find('label');

						var text = el.text();

						el.hide();
					}
					break;

				case 'custom':
					var el = false;
					var text = options.text.toString();
					break;

			}

			if(_this.val() == '')
			{
				_this.val(text);
				_this.addClass(options.defaultClass);
			}

			_this.focus(function()
			{
				if(_this.val() == text)
				{
					_this.val('');
					_this.removeClass(options.defaultClass);
				}
			})
			.blur(function()
			{
				if(_this.val() == '')
				{
					_this.val(text);
					_this.addClass(options.defaultClass);
				}
			});

			/* reset field values on submit, if unchanged */
			$('form').submit(function()
			{
				if(_this.val() == text)
				{
					_this.val('');
				}
			});
        });
	}
})
(jQuery);
