Autocompleter.PDShow = function(element, update) { 
	element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('hide');
	update.setStyle({ visibility: 'visible', width: element.getWidth() + 'px' }).show();
};

Autocompleter.PDRelShow = function(element, update) { 
	//element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('hide');
	//var pos = element.cumulativeOffset();
	var dim = element.getDimensions();
	update.setStyle({ 
		position: 'absolute', 
		visibility: 'visible', 
		width: dim.width + 'px',
		left: element.offsetLeft + 'px',
		top: (element.offsetTop + dim.height) + 'px',
		zIndex: 1000
	}).show();
};

Autocompleter.PDAbsShow = function(element, update) { 
	/*element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('hide');*/
	var pos = element.cumulativeOffset();
	var dim = element.getDimensions();
	update.setStyle({ 
		position: 'absolute', 
		visibility: 'visible', 
		width: dim.width + 'px',
		left: pos.left + 'px',
		top: (pos.top + dim.height) + 'px',
		zIndex: 1000
	}).show();
};

Autocompleter.PDHide = function(element, update) {
	// se non ho opzioni, ranzo tutto
	if (update.down().childElements().length == 0)
		element.value = '';
	update.hide();
	element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('show');
};

Autocompleter.PDHideId = function(idField, element, update) {
	// se non ho opzioni, ranzo tutto
	if (update.down().childElements().length == 0) {
		element.value = '';
	}
	if (element.value.strip().length == 0) {
		$(idField).value = '';
	}
	update.hide();
	element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('show');
};

Autocompleter.PDCleanId = function(idField, element, update) {
	$(idField).value = '';
	update.hide();
	element.siblings().filter(function(e) { return e.hasClassName('label'); }).invoke('show');
};