/**
 * Main class that implements the state pattern directive.
 *
 * @this {BarStatePattern}
 */
var BarStatePattern = new JS.Class({
  include: JS.State,
  initialize: function() {
    this.setState(Comsys.UserStatusEnum.LOGGED_ON);
  }
});
BarStatePattern.states({
  LOGGED_OFF: {
    disable: function() {/**/},
    enable: function() {
      initializeBar();
    }
  },
  LOGGED_ON: {
    disable: function() {/**/},
    enable: function() {
      $('#idle, #pause, #logOff')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
    }
  },
  IDLE: {
    disable: function() {
      $('#idle')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
      $('#callGroupWrapper').addClass('invisible');
    },
    enable: function() {
      $('#pause, #logOff')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
      $('#msisdn').text("No call");
    }
  },
  PAUSED: {
    disable: function() {
      $('#pause')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
    },
    enable: function() {
      $('#idle, #logOff')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
    }
  },
  FORCED_PAUSED: {
    disable: function() {
      $('#logOff')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
      $('#callGroupWrapper').addClass('invisible');
    },
    enable: function() {
      $('#idle, #pause')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
    }
  },
  RESERVED: {
    disable: function() {
      $('#idle, #pause, #logOff')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
    },
    enable: function() {
      $('#msisdn').text(Bar.StateManager.getMsisdn());
// Â Â Â Â Make data accessible to the parent window object
      parent.sendDataToMainFrame(
        Bar.StateManager.getCallId()
      );
    }
  },
  BUSY: {
    disable: function() {
      $('#idle, #pause, #logOff, #agentCallRetrieveCommand, #agentCallTransferCommand')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
    },
    enable: function() {
      $('#agentCallConsultCommand').addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
      $('#callGroupWrapper').removeClass('invisible');
    }
  },
  WRAP_UP: {
    disable: function() {
      $('#callGroupWrapper').addClass('invisible');
      $('#destination').val('')
    },
    enable: function() {
      $('#idle, #pause, #logOff')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
    }
  },
  CALL_HOLD: {
    disable: function() {
      $('#agentCallConsultCommand')
        .removeClass('click-pointer')
        .parent()
        .removeClass('click-pointer');
    },
    enable: function() {
      $('#agentCallRetrieveCommand, #agentCallTransferCommand')
        .addClass('click-pointer')
        .parent()
        .addClass('click-pointer');
    }
  },
  SESSION_DESTROYED: {
    disable: function() {
      window.location.reload();
    },
    enable: function() {/**/}
  }
});
Hopefully you can spot where im going wrong about it because at this point i'm completely stuck :(
thanks a lot for your help!
Daniel.