(function() {
	Object.extend(Form.Element.Methods, {
		resetInput: function(element) {
			element = $(element);
			if ( $F(element) == $(element).defaultValue ) { $(element).value = ''; }
			
			return element;
		}
	});
	
	Element.addMethods();
	
	var clearForms = function() {
		var form_elements = $$('input[type=text]', 'textarea');

		form_elements.invoke('observe', 'focus', function() {
			this.resetInput();
		});
		
		form_elements.invoke('observe', 'blur', function() {
			if ( $F(this).blank() ) {
				this.value = this.defaultValue;
			}
		});
		
		$$('form').invoke('observe', 'submit', function() {
			this.select('input[type=text]', 'textarea').invoke('resetInput');
		});
	};

	document.observe('dom:loaded', clearForms);
})();