/**
 * Handle default text and style values for input fields with nothing in
 * them. If the field is clicked in the text is removed and if the field is
 * changed the default is gotten rid of.
 */
var InputDefaultHandler = function(target, message) {
  var me = this;
  this.input = $(target);
  this.enabled = true;
  this.input.val(this.message = message);
  this.input.addClass('default');
  this.showingDefault = true;
  this.input.focus(function() { me.handleInputFocus() });
  this.input.blur(function() { me.handleInputBlur() });

  this.handleInputFocus = function() {
    if(!this.enabled)
      return;
    if(this.showingDefault) {
      this.input.val('');
      this.input.removeClass('default');
      this.showingDefault = false;
    }
  }

  this.handleInputBlur = function() {
    if(!this.enabled)
      return;
    this.showingDefault = (this.input.val().length == 0);
    if(this.showingDefault) {
      this.input.val(this.message);
      this.input.addClass('default');
    }
  }

  this.enable = function() {
    this.enabled = true;
  }

  this.disable = function() {
    this.enabled = false;
  }

  this.isDefault = function() {
    return this.showingDefault;
  }

  this.getValue = function() {
    if(this.showingDefault)
      return '';
    return this.input.val();
  }
}
