var labelizor = {

  hideClass : 'stream',
  _hidePlaceholder : function(e)
  {
    if (this.value == this.labelValue)
    {
      this.value = '';
    }
  },
  _showPlaceholder : function(e)
  {
    if (this.value == '')
    {
      this.value = this.labelValue;
    }
  },

  init : function(_args)  // Accepts a single DOM id or element reference, ... or an array there of.
  {
    var _theFields = DOM.$(_args);
    if (!_theFields.join) { _theFields = [_theFields]; }
    var n = _theFields.length;

    while (n--)
    {
      var _theField = _theFields[n];
      if( _theField  &&
          ( _theField.tagName.lc() == 'textarea' ||
            (_theField.tagName.lc() == 'input'  &&  !/^(checkbox|radio|button|submit|reset|hidden|password)$/.test(_theField.type))
          )
        )
      {
        var _labels = DOM.get('label', _theField.form),
            i = _labels.length;
        
        while(i--)
        {
          var _theLabel = _labels[i];
          var _forId = _theLabel.getAttribute('for') || _theLabel.htmlFor;
          if(_forId == _theField.id)
          {
            DOM.addClass(_theLabel, this.hideClass);
            _theField.labelValue = DOM.innerText(_theLabel).replace('*', '').trim().replace(/:\W*$/, '');
            EEvent.add(_theField, 'focus', this._hidePlaceholder);
            EEvent.add(_theField, 'blur', this._showPlaceholder);

            this._showPlaceholder.call(_theField);
            break;
          }
        }
      }
    }
  }
};
