var text_input_hints_selector = 'input[type=text][hint], textarea[hint]';

function textInputHintsFocusHandler(event) {
  var elem = event.element();
  if (elem.hasClassName('text_input_hint')) {
    elem.removeClassName('text_input_hint');
    elem.value = '';
  }
}

function textInputHintsBlurHandler(event) {
  textInputHintsBlur(event.element());
}

function textInputHintsBlur(elem) {
  if (elem.value.empty()) {
    elem.addClassName('text_input_hint');
    elem.value = elem.readAttribute('hint');
  }
}

function textInputHintsSubmit(elem) {
  elem.select(text_input_hints_selector).each(function (e) {
    if (e.hasClassName('text_input_hint'))
      e.value = '';
  });
}

function textInputHintsEnable(elem) {
  var elems;
  if (elem.eventName == "dom:loaded")
    elems = $$(text_input_hints_selector);
  else
  if (elem.match(text_input_hints_selector))
    elems = [elem];
  else
    elems = elem.select(text_input_hints_selector);

  elems.each(function (e) {
    Event.observe(e, 'focus', textInputHintsFocusHandler);
    Event.observe(e, 'blur', textInputHintsBlurHandler);
    textInputHintsBlur(e);
  });
}

document.observe('dom:loaded', textInputHintsEnable);
