Event.addBehavior({
  'input[default], input[prefix]' : function(e) {
    var prefix = this.readAttribute("prefix");
    var def = this.readAttribute("default");
    
    if (prefix || def)
    {
      if (prefix)
        this._default = prefix;
      else if (def)
        this._default = def
      
      if (!this.present() && this._default)
      {
        this.value = this._default;
        this.addClassName("default");
      }
    }
  },
  
  'input[default]:focus' : function(e) {
    if (this.value == this._default)
    {
      this.removeClassName("default");
      this.value = "";
    }
      
  },
  
  'input[prefix]:focus' : function(e) {
    if (this.value == this._default)
    {
      this.removeClassName("default");
      
      //hack to position the cursor at the end of the text
      var temp = this.value;
      this.value = "";
      setTimeout(function() {this.value = temp;}.bind(this), 0);
    }
      
  },
  
  'input[type=image]:click' : function(e) {
    setTimeout(function () {
      Form.Element.disable(this);
    }.bind(this), 0);
  },
  
  'input:blur' : function(e) {
    if (this._default && (!this.present() || this.value == this._default)) {
      this.value = this._default;
      this.addClassName("default");
    }
  }
});


document.observe("dom:loaded", function() {
  var inputs = $$('input[type=text]');
  if (inputs.size() > 0)
    inputs[0].focus();
});