// Javascript document - from sitepoint tutorial

      if (supportsDynamicLabels()) {
        document.writeln('<style type="text/css">');
        document.writeln('label.dynamic { display:none; }');
        document.writeln('</style>');

        addEvent(window, "load", setupLabels);
      }

      function setupLabels() {
        var objLabels = document.getElementsByTagName("LABEL");
        var objField;

        for (var i = 0; i < objLabels.length; i++) {
          if ("dynamic" == objLabels[i].className) {
            objField = document.getElementById(objLabels[i].htmlFor);
            addEvent(objField, "focus", focusDynamicLabel);
            addEvent(objField, "blur", blurDynamicLabel);
            objField._labelText = objLabels[i].firstChild.nodeValue;
            objField.value = objField._labelText;
          }
        }

        for (var i = 0; i < document.forms.length; i++) {
          addEvent(document.forms[i], "submit", resetLabels);
        }
      }

      function resetLabels(event) {
        var elm = getEventSrc(event);
        var objLabels = elm.getElementsByTagName("LABEL");
        var objField;

        for (var i = 0; i < objLabels.length; i++) {
          if ("dynamic" == objLabels[i].className) {
            objField = document.getElementById(objLabels[i].htmlFor);
            if (objField._labelText == objField.value) {
              objField.value = "";
            }
          }
        }
      }

      function addEvent(objObject, strEventName, fnHandler) {
        if (objObject.addEventListener)
          objObject.addEventListener(strEventName, fnHandler, false);
        else if (objObject.attachEvent)
          objObject.attachEvent("on" + strEventName, fnHandler);
      }

      function focusDynamicLabel(event) {
        var elm = getEventSrc(event);
        if (elm._labelText == elm.value) {
          elm.value = "";
        }
      }

      function blurDynamicLabel(event) {
        var elm = getEventSrc(event);
        if ("" == elm.value) {
          elm.value = elm._labelText;
        }
      }

      function getEventSrc(e) {
        if (!e) e = window.event;

        if (e.originalTarget)
          return e.originalTarget;
        else if (e.srcElement)
          return e.srcElement;
      }

    function supportsDynamicLabels() {
      return document.getElementById && 
        (window.attachEvent || window.addEventListener) && 
        null == navigator.appVersion.match(/Safari\/\d+$/);
    }
