Enexis.Hiders = {};
Enexis.Hiders.length = 0;
Enexis.Hiders.add = function(hider) {
  Enexis.Hiders[Enexis.Hiders.length] = hider;
  return Enexis.Hiders.length++;
};
Enexis.Hider = function(element, minimum, maximum, minimizedText, maximizedText) {
  var self = this;
  this.state = true;
  this.uid = Enexis.Hiders.add(this);
  this.el = $(element);
  this.minimum = minimum;
  this.maximum = maximum;
  this.list = $("li", this.el);
  this.minimizedText = minimizedText + " (totaal " + this.list.length + " items)";
  this.maximizedText = maximizedText + " (totaal " + this.list.length + " items)";
  this.toggle = function() {
    if (self.state) {this.maximize();}
    else {this.minimize();}
    self.state = !self.state;
  };
  this.minimize = function() {
    //Show only the first <minimum> number of elements and hide pager
    self.nav.html(self.minimizedText);
    self.nav.removeClass("switch");
    if (self.pager) {$(self.pager.nav).hide();}
    self.el.attr('start', 1);
    self.list.hide();
    self.list.filter(":lt(" + self.minimum + ")").show();
  };
  this.maximize = function() {
    //Let pager handle the elements to hide/show
    self.nav.html(self.maximizedText);
    self.nav.addClass("switch");
    if (self.pager) {self.pager.reset(); $(self.pager.nav).show();}
    else {self.list.filter(":lt(" + self.maximum + ")").show();}
  };  
  if (!(self.list.length <= this.minimum)) {
    this.el.after("<a id='hider-" + this.uid + "' class='btn_toonMeer' href='javascript:Enexis.Hiders[" + this.uid + "].toggle();'></a>");
    if (self.list.length > this.maximum) {
      this.pager = new Enexis.Pager(this.el, this.maximum);
    }
    this.nav = $("#hider-" + this.uid);
    this.minimize();
  }
};