	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 (labels[i].className == 'overlabel') {

	      // 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 = 'overlabel-apply';

	      // 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_for;
	  var labels = document.getElementsByTagName('label');
	  for (var i = 0; i < labels.length; i++) {
	    field_for = labels[i].htmlFor || labels[i].getAttribute('for');
	    if (field_for == field_id) {
	      labels[i].style.textIndent = (hide) ? '-8000px' : '0px';
	      return true;
	    }
	  }
	}

	window.onload = function () {
	 setTimeout(initOverLabels, 50);
	};