/**
 * Alternatywny tekst dla pól text lub password.
 *
 * @author Gabriel, widmogrod@gmail.com
 * @version 0.2
 * @license LGPL
 */
(function($){
	$.fn.alternate = function(options) {

		var defaults = {
				'text': '',
				'class': 'test'
		}; 

		var options = $.extend(defaults, options); 

		var _onFocus = function(){
			// element został zaznaczony

			var self = $(this);

			// i jest ustawiony tekst alternatywny
			if (defaults['text'] != '') {

				// Przypadek: jest ustawiony tekst alternatywny - ustawiam value na null
				if (self.val() == defaults['text']) {
					self.val('');
				}

			}

			// i jest ustawiona klasa alternatywna
			if (defaults['class'] != '') {

				// Przypadek: jelement posiada klase alternatywną - ustawiam ją
				if (self.hasClass(defaults['class'])) {
					self.removeClass(defaults['class']);
				}

			}
		};

		var _onBlur = function(){
			// element został odznaczony

			var self = $(this);

			// i jest ustawiony tekst alternatywny
			if (defaults['text'] != '') {

				// Przypadek: w polu nie zostały wprowadzone zmiany - powrót do wartości alternatywnej
				if (self.val() == '') {
					self.val(defaults['text']);
				}
			} else
			if (self.val() == '') {
				// i jest ustawiona klasa alternatywna (tylko działa gdy warość pola jest='')
				if (defaults['class'] != '') {
	
					// Przypadek: w polu nie zostały wprowadzone zmiany - powrót do wartości alternatywnej
					if (!self.hasClass(defaults['class'])) {
						self.addClass(defaults['class']);
					}
				}
			}
		};

		// ustawienie aletrnatywnych wartości..
		this.each(_onBlur);

		// ustawienie fizyki zachowania..
		return this.each(function() {
			$(this).bind('focus',_onFocus)
				   .bind('blur',_onBlur);
		});
	};
})(jQuery);

