/* * Sets default value of input and clears it on focus. * Useful for search or newsletter forms. * @param (string) defaultVal - default value to set * @param (optional) (string) defaultClass - class to add when *     the input has no value entered (other than the default) * @param (optional) (string) nonDefaultClass - class to add *     when the user entered his/her own value */	$.fn.defaultVal = function(defaultVal, defaultClass, nonDefaultClass) {	return this.each(function() {		var $input = $(this);		// store the original val() implementation		$input._val = $input.val;		// replace it with an upgraded one		$input.val = function(newVal) {			// if there was value specified, act as setter			if (typeof newVal != "undefined") {				this._val(newVal);				return this;			}			// otherwise - as getter			else {				// use original getter				var val = this._val();				// return empty value if it's the default				return (val === defaultVal) ? '' : val;			}		};		// If the input has no initial value,		// set it to default and (optionally) add a default class		if ($input.val() === '') {			$input.val(defaultVal);			if (defaultClass)				$input.addClass(defaultClass);		}		$input.focus(function() {			// On focus set real value			$input.val($input.val());			if (defaultClass) {				$input.removeClass(defaultClass);			}			if (nonDefaultClass) {				$input.addClass(nonDefaultClass);			}		}).blur(function() {			// On blur - set default if the value is empty			if ($input.val() == '') {				$input.val(defaultVal);				if (defaultClass) {					$input.addClass(defaultClass);				}				if (nonDefaultClass) {					$input.removeClass(nonDefaultClass);				}			}		});		// set the real value on form submit		var $form = $input.closest('form');		if ($form.length) {			$form.submit(function() {				$input.val($input.val());			});		}	});};
