if (typeof(MooTools) == "undefined")
	alert('You have to include MooTools before defvalue.js!');


	var infoBoxTimeout = null;
	function infoBox(s, element, timeout) {
		if (infoBoxTimeout) clearTimeout(infoBoxTimeout);
		$('info').innerHTML = '';
		if (typeof(s)=='string')
			$('info').innerHTML = s;
		else {
			try {
				$('info').appendChild(s);
			} catch (e) {
			}
		}
		Position.clone(element, $('info'), { setWidth: false, setHeight: false, offsetTop: element.offsetHeight } );
		$('info').show();
		infoBoxTimeout = setTimeout('$("info").hide()', timeout?timeout:2000);
	}

	function infoBoxPos(s, pos, timeout) {
		if (infoBoxTimeout) clearTimeout(infoBoxTimeout);
		$('info').innerHTML = '';
		if (typeof(s)=='string')
			$('info').innerHTML = s;
		else {
			try {
				$('info').appendChild(s);
			} catch (e) {
			}
		}
		$('info').style.position = 'absolute';
		$('info').style.left = pos.x+'px';
		$('info').style.top = pos.y+'px';
		$('info').show();
		infoBoxTimeout = setTimeout('$("info").hide()', timeout?timeout:2000);
	}

	var popupSelectTimeout = null;
	function popupSelect(s, element) {
		if (popupSelectTimeout) clearTimeout(popupSelectTimeout);
		$('popupSelect').innerHTML = '';
		if (typeof(s)=='string')
			$('popupSelect').innerHTML = s;
		else {
			try {
				$('popupSelect').appendChild(s);
			} catch (e) {
			}
		}
		Position.clone(element, $('popupSelect'), { setWidth: false, setHeight: false, offsetTop: element.offsetHeight } );
		$('popupSelect').show();
		popupSelectTimeout = setTimeout('$("popupSelect").hide()', 60000);
	}
	function hidePopupSelect() {
		if (popupSelectTimeout) clearTimeout(popupSelectTimeout);
		$('popupSelect').hide();
		$('popupSelect').innerHTML = '';
	}


	var inputs = {
		'input[defvalue]' : function(el){
			if (!el.onkeyup && el.onchange)
				el.onkeyup = el.onchange;
			el.setAttribute('autocomplete', 'off');
			if ($F(el)=='') {
				el.value=el.getAttribute('defvalue');			
				el.addClass('defvalue');
			}
			el.addEvent('focus', function() { 
				if (this.value==this.getAttribute('defvalue')) {
					this.value='';
					$(this).removeClass('defvalue');
				}
			}.bind(el), false);
			el.addEvent('blur', function() {
				if (this.value=='') {
					this.value=this.getAttribute('defvalue');
					$(this).addClass('defvalue');
				}
			}.bind(el), false);
			el.setDefValue = function(defvalue)
			{
				if (this.value==this.getAttribute('defvalue')) {
					this.value=defvalue;
					$(this).addClass('defvalue');
				}
				this.setAttribute('defvalue', defvalue);
			};
		},
		
		'img[alt]' : function(el) {
			el = $(el);
			el.addEvent('mousemove', function() {
				infoBox(this.getAttribute('alt'), this);
			}.bind(el));
		}
		
	}
	
	/*
	if (Form && Form.Element && Form.Element.Serializers)
		Form.Element.Serializers.textarea = function(element) {
			var v = element.value;
			if (v == element.getAttribute('defvalue'))
				return '';
			else
	    		return element.value;
		}
	*/
	window.addEvent('domready', function() {
		$H(this).each(function(func, input) {
			var inp = $$(input);
			inp.each(function(el) {
				func(el);
			});
		});
	}.bind(inputs));
	//Behaviour.register(inputs);	
