

/**********************
 *    GESTION IHM     *
 **********************/
var CInputGestion = Class.create({
  'initialize' : function(element, options){
    this.element = $(element);

    this.options = {
      'element':$(element),
      'defaultValue':'',
      'initValue':'',
      'allowEmpty':false,
      'onFocus':function(value){
      },
      'onSubmit':function(value){
      },
      'onKeyPress':function(){
      },
      'onKeyUp':function(){
      },
      'onKeyDown':function(){
      },
      'getValue':function(){
        return this.element.value;
      },
      'setValue':function(value){
        this.element.value = value;
      }
    };
    
    Object.extend(this.options, options);

    this.element.onfocus = this.onFocus.bindAsEventListener(this);
    this.element.onblur = this.onBlur.bindAsEventListener(this);
    this.element.onkeypress = this.onKeyPress.bindAsEventListener(this);
    this.element.onkeyup = this.onKeyUp.bindAsEventListener(this);
    this.element.onkeydown = this.onKeyDown.bindAsEventListener(this);

    this.element.style.color = '#777';
    if(this.options.initValue==''){
      this.element.value = this.options.defaultValue;
    } else {
      this.element.value = this.options.initValue;
    }
  },
  'onFocus' : function(){
    this.element.style.color = '#000';
    if(this.options.getValue() == this.options.defaultValue){
      this.options.setValue('');
    }
    this.options.onFocus();
  },
  'onBlur' : function(){
    if(this.options.getValue() == ''){
      this.element.style.color = '#777';
      this.options.setValue(this.options.defaultValue);
    }
  },
  'onKeyPress' : function(eventHandle){
    if(eventHandle.keyCode == Event.KEY_RETURN){
      this.submitAction();
      return false;
    }
    this.options.onKeyPress(eventHandle);
  },
  'onKeyDown' : function(eventHandle){
    this.options.onKeyDown(eventHandle);
  },
  'onKeyUp' : function(eventHandle){
    this.options.onKeyUp(eventHandle);
  },
  'submitAction' : function(){
    if((this.options.getValue()!='' || this.options.allowEmpty) && this.options.getValue()!=this.options.defaultValue){
      this.options.onSubmit(this.element.value);
    }
  }
});
