// render labels over input fields
function initOverLabels() {
	if (!document.getElementById) return;

	var labels, id, field;

	// Set focus and blur handlers to hide and show
	// labels with 'overlabel' class names.
	labels = document.getElementsByTagName('label');

	for (var i=0; i<labels.length; i++) {
		if (/\boverLabel\b/.test(labels[i].className)) {
			// Skip labels that do not have a named association
			// with another field.
			id = labels[i].htmlFor || labels[i].getAttribute('for');
			if (!id || !(field = document.getElementById(id))) {
				continue;
			}

			// Change the applied class to hover the label
			// over the form field.
			labels[i].className = labels[i].className.replace(/\boverLabel\b/g, 'overLabelApply');
			hideLabel(id, false);

			// Hide any fields having an initial value.
			if (field.value !== '') {
				hideLabel(field.getAttribute('id'), true);
			}

			// Set handlers to show and hide labels.
			field.onfocus = function () {
				hideLabel(this.getAttribute('id'), true);
			};
			field.onblur = function () {
				if (this.value === '') {
					hideLabel(this.getAttribute('id'), false);
				}
			};

			// Handle clicks to label elements (for Safari).
			labels[i].onclick = function () {
				var id, field;
				id = this.getAttribute('for');
				if (id && (field = document.getElementById(id))) {
					field.focus();
				}
			};
		}
	}
};

function hideLabel(field_id, hide) {
	var field = document.getElementById(field_id);

	if (!field) {
		return false;
	}
	if (hide) {
		//field.style.backgroundColor = '#ffffff';
		field.style.opacity = '1';
		field.style.filter = 'alpha(opacity:100)';
	}
	else {
		//field.style.backgroundColor = 'transparent';
		field.style.opacity = '0';
		field.style.filter = 'alpha(opacity:0)';
	}
	return true;
}

function renderOverLabels() {
	setTimeout(initOverLabels, 50);
}

YAHOO.util.Event.onDOMReady(renderOverLabels);

// reset form and rerender labels
function resetForm(form) {
	var labels;
	var id;
	var field;

	if (!form) {
		return;
	}
	labels = YAHOO.util.Dom.getElementsByClassName('overLabelApply', 'label', form);
	for (var i=0; i<labels.length; i++) {
		if (!(id = labels[i].htmlFor || labels[i].getAttribute('for'))) {
			continue;
		}
		if (id && (field = document.getElementById(id))) {
			field.value = '';
			hideLabel(id, false);
		}
	}
}
