      1 (function ($, rf) {
      2
      3     rf.ui = rf.ui || {};
      4
      5     rf.ui.CollapsibleSubTableToggler = function(id, options) {
      6         this.id = id;
      7         this.eventName = options.eventName;
      8         this.expandedControl = options.expandedControl;
      9         this.collapsedControl = options.collapsedControl;
     10         this.forId = options.forId;
     11         this.element = $(document.getElementById(this.id));
     12
     13         if (this.element && this.eventName) {
     14             this.element.bind(this.eventName, $.proxy(this.switchState, this));
     15         }
     16     };
     17
     18     $.extend(rf.ui.CollapsibleSubTableToggler.prototype, (function () {
     19
     20         var getElementById = function(id) {
     21             return $(document.getElementById(id))
     22         }
     23
     24         return {
     25
     26             switchState: function(e) {
     27                 var subtable = rf.component(this.forId);
     28                 if (subtable) {
     29                     var mode = subtable.getMode();
     30
     31                     if (rf.ui.CollapsibleSubTable.MODE_CLNT == mode) {
     32                         this.toggleControl(subtable.isExpanded());
     33                     }
     34
     35                     subtable.setOption(this.id);
     36                     subtable.switchState(e);
     37                 }
     38             },
     39
     40             toggleControl: function(collapse) {
     41                 var expandedControl = getElementById(this.expandedControl);
     42                 var collapsedControl = getElementById(this.collapsedControl);
     43
     44                 if (collapse) {
     45                     expandedControl.hide();
     46                     collapsedControl.show();
     47                 } else {
     48                     collapsedControl.hide();
     49                     expandedControl.show();
     50                 }
     51             }
     52         };
     53     })());
     54
     55 })(RichFaces.jQuery, window.RichFaces);